unique_toolkit 1.49.0__tar.gz → 1.50.0__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 (287) hide show
  1. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/CHANGELOG.md +9 -5
  2. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/PKG-INFO +10 -6
  3. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/pyproject.toml +1 -1
  4. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/service.py +2 -2
  5. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/content/functions.py +67 -0
  6. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/content/service.py +27 -0
  7. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/services/chat_service.py +20 -0
  8. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/services/knowledge_base.py +26 -0
  9. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/LICENSE +0 -0
  10. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/README.md +0 -0
  11. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/__init__.py +0 -0
  12. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/_common/__init__.py +0 -0
  13. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/_common/_base_service.py +0 -0
  14. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/_common/_time_utils.py +0 -0
  15. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/_common/api_calling/human_verification_manager.py +0 -0
  16. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/_common/base_model_type_attribute.py +0 -0
  17. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/_common/chunk_relevancy_sorter/config.py +0 -0
  18. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/_common/chunk_relevancy_sorter/exception.py +0 -0
  19. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/_common/chunk_relevancy_sorter/schemas.py +0 -0
  20. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/_common/chunk_relevancy_sorter/service.py +0 -0
  21. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/_common/chunk_relevancy_sorter/tests/test_service.py +0 -0
  22. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/_common/config_checker/README.md +0 -0
  23. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/_common/config_checker/__init__.py +0 -0
  24. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/_common/config_checker/__main__.py +0 -0
  25. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/_common/config_checker/cli.py +0 -0
  26. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/_common/config_checker/differ.py +0 -0
  27. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/_common/config_checker/exporter.py +0 -0
  28. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/_common/config_checker/models.py +0 -0
  29. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/_common/config_checker/registry.py +0 -0
  30. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/_common/config_checker/validator.py +0 -0
  31. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/_common/default_language_model.py +0 -0
  32. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/_common/docx_generator/__init__.py +0 -0
  33. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/_common/docx_generator/config.py +0 -0
  34. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/_common/docx_generator/pandoc_converter.py +0 -0
  35. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/_common/docx_generator/schemas.py +0 -0
  36. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/_common/docx_generator/service.py +0 -0
  37. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/_common/docx_generator/template/Doc Template.docx +0 -0
  38. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/_common/endpoint_builder.py +0 -0
  39. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/_common/endpoint_requestor.py +0 -0
  40. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/_common/event_bus.py +0 -0
  41. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/_common/exception.py +0 -0
  42. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/_common/execution.py +0 -0
  43. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/_common/experimental/endpoint_builder.py +0 -0
  44. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/_common/experimental/endpoint_requestor.py +0 -0
  45. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/_common/experimental/write_up_agent/README.md +0 -0
  46. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/_common/experimental/write_up_agent/__init__.py +0 -0
  47. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/_common/experimental/write_up_agent/agent.py +0 -0
  48. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/_common/experimental/write_up_agent/config.py +0 -0
  49. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/_common/experimental/write_up_agent/examples/data.csv +0 -0
  50. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/_common/experimental/write_up_agent/examples/example_usage.py +0 -0
  51. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/_common/experimental/write_up_agent/schemas.py +0 -0
  52. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/_common/experimental/write_up_agent/services/__init__.py +0 -0
  53. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/_common/experimental/write_up_agent/services/dataframe_handler/__init__.py +0 -0
  54. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/_common/experimental/write_up_agent/services/dataframe_handler/exceptions.py +0 -0
  55. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/_common/experimental/write_up_agent/services/dataframe_handler/service.py +0 -0
  56. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/_common/experimental/write_up_agent/services/dataframe_handler/utils.py +0 -0
  57. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/__init__.py +0 -0
  58. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/config.py +0 -0
  59. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/exceptions.py +0 -0
  60. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/prompts/config.py +0 -0
  61. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/prompts/system_prompt.j2 +0 -0
  62. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/prompts/user_prompt.j2 +0 -0
  63. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/service.py +0 -0
  64. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/_common/experimental/write_up_agent/services/template_handler/__init__.py +0 -0
  65. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/_common/experimental/write_up_agent/services/template_handler/default_template.j2 +0 -0
  66. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/_common/experimental/write_up_agent/services/template_handler/exceptions.py +0 -0
  67. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/_common/experimental/write_up_agent/services/template_handler/service.py +0 -0
  68. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/_common/experimental/write_up_agent/services/template_handler/utils.py +0 -0
  69. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/_common/experimental/write_up_agent/utils.py +0 -0
  70. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/_common/feature_flags/schema.py +0 -0
  71. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/_common/pydantic/rjsf_tags.py +0 -0
  72. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/_common/pydantic_helpers.py +0 -0
  73. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/_common/referencing.py +0 -0
  74. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/_common/string_utilities.py +0 -0
  75. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/_common/tests/test_referencing.py +0 -0
  76. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/_common/tests/test_string_utilities.py +0 -0
  77. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/_common/token/__init__.py +0 -0
  78. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/_common/token/image_token_counting.py +0 -0
  79. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/_common/token/token_counting.py +0 -0
  80. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/_common/token/tokenizers/deepseek/tokenizer.json +0 -0
  81. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/_common/token/tokenizers/qwen/tokenizer.json +0 -0
  82. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/_common/utils/__init__.py +0 -0
  83. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/_common/utils/files.py +0 -0
  84. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/_common/utils/image/encode.py +0 -0
  85. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/_common/utils/jinja/helpers.py +0 -0
  86. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/_common/utils/jinja/render.py +0 -0
  87. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/_common/utils/jinja/schema.py +0 -0
  88. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/_common/utils/jinja/utils.py +0 -0
  89. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/_common/utils/structured_output/__init__.py +0 -0
  90. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/_common/utils/structured_output/schema.py +0 -0
  91. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/_common/utils/write_configuration.py +0 -0
  92. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/_common/validate_required_values.py +0 -0
  93. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/_common/validators.py +0 -0
  94. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/agentic/__init__.py +0 -0
  95. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/agentic/debug_info_manager/debug_info_manager.py +0 -0
  96. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/agentic/debug_info_manager/test/test_debug_info_manager.py +0 -0
  97. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/agentic/evaluation/config.py +0 -0
  98. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/agentic/evaluation/context_relevancy/prompts/__init__.py +0 -0
  99. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/agentic/evaluation/context_relevancy/prompts/system_prompt.j2 +0 -0
  100. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/agentic/evaluation/context_relevancy/prompts/user_prompt.j2 +0 -0
  101. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/agentic/evaluation/context_relevancy/schema.py +0 -0
  102. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/agentic/evaluation/context_relevancy/service.py +0 -0
  103. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/agentic/evaluation/evaluation_manager.py +0 -0
  104. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/agentic/evaluation/exception.py +0 -0
  105. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/agentic/evaluation/hallucination/constants.py +0 -0
  106. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/agentic/evaluation/hallucination/hallucination_evaluation.py +0 -0
  107. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/agentic/evaluation/hallucination/prompts/__init__.py +0 -0
  108. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/agentic/evaluation/hallucination/prompts/system_prompt.j2 +0 -0
  109. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/agentic/evaluation/hallucination/prompts/user_prompt.j2 +0 -0
  110. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/agentic/evaluation/hallucination/service.py +0 -0
  111. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/agentic/evaluation/hallucination/utils.py +0 -0
  112. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/agentic/evaluation/output_parser.py +0 -0
  113. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/agentic/evaluation/schemas.py +0 -0
  114. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/agentic/evaluation/tests/fixtures.py +0 -0
  115. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/agentic/evaluation/tests/test_config.py +0 -0
  116. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/agentic/evaluation/tests/test_context_relevancy_service.py +0 -0
  117. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/agentic/evaluation/tests/test_hallucination_constants.py +0 -0
  118. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/agentic/evaluation/tests/test_hallucination_utils.py +0 -0
  119. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/agentic/evaluation/tests/test_output_parser.py +0 -0
  120. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/agentic/evaluation/tests/test_prompt_loaders.py +0 -0
  121. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/agentic/evaluation/utils.py +0 -0
  122. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/agentic/feature_flags/__init__.py +0 -0
  123. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/agentic/feature_flags/feature_flags.py +0 -0
  124. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/agentic/history_manager/history_construction_with_contents.py +0 -0
  125. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/agentic/history_manager/history_manager.py +0 -0
  126. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/agentic/history_manager/loop_token_reducer.py +0 -0
  127. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/agentic/history_manager/utils.py +0 -0
  128. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/agentic/loop_runner/__init__.py +0 -0
  129. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/agentic/loop_runner/_iteration_handler_utils.py +0 -0
  130. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/agentic/loop_runner/_responses_iteration_handler_utils.py +0 -0
  131. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/agentic/loop_runner/_responses_stream_handler_utils.py +0 -0
  132. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/agentic/loop_runner/_stream_handler_utils.py +0 -0
  133. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/agentic/loop_runner/base.py +0 -0
  134. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/agentic/loop_runner/middleware/__init__.py +0 -0
  135. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/agentic/loop_runner/middleware/planning/__init__.py +0 -0
  136. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/agentic/loop_runner/middleware/planning/planning.py +0 -0
  137. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/agentic/loop_runner/middleware/planning/schema.py +0 -0
  138. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/agentic/loop_runner/runners/__init__.py +0 -0
  139. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/agentic/loop_runner/runners/basic.py +0 -0
  140. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/agentic/loop_runner/runners/qwen/__init__.py +0 -0
  141. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/agentic/loop_runner/runners/qwen/helpers.py +0 -0
  142. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/agentic/loop_runner/runners/qwen/qwen_runner.py +0 -0
  143. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/agentic/message_log_manager/__init__.py +0 -0
  144. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/agentic/message_log_manager/service.py +0 -0
  145. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/agentic/postprocessor/postprocessor_manager.py +0 -0
  146. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/agentic/reference_manager/reference_manager.py +0 -0
  147. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/agentic/responses_api/__init__.py +0 -0
  148. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/agentic/responses_api/postprocessors/code_display.py +0 -0
  149. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/agentic/responses_api/postprocessors/generated_files.py +0 -0
  150. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/agentic/responses_api/stream_handler.py +0 -0
  151. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/agentic/short_term_memory_manager/persistent_short_term_memory_manager.py +0 -0
  152. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/agentic/thinking_manager/thinking_manager.py +0 -0
  153. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/agentic/tools/__init__.py +0 -0
  154. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/agentic/tools/a2a/__init__.py +0 -0
  155. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/agentic/tools/a2a/config.py +0 -0
  156. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/agentic/tools/a2a/evaluation/__init__.py +0 -0
  157. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/agentic/tools/a2a/evaluation/_utils.py +0 -0
  158. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/agentic/tools/a2a/evaluation/config.py +0 -0
  159. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/agentic/tools/a2a/evaluation/evaluator.py +0 -0
  160. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/agentic/tools/a2a/evaluation/summarization_user_message.j2 +0 -0
  161. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/agentic/tools/a2a/manager.py +0 -0
  162. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/agentic/tools/a2a/postprocessing/__init__.py +0 -0
  163. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/agentic/tools/a2a/postprocessing/_display_utils.py +0 -0
  164. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/agentic/tools/a2a/postprocessing/_ref_utils.py +0 -0
  165. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/agentic/tools/a2a/postprocessing/config.py +0 -0
  166. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/agentic/tools/a2a/postprocessing/display.py +0 -0
  167. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/agentic/tools/a2a/postprocessing/references.py +0 -0
  168. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/agentic/tools/a2a/postprocessing/test/test_display.py +0 -0
  169. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/agentic/tools/a2a/postprocessing/test/test_display_utils.py +0 -0
  170. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/agentic/tools/a2a/postprocessing/test/test_ref_utils.py +0 -0
  171. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/agentic/tools/a2a/prompts.py +0 -0
  172. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/agentic/tools/a2a/response_watcher/__init__.py +0 -0
  173. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/agentic/tools/a2a/response_watcher/service.py +0 -0
  174. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/agentic/tools/a2a/tool/__init__.py +0 -0
  175. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/agentic/tools/a2a/tool/_memory.py +0 -0
  176. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/agentic/tools/a2a/tool/_schema.py +0 -0
  177. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/agentic/tools/a2a/tool/config.py +0 -0
  178. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/agentic/tools/a2a/tool/service.py +0 -0
  179. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/agentic/tools/a2a/tool/test/test_service_utils.py +0 -0
  180. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/agentic/tools/agent_chunks_hanlder.py +0 -0
  181. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/agentic/tools/config.py +0 -0
  182. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/agentic/tools/factory.py +0 -0
  183. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/agentic/tools/mcp/__init__.py +0 -0
  184. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/agentic/tools/mcp/manager.py +0 -0
  185. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/agentic/tools/mcp/models.py +0 -0
  186. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/agentic/tools/mcp/tool_wrapper.py +0 -0
  187. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/agentic/tools/openai_builtin/__init__.py +0 -0
  188. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/agentic/tools/openai_builtin/base.py +0 -0
  189. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/__init__.py +0 -0
  190. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/config.py +0 -0
  191. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/postprocessors/__init__.py +0 -0
  192. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/postprocessors/code_display.py +0 -0
  193. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/postprocessors/generated_files.py +0 -0
  194. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/agentic/tools/openai_builtin/manager.py +0 -0
  195. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/agentic/tools/schemas.py +0 -0
  196. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/agentic/tools/test/test_mcp_manager.py +0 -0
  197. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/agentic/tools/test/test_tool_progress_reporter.py +0 -0
  198. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/agentic/tools/tool.py +0 -0
  199. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/agentic/tools/tool_manager.py +0 -0
  200. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/agentic/tools/tool_progress_reporter.py +0 -0
  201. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/agentic/tools/utils/__init__.py +0 -0
  202. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/agentic/tools/utils/source_handling/__init__.py +0 -0
  203. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/agentic/tools/utils/source_handling/schema.py +0 -0
  204. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/agentic/tools/utils/source_handling/source_formatting.py +0 -0
  205. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/agentic/tools/utils/source_handling/tests/test_source_formatting.py +0 -0
  206. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/agentic_table/__init__.py +0 -0
  207. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/agentic_table/schemas.py +0 -0
  208. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/agentic_table/service.py +0 -0
  209. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/app/__init__.py +0 -0
  210. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/app/dev_util.py +0 -0
  211. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/app/fast_api_factory.py +0 -0
  212. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/app/init_logging.py +0 -0
  213. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/app/init_sdk.py +0 -0
  214. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/app/performance/async_tasks.py +0 -0
  215. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/app/performance/async_wrapper.py +0 -0
  216. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/app/schemas.py +0 -0
  217. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/app/unique_settings.py +0 -0
  218. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/app/verification.py +0 -0
  219. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/app/webhook.py +0 -0
  220. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/chat/__init__.py +0 -0
  221. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/chat/cancellation.py +0 -0
  222. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/chat/constants.py +0 -0
  223. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/chat/deprecated/service.py +0 -0
  224. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/chat/functions.py +0 -0
  225. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/chat/rendering.py +0 -0
  226. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/chat/responses_api.py +0 -0
  227. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/chat/schemas.py +0 -0
  228. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/chat/service.py +0 -0
  229. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/chat/state.py +0 -0
  230. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/chat/utils.py +0 -0
  231. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/content/__init__.py +0 -0
  232. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/content/constants.py +0 -0
  233. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/content/schemas.py +0 -0
  234. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/content/smart_rules.py +0 -0
  235. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/content/utils.py +0 -0
  236. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/data_extraction/README.md +0 -0
  237. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/data_extraction/__init__.py +0 -0
  238. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/data_extraction/augmented/__init__.py +0 -0
  239. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/data_extraction/augmented/service.py +0 -0
  240. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/data_extraction/base.py +0 -0
  241. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/data_extraction/basic/__init__.py +0 -0
  242. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/data_extraction/basic/config.py +0 -0
  243. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/data_extraction/basic/prompt.py +0 -0
  244. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/data_extraction/basic/service.py +0 -0
  245. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/elicitation/__init__.py +0 -0
  246. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/elicitation/constants.py +0 -0
  247. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/elicitation/exceptions.py +0 -0
  248. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/elicitation/functions.py +0 -0
  249. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/elicitation/schemas.py +0 -0
  250. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/elicitation/service.py +0 -0
  251. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/embedding/__init__.py +0 -0
  252. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/embedding/constants.py +0 -0
  253. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/embedding/functions.py +0 -0
  254. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/embedding/schemas.py +0 -0
  255. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/embedding/service.py +0 -0
  256. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/embedding/utils.py +0 -0
  257. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/framework_utilities/__init__.py +0 -0
  258. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/framework_utilities/langchain/__init__.py +0 -0
  259. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/framework_utilities/langchain/client.py +0 -0
  260. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/framework_utilities/langchain/history.py +0 -0
  261. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/framework_utilities/openai/__init__.py +0 -0
  262. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/framework_utilities/openai/client.py +0 -0
  263. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/framework_utilities/openai/message_builder.py +0 -0
  264. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/framework_utilities/utils.py +0 -0
  265. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/language_model/__init__.py +0 -0
  266. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/language_model/_responses_api_utils.py +0 -0
  267. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/language_model/builder.py +0 -0
  268. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/language_model/constants.py +0 -0
  269. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/language_model/default_language_model.py +0 -0
  270. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/language_model/functions.py +0 -0
  271. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/language_model/infos.py +0 -0
  272. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/language_model/prompt.py +0 -0
  273. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/language_model/reference.py +0 -0
  274. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/language_model/schemas.py +0 -0
  275. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/language_model/service.py +0 -0
  276. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/language_model/stream_transform.py +0 -0
  277. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/language_model/utils.py +0 -0
  278. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/protocols/support.py +0 -0
  279. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/services/__init__.py +0 -0
  280. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/short_term_memory/__init__.py +0 -0
  281. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/short_term_memory/constants.py +0 -0
  282. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/short_term_memory/functions.py +0 -0
  283. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/short_term_memory/schemas.py +0 -0
  284. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/short_term_memory/service.py +0 -0
  285. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/smart_rules/__init__.py +0 -0
  286. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/smart_rules/compile.py +0 -0
  287. {unique_toolkit-1.49.0 → unique_toolkit-1.50.0}/unique_toolkit/test_utilities/events.py +0 -0
@@ -5,8 +5,12 @@ All notable changes to this project will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [1.50.0] - 2026-03-02
9
+ - Add async download-to-bytes functions: `download_content_to_bytes_async` on `KnowledgeBaseService`, `ContentService`, and `download_chat_content_to_bytes_async` on `ChatService`
10
+
8
11
  ## [1.49.0] - 2026-03-02
9
12
  - Make the code execution tool always available to the agent
13
+
10
14
  ## [1.48.1] - 2026-03-02
11
15
  - Revert `DocxGeneratorConfig` and `DocxGeneratorService` additions from 1.47.11 (broke SWOT tool, pending further testing)
12
16
 
@@ -207,7 +211,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
207
211
  ## [1.43.1] - 2026-01-12
208
212
  - Remove accidental example report.md from repo
209
213
 
210
- ##[1.43.0] - 2026-01-11
214
+ ## [1.43.0] - 2026-01-11
211
215
  - Add `WriteUpAgent` as an experimental service
212
216
 
213
217
  ## [1.42.9] - 2026-01-11
@@ -304,7 +308,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
304
308
  ## [1.34.0] - 2025-12-02
305
309
  - Add option to upload code interpreter generated files to the chat.
306
310
 
307
- ##[1.33.3] - 2025-12-02
311
+ ## [1.33.3] - 2025-12-02
308
312
  - Fix serialization of ToolBuildConfig `configuration` field.
309
313
 
310
314
  ## [1.33.2] - 2025-12-01
@@ -350,17 +354,17 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
350
354
  - Add early return in `create_message_log_entry` if chat_service doesn't have assistant_message_id (relevant for agentic
351
355
  table)
352
356
 
353
- ##[1.29.0] - 2025-11-21
357
+ ## [1.29.0] - 2025-11-21
354
358
  - Add option to force include references in sub agent responses even if unused by main agent response.
355
359
 
356
360
  ## [1.28.9] - 2025-11-21
357
361
  - Remove `knolwedge_base_service` from DocXGeneratorService
358
362
 
359
- ##[1.28.8] - 2025-11-20
363
+ ## [1.28.8] - 2025-11-20
360
364
  - Add query params to api operation
361
365
  - Add query params to endpoint builder
362
366
 
363
- ##[1.28.7] - 2025-11-20
367
+ ## [1.28.7] - 2025-11-20
364
368
  - Adding Message Step Logger Class to the agentic tools.
365
369
 
366
370
  ## [1.28.6] - 2025-11-20
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: unique_toolkit
3
- Version: 1.49.0
3
+ Version: 1.50.0
4
4
  Summary:
5
5
  License: Proprietary
6
6
  Author: Cedric Klinkert
@@ -129,8 +129,12 @@ All notable changes to this project will be documented in this file.
129
129
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
130
130
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
131
131
 
132
+ ## [1.50.0] - 2026-03-02
133
+ - Add async download-to-bytes functions: `download_content_to_bytes_async` on `KnowledgeBaseService`, `ContentService`, and `download_chat_content_to_bytes_async` on `ChatService`
134
+
132
135
  ## [1.49.0] - 2026-03-02
133
136
  - Make the code execution tool always available to the agent
137
+
134
138
  ## [1.48.1] - 2026-03-02
135
139
  - Revert `DocxGeneratorConfig` and `DocxGeneratorService` additions from 1.47.11 (broke SWOT tool, pending further testing)
136
140
 
@@ -331,7 +335,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
331
335
  ## [1.43.1] - 2026-01-12
332
336
  - Remove accidental example report.md from repo
333
337
 
334
- ##[1.43.0] - 2026-01-11
338
+ ## [1.43.0] - 2026-01-11
335
339
  - Add `WriteUpAgent` as an experimental service
336
340
 
337
341
  ## [1.42.9] - 2026-01-11
@@ -428,7 +432,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
428
432
  ## [1.34.0] - 2025-12-02
429
433
  - Add option to upload code interpreter generated files to the chat.
430
434
 
431
- ##[1.33.3] - 2025-12-02
435
+ ## [1.33.3] - 2025-12-02
432
436
  - Fix serialization of ToolBuildConfig `configuration` field.
433
437
 
434
438
  ## [1.33.2] - 2025-12-01
@@ -474,17 +478,17 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
474
478
  - Add early return in `create_message_log_entry` if chat_service doesn't have assistant_message_id (relevant for agentic
475
479
  table)
476
480
 
477
- ##[1.29.0] - 2025-11-21
481
+ ## [1.29.0] - 2025-11-21
478
482
  - Add option to force include references in sub agent responses even if unused by main agent response.
479
483
 
480
484
  ## [1.28.9] - 2025-11-21
481
485
  - Remove `knolwedge_base_service` from DocXGeneratorService
482
486
 
483
- ##[1.28.8] - 2025-11-20
487
+ ## [1.28.8] - 2025-11-20
484
488
  - Add query params to api operation
485
489
  - Add query params to endpoint builder
486
490
 
487
- ##[1.28.7] - 2025-11-20
491
+ ## [1.28.7] - 2025-11-20
488
492
  - Adding Message Step Logger Class to the agentic tools.
489
493
 
490
494
  ## [1.28.6] - 2025-11-20
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "unique_toolkit"
3
- version = "1.49.0"
3
+ version = "1.50.0"
4
4
  description = ""
5
5
  authors = [
6
6
  "Cedric Klinkert <cedric.klinkert@unique.ch>",
@@ -125,9 +125,9 @@ async def _upload_files_to_container(
125
125
  logger.info(
126
126
  "Uploding file %s to container %s", file.id, memory.container_id
127
127
  )
128
- file_content = content_service.download_content_to_bytes(
128
+ file_content = await content_service.download_content_to_bytes_async(
129
129
  content_id=file.id, chat_id=chat_id
130
- ) # TODO: Use async version when available
130
+ )
131
131
 
132
132
  openai_file = await client.containers.files.create(
133
133
  container_id=container_id,
@@ -677,6 +677,39 @@ def request_content_by_id(
677
677
  return requests.get(url, headers=headers)
678
678
 
679
679
 
680
+ async def request_content_by_id_async(
681
+ user_id: str, company_id: str, content_id: str, chat_id: str | None
682
+ ) -> httpx.Response:
683
+ """
684
+ Sends an async request to download content.
685
+
686
+ Args:
687
+ user_id (str): The user ID.
688
+ company_id (str): The company ID.
689
+ content_id (str): The ID of the content to download.
690
+ chat_id (str): The ID of the chat from which to download the content. Defaults to None to download from knowledge base.
691
+
692
+ Returns:
693
+ httpx.Response: The response object containing the downloaded content.
694
+
695
+ """
696
+ logger.info(f"Requesting content with content_id: {content_id}")
697
+ url = f"{unique_sdk.api_base}/content/{content_id}/file"
698
+ if chat_id:
699
+ url = f"{url}?chatId={chat_id}"
700
+
701
+ headers = {
702
+ "x-api-version": unique_sdk.api_version,
703
+ "x-app-id": unique_sdk.app_id,
704
+ "x-user-id": user_id,
705
+ "x-company-id": company_id,
706
+ "Authorization": "Bearer %s" % (unique_sdk.api_key,),
707
+ }
708
+
709
+ async with httpx.AsyncClient() as client:
710
+ return await client.get(url, headers=headers)
711
+
712
+
680
713
  def download_content_to_file_by_id(
681
714
  user_id: str,
682
715
  company_id: str,
@@ -747,6 +780,40 @@ def download_content_to_bytes(
747
780
  return response.content
748
781
 
749
782
 
783
+ async def download_content_to_bytes_async(
784
+ user_id: str,
785
+ company_id: str,
786
+ content_id: str,
787
+ chat_id: str | None,
788
+ ) -> bytes:
789
+ """
790
+ Asynchronously downloads content to memory.
791
+
792
+ Args:
793
+ user_id (str): The user ID.
794
+ company_id (str): The company ID.
795
+ content_id (str): The ID of the content to download.
796
+ chat_id (str | None): The chat ID, or None to download from the knowledge base.
797
+
798
+ raises:
799
+ httpx.HTTPStatusError: If the download fails.
800
+ """
801
+ logger.info(f"Downloading content with content_id: {content_id}")
802
+ response = await request_content_by_id_async(
803
+ user_id, company_id, content_id, chat_id
804
+ )
805
+
806
+ if not response.is_success:
807
+ logger.error(
808
+ "Error downloading file %s: Status code %s",
809
+ content_id,
810
+ response.status_code,
811
+ )
812
+ response.raise_for_status()
813
+
814
+ return response.content
815
+
816
+
750
817
  # TODO: Discuss if we should deprecate this method due to unclear use by content_name
751
818
  def download_content(
752
819
  user_id: str,
@@ -15,6 +15,7 @@ from unique_toolkit.content.constants import DEFAULT_SEARCH_LANGUAGE
15
15
  from unique_toolkit.content.functions import (
16
16
  download_content,
17
17
  download_content_to_bytes,
18
+ download_content_to_bytes_async,
18
19
  download_content_to_file_by_id,
19
20
  request_content_by_id,
20
21
  search_content_chunks,
@@ -736,6 +737,32 @@ class ContentService:
736
737
  chat_id=chat_id,
737
738
  )
738
739
 
740
+ async def download_content_to_bytes_async(
741
+ self,
742
+ content_id: str,
743
+ chat_id: str | None = None,
744
+ ) -> bytes:
745
+ """
746
+ Asynchronously downloads content to memory.
747
+
748
+ Args:
749
+ content_id (str): The id of the uploaded content.
750
+ chat_id (Optional[str]): The chat_id, defaults to None.
751
+
752
+ Returns:
753
+ bytes: The downloaded content.
754
+
755
+ Raises:
756
+ Exception: If the download fails.
757
+ """
758
+ chat_id = chat_id or self._chat_id # type: ignore
759
+ return await download_content_to_bytes_async(
760
+ user_id=self._user_id,
761
+ company_id=self._company_id,
762
+ content_id=content_id,
763
+ chat_id=chat_id,
764
+ )
765
+
739
766
  def get_documents_uploaded_to_chat(self) -> list[Content]:
740
767
  chat_contents = self.search_contents(
741
768
  where={
@@ -70,6 +70,7 @@ from unique_toolkit.chat.schemas import (
70
70
  )
71
71
  from unique_toolkit.content.functions import (
72
72
  download_content_to_bytes,
73
+ download_content_to_bytes_async,
73
74
  search_contents,
74
75
  upload_content_from_bytes,
75
76
  upload_content_from_bytes_async,
@@ -1736,6 +1737,25 @@ class ChatService(ChatServiceDeprecated):
1736
1737
  chat_id=self._content_scope_chat_id,
1737
1738
  )
1738
1739
 
1740
+ async def download_chat_content_to_bytes_async(self, *, content_id: str) -> bytes:
1741
+ """Async download content by id from the content-scope chat (e.g. parent chat when subagent).
1742
+
1743
+ Uses the service's content-scope chat id, so when running as a subagent
1744
+ with correlation, this accesses files from the primary chat session.
1745
+
1746
+ Args:
1747
+ content_id: The content id to download.
1748
+
1749
+ Returns:
1750
+ bytes: The raw content bytes.
1751
+ """
1752
+ return await download_content_to_bytes_async(
1753
+ user_id=self._user_id,
1754
+ company_id=self._company_id,
1755
+ content_id=content_id,
1756
+ chat_id=self._content_scope_chat_id,
1757
+ )
1758
+
1739
1759
  def download_chat_images_and_documents(self) -> tuple[list[Content], list[Content]]:
1740
1760
  """Return images and documents from the content-scope chat (e.g. parent chat when subagent).
1741
1761
 
@@ -17,6 +17,7 @@ from unique_toolkit.content.functions import (
17
17
  delete_content,
18
18
  delete_content_async,
19
19
  download_content_to_bytes,
20
+ download_content_to_bytes_async,
20
21
  download_content_to_file_by_id,
21
22
  get_content_info,
22
23
  get_folder_info,
@@ -536,6 +537,31 @@ class KnowledgeBaseService:
536
537
  chat_id=None,
537
538
  )
538
539
 
540
+ async def download_content_to_bytes_async(
541
+ self,
542
+ *,
543
+ content_id: str,
544
+ ) -> bytes:
545
+ """
546
+ Asynchronously downloads content to memory.
547
+
548
+ Args:
549
+ content_id (str): The id of the uploaded content.
550
+
551
+ Returns:
552
+ bytes: The downloaded content.
553
+
554
+ Raises:
555
+ Exception: If the download fails.
556
+ """
557
+
558
+ return await download_content_to_bytes_async(
559
+ user_id=self._user_id,
560
+ company_id=self._company_id,
561
+ content_id=content_id,
562
+ chat_id=None,
563
+ )
564
+
539
565
  def batch_file_upload(
540
566
  self,
541
567
  *,
File without changes