unique_toolkit 1.62.0__tar.gz → 1.62.2__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 (289) hide show
  1. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/PKG-INFO +1 -1
  2. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/pyproject.toml +1 -1
  3. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/agentic/tools/a2a/tool/service.py +10 -4
  4. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/agentic/tools/mcp/tool_wrapper.py +18 -12
  5. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/config.py +6 -0
  6. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/agentic/tools/test/test_mcp_manager.py +2 -2
  7. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/agentic/tools/tool.py +79 -41
  8. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/README.md +0 -0
  9. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/__init__.py +0 -0
  10. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/_common/__init__.py +0 -0
  11. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/_common/_base_service.py +0 -0
  12. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/_common/_time_utils.py +0 -0
  13. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/_common/api_calling/human_verification_manager.py +0 -0
  14. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/_common/base_model_type_attribute.py +0 -0
  15. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/_common/chunk_relevancy_sorter/config.py +0 -0
  16. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/_common/chunk_relevancy_sorter/exception.py +0 -0
  17. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/_common/chunk_relevancy_sorter/schemas.py +0 -0
  18. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/_common/chunk_relevancy_sorter/service.py +0 -0
  19. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/_common/chunk_relevancy_sorter/tests/test_service.py +0 -0
  20. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/_common/config_checker/README.md +0 -0
  21. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/_common/config_checker/__init__.py +0 -0
  22. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/_common/config_checker/__main__.py +0 -0
  23. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/_common/config_checker/cli.py +0 -0
  24. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/_common/config_checker/differ.py +0 -0
  25. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/_common/config_checker/exporter.py +0 -0
  26. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/_common/config_checker/models.py +0 -0
  27. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/_common/config_checker/registry.py +0 -0
  28. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/_common/config_checker/validator.py +0 -0
  29. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/_common/default_language_model.py +0 -0
  30. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/_common/docx_generator/__init__.py +0 -0
  31. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/_common/docx_generator/config.py +0 -0
  32. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/_common/docx_generator/pandoc_converter.py +0 -0
  33. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/_common/docx_generator/schemas.py +0 -0
  34. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/_common/docx_generator/service.py +0 -0
  35. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/_common/docx_generator/template/Doc Template.docx +0 -0
  36. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/_common/endpoint_builder.py +0 -0
  37. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/_common/endpoint_requestor.py +0 -0
  38. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/_common/event_bus.py +0 -0
  39. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/_common/exception.py +0 -0
  40. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/_common/execution.py +0 -0
  41. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/_common/experimental/endpoint_builder.py +0 -0
  42. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/_common/experimental/endpoint_requestor.py +0 -0
  43. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/_common/experimental/write_up_agent/README.md +0 -0
  44. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/_common/experimental/write_up_agent/__init__.py +0 -0
  45. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/_common/experimental/write_up_agent/agent.py +0 -0
  46. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/_common/experimental/write_up_agent/config.py +0 -0
  47. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/_common/experimental/write_up_agent/examples/data.csv +0 -0
  48. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/_common/experimental/write_up_agent/examples/example_usage.py +0 -0
  49. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/_common/experimental/write_up_agent/schemas.py +0 -0
  50. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/_common/experimental/write_up_agent/services/__init__.py +0 -0
  51. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/_common/experimental/write_up_agent/services/dataframe_handler/__init__.py +0 -0
  52. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/_common/experimental/write_up_agent/services/dataframe_handler/exceptions.py +0 -0
  53. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/_common/experimental/write_up_agent/services/dataframe_handler/service.py +0 -0
  54. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/_common/experimental/write_up_agent/services/dataframe_handler/utils.py +0 -0
  55. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/__init__.py +0 -0
  56. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/config.py +0 -0
  57. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/exceptions.py +0 -0
  58. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/prompts/config.py +0 -0
  59. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/prompts/system_prompt.j2 +0 -0
  60. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/prompts/user_prompt.j2 +0 -0
  61. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/service.py +0 -0
  62. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/_common/experimental/write_up_agent/services/template_handler/__init__.py +0 -0
  63. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/_common/experimental/write_up_agent/services/template_handler/default_template.j2 +0 -0
  64. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/_common/experimental/write_up_agent/services/template_handler/exceptions.py +0 -0
  65. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/_common/experimental/write_up_agent/services/template_handler/service.py +0 -0
  66. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/_common/experimental/write_up_agent/services/template_handler/utils.py +0 -0
  67. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/_common/experimental/write_up_agent/utils.py +0 -0
  68. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/_common/feature_flags/schema.py +0 -0
  69. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/_common/pydantic/rjsf_tags.py +0 -0
  70. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/_common/pydantic_helpers.py +0 -0
  71. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/_common/referencing.py +0 -0
  72. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/_common/string_utilities.py +0 -0
  73. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/_common/tests/test_referencing.py +0 -0
  74. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/_common/tests/test_string_utilities.py +0 -0
  75. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/_common/token/__init__.py +0 -0
  76. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/_common/token/image_token_counting.py +0 -0
  77. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/_common/token/token_counting.py +0 -0
  78. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/_common/token/tokenizers/deepseek/tokenizer.json +0 -0
  79. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/_common/token/tokenizers/qwen/tokenizer.json +0 -0
  80. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/_common/utils/__init__.py +0 -0
  81. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/_common/utils/files.py +0 -0
  82. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/_common/utils/image/encode.py +0 -0
  83. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/_common/utils/jinja/helpers.py +0 -0
  84. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/_common/utils/jinja/render.py +0 -0
  85. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/_common/utils/jinja/schema.py +0 -0
  86. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/_common/utils/jinja/utils.py +0 -0
  87. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/_common/utils/structured_output/__init__.py +0 -0
  88. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/_common/utils/structured_output/schema.py +0 -0
  89. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/_common/utils/write_configuration.py +0 -0
  90. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/_common/validate_required_values.py +0 -0
  91. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/_common/validators.py +0 -0
  92. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/agentic/__init__.py +0 -0
  93. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/agentic/debug_info_manager/debug_info_manager.py +0 -0
  94. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/agentic/debug_info_manager/test/test_debug_info_manager.py +0 -0
  95. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/agentic/evaluation/config.py +0 -0
  96. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/agentic/evaluation/context_relevancy/prompts/__init__.py +0 -0
  97. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/agentic/evaluation/context_relevancy/prompts/system_prompt.j2 +0 -0
  98. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/agentic/evaluation/context_relevancy/prompts/user_prompt.j2 +0 -0
  99. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/agentic/evaluation/context_relevancy/schema.py +0 -0
  100. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/agentic/evaluation/context_relevancy/service.py +0 -0
  101. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/agentic/evaluation/evaluation_manager.py +0 -0
  102. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/agentic/evaluation/exception.py +0 -0
  103. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/agentic/evaluation/hallucination/constants.py +0 -0
  104. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/agentic/evaluation/hallucination/hallucination_evaluation.py +0 -0
  105. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/agentic/evaluation/hallucination/prompts/__init__.py +0 -0
  106. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/agentic/evaluation/hallucination/prompts/system_prompt.j2 +0 -0
  107. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/agentic/evaluation/hallucination/prompts/user_prompt.j2 +0 -0
  108. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/agentic/evaluation/hallucination/service.py +0 -0
  109. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/agentic/evaluation/hallucination/utils.py +0 -0
  110. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/agentic/evaluation/output_parser.py +0 -0
  111. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/agentic/evaluation/schemas.py +0 -0
  112. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/agentic/evaluation/tests/fixtures.py +0 -0
  113. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/agentic/evaluation/tests/test_config.py +0 -0
  114. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/agentic/evaluation/tests/test_context_relevancy_service.py +0 -0
  115. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/agentic/evaluation/tests/test_hallucination_constants.py +0 -0
  116. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/agentic/evaluation/tests/test_hallucination_utils.py +0 -0
  117. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/agentic/evaluation/tests/test_output_parser.py +0 -0
  118. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/agentic/evaluation/tests/test_prompt_loaders.py +0 -0
  119. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/agentic/evaluation/utils.py +0 -0
  120. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/agentic/feature_flags/__init__.py +0 -0
  121. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/agentic/feature_flags/feature_flags.py +0 -0
  122. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/agentic/history_manager/history_construction_with_contents.py +0 -0
  123. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/agentic/history_manager/history_manager.py +0 -0
  124. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/agentic/history_manager/loop_token_reducer.py +0 -0
  125. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/agentic/history_manager/utils.py +0 -0
  126. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/agentic/loop_runner/__init__.py +0 -0
  127. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/agentic/loop_runner/_iteration_handler_utils.py +0 -0
  128. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/agentic/loop_runner/_responses_iteration_handler_utils.py +0 -0
  129. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/agentic/loop_runner/_responses_stream_handler_utils.py +0 -0
  130. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/agentic/loop_runner/_stream_handler_utils.py +0 -0
  131. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/agentic/loop_runner/base.py +0 -0
  132. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/agentic/loop_runner/middleware/__init__.py +0 -0
  133. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/agentic/loop_runner/middleware/planning/__init__.py +0 -0
  134. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/agentic/loop_runner/middleware/planning/planning.py +0 -0
  135. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/agentic/loop_runner/middleware/planning/schema.py +0 -0
  136. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/agentic/loop_runner/runners/__init__.py +0 -0
  137. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/agentic/loop_runner/runners/basic.py +0 -0
  138. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/agentic/loop_runner/runners/mistral/__init__.py +0 -0
  139. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/agentic/loop_runner/runners/mistral/mistral_runner.py +0 -0
  140. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/agentic/loop_runner/runners/qwen/__init__.py +0 -0
  141. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/agentic/loop_runner/runners/qwen/helpers.py +0 -0
  142. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/agentic/loop_runner/runners/qwen/qwen_runner.py +0 -0
  143. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/agentic/message_log_manager/__init__.py +0 -0
  144. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/agentic/message_log_manager/service.py +0 -0
  145. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/agentic/postprocessor/postprocessor_manager.py +0 -0
  146. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/agentic/reference_manager/reference_manager.py +0 -0
  147. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/agentic/responses_api/__init__.py +0 -0
  148. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/agentic/responses_api/postprocessors/code_display.py +0 -0
  149. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/agentic/responses_api/postprocessors/generated_files.py +0 -0
  150. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/agentic/responses_api/stream_handler.py +0 -0
  151. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/agentic/short_term_memory_manager/persistent_short_term_memory_manager.py +0 -0
  152. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/agentic/thinking_manager/thinking_manager.py +0 -0
  153. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/agentic/tools/__init__.py +0 -0
  154. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/agentic/tools/a2a/__init__.py +0 -0
  155. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/agentic/tools/a2a/config.py +0 -0
  156. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/agentic/tools/a2a/evaluation/__init__.py +0 -0
  157. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/agentic/tools/a2a/evaluation/_utils.py +0 -0
  158. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/agentic/tools/a2a/evaluation/config.py +0 -0
  159. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/agentic/tools/a2a/evaluation/evaluator.py +0 -0
  160. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/agentic/tools/a2a/evaluation/summarization_user_message.j2 +0 -0
  161. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/agentic/tools/a2a/manager.py +0 -0
  162. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/agentic/tools/a2a/postprocessing/__init__.py +0 -0
  163. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/agentic/tools/a2a/postprocessing/_display_utils.py +0 -0
  164. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/agentic/tools/a2a/postprocessing/_ref_utils.py +0 -0
  165. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/agentic/tools/a2a/postprocessing/config.py +0 -0
  166. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/agentic/tools/a2a/postprocessing/display.py +0 -0
  167. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/agentic/tools/a2a/postprocessing/references.py +0 -0
  168. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/agentic/tools/a2a/postprocessing/test/test_display.py +0 -0
  169. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/agentic/tools/a2a/postprocessing/test/test_display_utils.py +0 -0
  170. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/agentic/tools/a2a/postprocessing/test/test_ref_utils.py +0 -0
  171. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/agentic/tools/a2a/prompts.py +0 -0
  172. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/agentic/tools/a2a/response_watcher/__init__.py +0 -0
  173. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/agentic/tools/a2a/response_watcher/service.py +0 -0
  174. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/agentic/tools/a2a/tool/__init__.py +0 -0
  175. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/agentic/tools/a2a/tool/_memory.py +0 -0
  176. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/agentic/tools/a2a/tool/_schema.py +0 -0
  177. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/agentic/tools/a2a/tool/config.py +0 -0
  178. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/agentic/tools/a2a/tool/test/test_service_utils.py +0 -0
  179. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/agentic/tools/agent_chunks_hanlder.py +0 -0
  180. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/agentic/tools/config.py +0 -0
  181. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/agentic/tools/factory.py +0 -0
  182. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/agentic/tools/mcp/__init__.py +0 -0
  183. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/agentic/tools/mcp/manager.py +0 -0
  184. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/agentic/tools/mcp/models.py +0 -0
  185. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/agentic/tools/openai_builtin/__init__.py +0 -0
  186. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/agentic/tools/openai_builtin/base.py +0 -0
  187. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/__init__.py +0 -0
  188. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/postprocessors/__init__.py +0 -0
  189. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/postprocessors/code_display.py +0 -0
  190. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/postprocessors/generated_files.py +0 -0
  191. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/schemas.py +0 -0
  192. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/service.py +0 -0
  193. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/agentic/tools/openai_builtin/manager.py +0 -0
  194. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/agentic/tools/schemas.py +0 -0
  195. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/agentic/tools/test/test_tool_progress_reporter.py +0 -0
  196. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/agentic/tools/tool_manager.py +0 -0
  197. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/agentic/tools/tool_progress_reporter.py +0 -0
  198. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/agentic/tools/utils/__init__.py +0 -0
  199. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/agentic/tools/utils/source_handling/__init__.py +0 -0
  200. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/agentic/tools/utils/source_handling/schema.py +0 -0
  201. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/agentic/tools/utils/source_handling/source_formatting.py +0 -0
  202. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/agentic/tools/utils/source_handling/tests/test_source_formatting.py +0 -0
  203. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/agentic_table/__init__.py +0 -0
  204. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/agentic_table/schemas.py +0 -0
  205. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/agentic_table/service.py +0 -0
  206. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/app/__init__.py +0 -0
  207. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/app/dev_util.py +0 -0
  208. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/app/fast_api_factory.py +0 -0
  209. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/app/init_logging.py +0 -0
  210. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/app/init_sdk.py +0 -0
  211. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/app/performance/async_tasks.py +0 -0
  212. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/app/performance/async_wrapper.py +0 -0
  213. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/app/schemas.py +0 -0
  214. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/app/unique_settings.py +0 -0
  215. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/app/verification.py +0 -0
  216. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/app/webhook.py +0 -0
  217. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/chat/__init__.py +0 -0
  218. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/chat/cancellation.py +0 -0
  219. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/chat/constants.py +0 -0
  220. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/chat/deprecated/service.py +0 -0
  221. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/chat/functions.py +0 -0
  222. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/chat/rendering.py +0 -0
  223. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/chat/responses_api.py +0 -0
  224. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/chat/schemas.py +0 -0
  225. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/chat/service.py +0 -0
  226. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/chat/state.py +0 -0
  227. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/chat/utils.py +0 -0
  228. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/content/__init__.py +0 -0
  229. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/content/constants.py +0 -0
  230. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/content/functions.py +0 -0
  231. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/content/schemas.py +0 -0
  232. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/content/service.py +0 -0
  233. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/content/smart_rules.py +0 -0
  234. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/content/utils.py +0 -0
  235. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/data_extraction/README.md +0 -0
  236. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/data_extraction/__init__.py +0 -0
  237. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/data_extraction/augmented/__init__.py +0 -0
  238. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/data_extraction/augmented/service.py +0 -0
  239. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/data_extraction/base.py +0 -0
  240. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/data_extraction/basic/__init__.py +0 -0
  241. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/data_extraction/basic/config.py +0 -0
  242. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/data_extraction/basic/prompt.py +0 -0
  243. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/data_extraction/basic/service.py +0 -0
  244. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/elicitation/__init__.py +0 -0
  245. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/elicitation/constants.py +0 -0
  246. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/elicitation/exceptions.py +0 -0
  247. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/elicitation/functions.py +0 -0
  248. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/elicitation/schemas.py +0 -0
  249. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/elicitation/service.py +0 -0
  250. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/embedding/__init__.py +0 -0
  251. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/embedding/constants.py +0 -0
  252. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/embedding/functions.py +0 -0
  253. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/embedding/schemas.py +0 -0
  254. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/embedding/service.py +0 -0
  255. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/embedding/utils.py +0 -0
  256. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/framework_utilities/__init__.py +0 -0
  257. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/framework_utilities/langchain/__init__.py +0 -0
  258. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/framework_utilities/langchain/client.py +0 -0
  259. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/framework_utilities/langchain/history.py +0 -0
  260. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/framework_utilities/openai/__init__.py +0 -0
  261. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/framework_utilities/openai/client.py +0 -0
  262. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/framework_utilities/openai/message_builder.py +0 -0
  263. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/framework_utilities/utils.py +0 -0
  264. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/language_model/__init__.py +0 -0
  265. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/language_model/_responses_api_utils.py +0 -0
  266. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/language_model/builder.py +0 -0
  267. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/language_model/constants.py +0 -0
  268. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/language_model/default_language_model.py +0 -0
  269. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/language_model/functions.py +0 -0
  270. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/language_model/infos.py +0 -0
  271. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/language_model/prompt.py +0 -0
  272. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/language_model/reference.py +0 -0
  273. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/language_model/schemas.py +0 -0
  274. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/language_model/service.py +0 -0
  275. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/language_model/stream_transform.py +0 -0
  276. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/language_model/utils.py +0 -0
  277. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/protocols/support.py +0 -0
  278. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/services/__init__.py +0 -0
  279. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/services/chat_service.py +0 -0
  280. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/services/factory.py +0 -0
  281. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/services/knowledge_base.py +0 -0
  282. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/short_term_memory/__init__.py +0 -0
  283. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/short_term_memory/constants.py +0 -0
  284. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/short_term_memory/functions.py +0 -0
  285. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/short_term_memory/schemas.py +0 -0
  286. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/short_term_memory/service.py +0 -0
  287. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/smart_rules/__init__.py +0 -0
  288. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/smart_rules/compile.py +0 -0
  289. {unique_toolkit-1.62.0 → unique_toolkit-1.62.2}/unique_toolkit/test_utilities/events.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: unique-toolkit
3
- Version: 1.62.0
3
+ Version: 1.62.2
4
4
  Summary:
5
5
  Author: Cedric Klinkert, Martin Fadler, Sadique Sheik, Fabian Schläpfer, Pascal Hauri, Ejiroghene Oki-Peter, Rami Azouz, Ricardo Visini, Sanzio Monti
6
6
  Author-email: Cedric Klinkert <cedric.klinkert@unique.ch>, Martin Fadler <martin.fadler@unique.ch>, Sadique Sheik <sadique@unique.ch>, Fabian Schläpfer <fabian@unique.ch>, Pascal Hauri <pascal@unique.ch>, Ejiroghene Oki-Peter <oki-peter.ejiroghene@unique.ai>, Rami Azouz <rami.ext@unique.ch>, Ricardo Visini <ricardo.visini@unique.ch>, Sanzio Monti <sanzio.monti@unique.ai>
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "unique_toolkit"
3
- version = "1.62.0"
3
+ version = "1.62.2"
4
4
  description = ""
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.12"
@@ -19,6 +19,7 @@ from unique_toolkit._common.referencing import (
19
19
  from unique_toolkit._common.utils.jinja.render import render_template
20
20
  from unique_toolkit.agentic.evaluation.schemas import EvaluationMetricName
21
21
  from unique_toolkit.agentic.feature_flags import feature_flags
22
+ from unique_toolkit.agentic.message_log_manager.service import MessageStepLogger
22
23
  from unique_toolkit.agentic.tools.a2a.response_watcher import SubAgentResponseWatcher
23
24
  from unique_toolkit.agentic.tools.a2a.tool._memory import (
24
25
  get_sub_agent_short_term_memory_manager,
@@ -42,6 +43,7 @@ from unique_toolkit.agentic.tools.tool_progress_reporter import (
42
43
  )
43
44
  from unique_toolkit.app import ChatEvent
44
45
  from unique_toolkit.chat.schemas import MessageLog, MessageLogStatus
46
+ from unique_toolkit.chat.service import ChatService
45
47
  from unique_toolkit.content import ContentChunk
46
48
  from unique_toolkit.language_model import (
47
49
  LanguageModelFunction,
@@ -64,8 +66,12 @@ class SubAgentTool(Tool[SubAgentToolConfig]):
64
66
  name: str = "SubAgentTool",
65
67
  display_name: str = "SubAgentTool",
66
68
  response_watcher: SubAgentResponseWatcher | None = None,
67
- ):
68
- super().__init__(configuration, event, tool_progress_reporter)
69
+ ) -> None:
70
+ super().__init__(configuration)
71
+ self._event = event
72
+ self._tool_progress_reporter = tool_progress_reporter
73
+ self._chat_service = ChatService(event)
74
+ self._message_step_logger = MessageStepLogger(chat_service=self._chat_service)
69
75
  self._user_id = event.user_id
70
76
  self._company_id = event.company_id
71
77
 
@@ -323,12 +329,12 @@ class SubAgentTool(Tool[SubAgentToolConfig]):
323
329
  state: ProgressState,
324
330
  ) -> None:
325
331
  if (
326
- self.tool_progress_reporter is not None
332
+ self._tool_progress_reporter is not None
327
333
  and not feature_flags.enable_new_answers_ui_un_14411.is_enabled(
328
334
  self._company_id
329
335
  )
330
336
  ):
331
- await self.tool_progress_reporter.notify_from_tool_call(
337
+ await self._tool_progress_reporter.notify_from_tool_call(
332
338
  tool_call=tool_call,
333
339
  name=self._display_name,
334
340
  message=message,
@@ -10,6 +10,7 @@ import unique_sdk
10
10
 
11
11
  from unique_toolkit.agentic.evaluation.schemas import EvaluationMetricName
12
12
  from unique_toolkit.agentic.feature_flags import feature_flags
13
+ from unique_toolkit.agentic.message_log_manager.service import MessageStepLogger
13
14
  from unique_toolkit.agentic.tools.mcp.models import MCPToolConfig
14
15
  from unique_toolkit.agentic.tools.schemas import ToolCallResponse
15
16
  from unique_toolkit.agentic.tools.tool import Tool
@@ -19,6 +20,7 @@ from unique_toolkit.agentic.tools.tool_progress_reporter import (
19
20
  )
20
21
  from unique_toolkit.app.schemas import ChatEvent, McpServer, McpTool
21
22
  from unique_toolkit.chat.schemas import MessageLog, MessageLogStatus
23
+ from unique_toolkit.chat.service import ChatService
22
24
  from unique_toolkit.content.functions import upload_content_from_bytes
23
25
  from unique_toolkit.language_model.schemas import (
24
26
  LanguageModelFunction,
@@ -38,9 +40,13 @@ class MCPToolWrapper(Tool[MCPToolConfig]):
38
40
  config: MCPToolConfig,
39
41
  event: ChatEvent,
40
42
  tool_progress_reporter: ToolProgressReporter | None = None,
41
- ):
43
+ ) -> None:
42
44
  self.name = mcp_tool.name
43
- super().__init__(config, event, tool_progress_reporter)
45
+ super().__init__(config)
46
+ self._event = event
47
+ self._tool_progress_reporter = tool_progress_reporter
48
+ self._chat_service = ChatService(event)
49
+ self._message_step_logger = MessageStepLogger(chat_service=self._chat_service)
44
50
  self._mcp_tool = mcp_tool
45
51
  self._mcp_server = mcp_server
46
52
 
@@ -121,7 +127,7 @@ class MCPToolWrapper(Tool[MCPToolConfig]):
121
127
  if (
122
128
  self._tool_progress_reporter
123
129
  and not feature_flags.enable_new_answers_ui_un_14411.is_enabled(
124
- self.event.company_id
130
+ self._event.company_id
125
131
  )
126
132
  ):
127
133
  await self._tool_progress_reporter.notify_from_tool_call(
@@ -160,7 +166,7 @@ class MCPToolWrapper(Tool[MCPToolConfig]):
160
166
  if (
161
167
  self._tool_progress_reporter
162
168
  and not feature_flags.enable_new_answers_ui_un_14411.is_enabled(
163
- self.event.company_id
169
+ self._event.company_id
164
170
  )
165
171
  ):
166
172
  await self._tool_progress_reporter.notify_from_tool_call(
@@ -186,7 +192,7 @@ class MCPToolWrapper(Tool[MCPToolConfig]):
186
192
  if (
187
193
  self._tool_progress_reporter
188
194
  and not feature_flags.enable_new_answers_ui_un_14411.is_enabled(
189
- self.event.company_id
195
+ self._event.company_id
190
196
  )
191
197
  ):
192
198
  await self._tool_progress_reporter.notify_from_tool_call(
@@ -348,12 +354,12 @@ class MCPToolWrapper(Tool[MCPToolConfig]):
348
354
 
349
355
  try:
350
356
  content = upload_content_from_bytes(
351
- user_id=self.event.user_id,
352
- company_id=self.event.company_id,
357
+ user_id=self._event.user_id,
358
+ company_id=self._event.company_id,
353
359
  content=img_bytes,
354
360
  content_name=f"mcp_tool_{self.name}_image_{uuid.uuid4().hex[:12]}_{index}{ext}",
355
361
  mime_type=mime_type,
356
- chat_id=self.event.payload.chat_id,
362
+ chat_id=self._event.payload.chat_id,
357
363
  skip_ingestion=True,
358
364
  hide_in_chat=True,
359
365
  )
@@ -372,11 +378,11 @@ class MCPToolWrapper(Tool[MCPToolConfig]):
372
378
  """Call MCP tool via SDK to public API"""
373
379
  try:
374
380
  result = unique_sdk.MCP.call_tool(
375
- user_id=self.event.user_id,
376
- company_id=self.event.company_id,
381
+ user_id=self._event.user_id,
382
+ company_id=self._event.company_id,
377
383
  name=self.name,
378
- messageId=self.event.payload.assistant_message.id,
379
- chatId=self.event.payload.chat_id,
384
+ messageId=self._event.payload.assistant_message.id,
385
+ chatId=self._event.payload.chat_id,
380
386
  arguments=arguments,
381
387
  )
382
388
 
@@ -25,6 +25,7 @@ Instructions:
25
25
  Uploaded and generated files:
26
26
  - All files uploaded to the chat are available at the path `/mnt/data/<filename>`.
27
27
  - All files generated through code MUST be saved in the `/mnt/data` folder.
28
+ - CRITICAL: When generating any plot or visualization, the code MUST call `plt.savefig('/mnt/data/<filename>.png', bbox_inches='tight')` and `plt.close()` to save the file. Never rely on `plt.show()` alone — a file that is not saved to `/mnt/data/` cannot be displayed.
28
29
 
29
30
  CRUCIAL Instructions for displaying images and files in the chat:
30
31
  - Once files are generated in the `/mnt/data` folder you MUST reference them in the chat using markdown syntax in order to display them in the chat.
@@ -46,6 +47,8 @@ Always use a line break between the title and the markdown!
46
47
 
47
48
  Handling User Queries:
48
49
  - Whenever the user query requires using the python tool, you must always think first about the steps required.
50
+ - CRITICAL: If any step generates a plot or visualization, that code block MUST include `plt.savefig('/mnt/data/<filename>.png', bbox_inches='tight')` and `plt.close()` as the final lines. Code that only calls `plt.show()` without saving will NOT display the image to the user.
51
+ - CRITICAL: NEVER reference a `sandbox:/mnt/data/<filename>` link unless you have already executed code in this response that saved that exact file. Referencing a file that was not created by executed code will result in a broken link.
49
52
  - Use the tool multiple times:
50
53
  - You MUST NOT guess anything about the structure of the data / files uploaded. Rather, you MUST perform some data exploration first.
51
54
  - Example: User uploads an excel files and asks a question about it. First Read the data, explore the columns, columns types, etc. Then use the tool to answer the user's query.
@@ -66,6 +69,7 @@ Instructions:
66
69
  Uploaded and generated files:
67
70
  - All files uploaded to the chat are available at the path `/mnt/data/<filename>`.
68
71
  - All files generated through code MUST be saved in the `/mnt/data` folder.
72
+ - CRITICAL: When generating any plot or visualization, the code MUST call `plt.savefig('/mnt/data/<filename>.png', bbox_inches='tight')` and `plt.close()` to save the file. Never rely on `plt.show()` alone — a file that is not saved to `/mnt/data/` cannot be displayed.
69
73
 
70
74
  CRUCIAL Instructions for displaying images and files in the chat:
71
75
  - Once files are generated in the `/mnt/data` folder you MUST reference them in the chat using markdown syntax in order to display them in the chat.
@@ -89,6 +93,8 @@ IMPORTANT: ALWAYS place a blank line before AND after each file reference link s
89
93
 
90
94
  Handling User Queries:
91
95
  - Whenever the user query requires using the python tool, you must always think first about the steps required.
96
+ - CRITICAL: If any step generates a plot or visualization, that code block MUST include `plt.savefig('/mnt/data/<filename>.png', bbox_inches='tight')` and `plt.close()` as the final lines. Code that only calls `plt.show()` without saving will NOT display the image to the user.
97
+ - CRITICAL: NEVER reference a `sandbox:/mnt/data/<filename>` link unless you have already executed code in this response that saved that exact file. Referencing a file that was not created by executed code will result in a broken link.
92
98
  - Use the tool multiple times:
93
99
  - You MUST NOT guess anything about the structure of the data / files uploaded. Rather, you MUST perform some data exploration first.
94
100
  - Example: User uploads an excel files and asks a question about it. First Read the data, explore the columns, columns types, etc. Then use the tool to answer the user's query.
@@ -33,8 +33,8 @@ class MockInternalSearchTool(Tool[BaseToolConfig]):
33
33
 
34
34
  name = "internal_search"
35
35
 
36
- def __init__(self, config, event, tool_progress_reporter=None):
37
- super().__init__(config, event, tool_progress_reporter)
36
+ def __init__(self, config, event=None, tool_progress_reporter=None):
37
+ super().__init__(config)
38
38
 
39
39
  def tool_description(self):
40
40
  from unique_toolkit.language_model.schemas import LanguageModelToolDescription
@@ -2,12 +2,11 @@ from __future__ import annotations
2
2
 
3
3
  from abc import ABC, abstractmethod
4
4
  from logging import getLogger
5
- from typing import TYPE_CHECKING, Any, Generic, TypeVar, cast
5
+ from typing import TYPE_CHECKING, Any, Generic, TypeVar, cast, overload
6
6
 
7
7
  from typing_extensions import deprecated
8
8
 
9
9
  from unique_toolkit.agentic.evaluation.schemas import EvaluationMetricName
10
- from unique_toolkit.agentic.message_log_manager.service import MessageStepLogger
11
10
  from unique_toolkit.agentic.tools.config import ToolBuildConfig, ToolSelectionPolicy
12
11
  from unique_toolkit.agentic.tools.schemas import (
13
12
  BaseToolConfig,
@@ -16,16 +15,17 @@ from unique_toolkit.agentic.tools.schemas import (
16
15
  )
17
16
  from unique_toolkit.agentic.tools.tool_progress_reporter import ToolProgressReporter
18
17
  from unique_toolkit.app.schemas import ChatEvent
19
- from unique_toolkit.app.unique_settings import UniqueSettings
20
18
  from unique_toolkit.language_model import LanguageModelToolDescription
21
- from unique_toolkit.services.factory import UniqueServiceFactory
22
19
 
23
20
  if TYPE_CHECKING:
24
- from unique_toolkit.services.chat_service import ChatService
21
+ pass
25
22
  from unique_toolkit.language_model.schemas import (
26
23
  LanguageModelFunction,
27
24
  )
28
- from unique_toolkit.language_model.service import LanguageModelService
25
+
26
+ if TYPE_CHECKING:
27
+ from unique_toolkit.agentic.tools.tool_progress_reporter import ToolProgressReporter
28
+ from unique_toolkit.app.schemas import ChatEvent
29
29
 
30
30
  ConfigType = TypeVar("ConfigType", bound=BaseToolConfig)
31
31
 
@@ -78,7 +78,7 @@ class Tool(ABC, Generic[ConfigType]):
78
78
  if not isinstance(parameters, dict):
79
79
  return parameters.model_json_schema()
80
80
  else:
81
- return cast("dict[str, Any]", parameters)
81
+ return cast(dict[str, Any], parameters)
82
82
 
83
83
  # TODO: This method should be a property
84
84
  def tool_description_for_system_prompt(self) -> str:
@@ -140,34 +140,31 @@ class Tool(ABC, Generic[ConfigType]):
140
140
  tool_format_information_for_user_prompt=self.tool_format_information_for_user_prompt(),
141
141
  )
142
142
 
143
- # Properties that we should soon deprecate
144
-
145
- @property
146
- @deprecated("Never reuse event. Dangerous")
147
- def event(self) -> ChatEvent:
148
- return self._event
149
-
150
- @property
151
- @deprecated("Do not use this property as directly tied to chat frontend")
152
- def chat_service(self) -> ChatService:
153
- return self._chat_service
154
-
155
- @property
156
- @deprecated("Do not use this property as directly tied to chat frontend")
157
- def language_model_service(self) -> LanguageModelService:
158
- return self._language_model_service
159
-
160
- @property
161
- @deprecated("Do not use this as directly tied to chat frontend")
162
- def tool_progress_reporter(self) -> ToolProgressReporter | None:
163
- return self._tool_progress_reporter
143
+ @overload
144
+ def __init__(self, config: ConfigType) -> None: ...
164
145
 
146
+ @overload
165
147
  def __init__(
166
148
  self,
167
149
  config: ConfigType,
168
150
  event: ChatEvent,
151
+ tool_progress_reporter: ToolProgressReporter | None = ...,
152
+ ) -> None: ...
153
+
154
+ def __init__(
155
+ self,
156
+ config: ConfigType,
157
+ event: ChatEvent | None = None,
169
158
  tool_progress_reporter: ToolProgressReporter | None = None,
170
- ):
159
+ ) -> None:
160
+ """Initialize the tool.
161
+
162
+ Preferred (decoupled): `Tool(config)` — configuration only.
163
+
164
+ Backward compatible: `Tool(config, event, tool_progress_reporter)` — creates
165
+ deprecated chat_service, language_model_service, message_step_logger for
166
+ legacy subclasses.
167
+ """
171
168
  self.settings = ToolBuildConfig(
172
169
  name=self.name,
173
170
  configuration=config,
@@ -178,16 +175,57 @@ class Tool(ABC, Generic[ConfigType]):
178
175
  self.logger = getLogger(f"{module_name}.{__name__}")
179
176
  self.debug_info: dict = {}
180
177
 
181
- # TODO: Remove these properties as soon as possible
182
- self._event: ChatEvent = event
183
- self._tool_progress_reporter: ToolProgressReporter | None = (
184
- tool_progress_reporter
185
- )
178
+ if event is not None:
179
+ from unique_toolkit.agentic.message_log_manager.service import (
180
+ MessageStepLogger,
181
+ )
182
+ from unique_toolkit.chat.service import ChatService
183
+ from unique_toolkit.language_model.service import LanguageModelService
184
+
185
+ self._event = event
186
+ self._tool_progress_reporter = tool_progress_reporter
187
+ self._chat_service = ChatService(event)
188
+ self._language_model_service = LanguageModelService.from_event(event)
189
+ self._message_step_logger = MessageStepLogger(
190
+ chat_service=self._chat_service,
191
+ )
186
192
 
187
- self._chat_service = UniqueServiceFactory(
188
- settings=UniqueSettings.from_chat_event(event)
189
- ).chat_service()
190
- self._language_model_service = LanguageModelService(event)
191
- self._message_step_logger = MessageStepLogger(
192
- chat_service=self._chat_service,
193
- )
193
+ @property
194
+ @deprecated(
195
+ "Never reuse event. Dangerous. Prefer Tool(config) and inject context in run()."
196
+ )
197
+ def event(self) -> ChatEvent:
198
+ if not hasattr(self, "_event"):
199
+ raise AttributeError(
200
+ "event not available (tool was initialized with config only). "
201
+ )
202
+ return self._event
203
+
204
+ @property
205
+ @deprecated(
206
+ "Do not use; tied to chat frontend. Prefer Tool(config) and inject in run()."
207
+ )
208
+ def chat_service(self):
209
+ if not hasattr(self, "_chat_service"):
210
+ raise AttributeError(
211
+ "chat_service not available (tool was initialized with config only). "
212
+ )
213
+ return self._chat_service
214
+
215
+ @property
216
+ @deprecated(
217
+ "Do not use; tied to chat frontend. Prefer Tool(config) and inject in run()."
218
+ )
219
+ def language_model_service(self):
220
+ if not hasattr(self, "_language_model_service"):
221
+ raise AttributeError(
222
+ "language_model_service not available (tool was initialized with config only). "
223
+ )
224
+ return self._language_model_service
225
+
226
+ @property
227
+ @deprecated(
228
+ "Do not use; tied to chat frontend. Prefer Tool(config) and inject in run()."
229
+ )
230
+ def tool_progress_reporter(self) -> ToolProgressReporter | None:
231
+ return getattr(self, "_tool_progress_reporter", None)