unique_toolkit 1.70.6__tar.gz → 1.70.8__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 (297) hide show
  1. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/PKG-INFO +1 -1
  2. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/pyproject.toml +1 -1
  3. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/postprocessors/generated_files.py +51 -34
  4. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/README.md +0 -0
  5. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/__init__.py +0 -0
  6. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/_common/__init__.py +0 -0
  7. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/_common/_base_service.py +0 -0
  8. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/_common/_time_utils.py +0 -0
  9. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/_common/api_calling/human_verification_manager.py +0 -0
  10. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/_common/base_model_type_attribute.py +0 -0
  11. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/_common/chunk_relevancy_sorter/config.py +0 -0
  12. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/_common/chunk_relevancy_sorter/exception.py +0 -0
  13. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/_common/chunk_relevancy_sorter/schemas.py +0 -0
  14. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/_common/chunk_relevancy_sorter/service.py +0 -0
  15. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/_common/chunk_relevancy_sorter/tests/test_service.py +0 -0
  16. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/_common/config_checker/README.md +0 -0
  17. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/_common/config_checker/__init__.py +0 -0
  18. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/_common/config_checker/__main__.py +0 -0
  19. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/_common/config_checker/cli.py +0 -0
  20. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/_common/config_checker/differ.py +0 -0
  21. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/_common/config_checker/exporter.py +0 -0
  22. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/_common/config_checker/models.py +0 -0
  23. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/_common/config_checker/registry.py +0 -0
  24. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/_common/config_checker/validator.py +0 -0
  25. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/_common/default_language_model.py +0 -0
  26. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/_common/docx_generator/__init__.py +0 -0
  27. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/_common/docx_generator/config.py +0 -0
  28. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/_common/docx_generator/pandoc_converter.py +0 -0
  29. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/_common/docx_generator/schemas.py +0 -0
  30. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/_common/docx_generator/service.py +0 -0
  31. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/_common/docx_generator/template/Doc Template.docx +0 -0
  32. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/_common/endpoint_builder.py +0 -0
  33. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/_common/endpoint_requestor.py +0 -0
  34. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/_common/event_bus.py +0 -0
  35. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/_common/exception.py +0 -0
  36. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/_common/execution.py +0 -0
  37. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/_common/experimental/endpoint_builder.py +0 -0
  38. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/_common/experimental/endpoint_requestor.py +0 -0
  39. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/_common/experimental/write_up_agent/README.md +0 -0
  40. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/_common/experimental/write_up_agent/__init__.py +0 -0
  41. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/_common/experimental/write_up_agent/agent.py +0 -0
  42. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/_common/experimental/write_up_agent/config.py +0 -0
  43. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/_common/experimental/write_up_agent/examples/data.csv +0 -0
  44. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/_common/experimental/write_up_agent/examples/example_usage.py +0 -0
  45. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/_common/experimental/write_up_agent/schemas.py +0 -0
  46. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/_common/experimental/write_up_agent/services/__init__.py +0 -0
  47. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/_common/experimental/write_up_agent/services/dataframe_handler/__init__.py +0 -0
  48. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/_common/experimental/write_up_agent/services/dataframe_handler/exceptions.py +0 -0
  49. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/_common/experimental/write_up_agent/services/dataframe_handler/service.py +0 -0
  50. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/_common/experimental/write_up_agent/services/dataframe_handler/utils.py +0 -0
  51. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/__init__.py +0 -0
  52. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/config.py +0 -0
  53. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/exceptions.py +0 -0
  54. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/prompts/config.py +0 -0
  55. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/prompts/system_prompt.j2 +0 -0
  56. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/prompts/user_prompt.j2 +0 -0
  57. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/service.py +0 -0
  58. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/_common/experimental/write_up_agent/services/template_handler/__init__.py +0 -0
  59. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/_common/experimental/write_up_agent/services/template_handler/default_template.j2 +0 -0
  60. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/_common/experimental/write_up_agent/services/template_handler/exceptions.py +0 -0
  61. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/_common/experimental/write_up_agent/services/template_handler/service.py +0 -0
  62. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/_common/experimental/write_up_agent/services/template_handler/utils.py +0 -0
  63. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/_common/experimental/write_up_agent/utils.py +0 -0
  64. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/_common/feature_flags/schema.py +0 -0
  65. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/_common/pydantic/rjsf_tags.py +0 -0
  66. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/_common/pydantic_helpers.py +0 -0
  67. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/_common/referencing.py +0 -0
  68. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/_common/string_utilities.py +0 -0
  69. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/_common/tests/test_referencing.py +0 -0
  70. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/_common/tests/test_string_utilities.py +0 -0
  71. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/_common/token/__init__.py +0 -0
  72. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/_common/token/image_token_counting.py +0 -0
  73. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/_common/token/token_counting.py +0 -0
  74. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/_common/token/tokenizers/deepseek/tokenizer.json +0 -0
  75. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/_common/token/tokenizers/qwen/tokenizer.json +0 -0
  76. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/_common/utils/__init__.py +0 -0
  77. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/_common/utils/files.py +0 -0
  78. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/_common/utils/image/encode.py +0 -0
  79. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/_common/utils/jinja/helpers.py +0 -0
  80. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/_common/utils/jinja/render.py +0 -0
  81. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/_common/utils/jinja/schema.py +0 -0
  82. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/_common/utils/jinja/utils.py +0 -0
  83. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/_common/utils/structured_output/__init__.py +0 -0
  84. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/_common/utils/structured_output/schema.py +0 -0
  85. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/_common/utils/write_configuration.py +0 -0
  86. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/_common/validate_required_values.py +0 -0
  87. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/_common/validators.py +0 -0
  88. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/agentic/__init__.py +0 -0
  89. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/agentic/debug_info_manager/debug_info_manager.py +0 -0
  90. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/agentic/debug_info_manager/test/test_debug_info_manager.py +0 -0
  91. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/agentic/evaluation/config.py +0 -0
  92. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/agentic/evaluation/context_relevancy/prompts/__init__.py +0 -0
  93. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/agentic/evaluation/context_relevancy/prompts/system_prompt.j2 +0 -0
  94. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/agentic/evaluation/context_relevancy/prompts/user_prompt.j2 +0 -0
  95. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/agentic/evaluation/context_relevancy/schema.py +0 -0
  96. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/agentic/evaluation/context_relevancy/service.py +0 -0
  97. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/agentic/evaluation/evaluation_manager.py +0 -0
  98. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/agentic/evaluation/exception.py +0 -0
  99. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/agentic/evaluation/hallucination/constants.py +0 -0
  100. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/agentic/evaluation/hallucination/hallucination_evaluation.py +0 -0
  101. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/agentic/evaluation/hallucination/prompts/__init__.py +0 -0
  102. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/agentic/evaluation/hallucination/prompts/system_prompt.j2 +0 -0
  103. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/agentic/evaluation/hallucination/prompts/user_prompt.j2 +0 -0
  104. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/agentic/evaluation/hallucination/service.py +0 -0
  105. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/agentic/evaluation/hallucination/utils.py +0 -0
  106. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/agentic/evaluation/output_parser.py +0 -0
  107. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/agentic/evaluation/schemas.py +0 -0
  108. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/agentic/evaluation/tests/fixtures.py +0 -0
  109. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/agentic/evaluation/tests/test_config.py +0 -0
  110. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/agentic/evaluation/tests/test_context_relevancy_service.py +0 -0
  111. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/agentic/evaluation/tests/test_hallucination_constants.py +0 -0
  112. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/agentic/evaluation/tests/test_hallucination_utils.py +0 -0
  113. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/agentic/evaluation/tests/test_output_parser.py +0 -0
  114. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/agentic/evaluation/tests/test_prompt_loaders.py +0 -0
  115. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/agentic/evaluation/utils.py +0 -0
  116. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/agentic/feature_flags/__init__.py +0 -0
  117. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/agentic/feature_flags/feature_flags.py +0 -0
  118. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/agentic/history_manager/history_construction_with_contents.py +0 -0
  119. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/agentic/history_manager/history_manager.py +0 -0
  120. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/agentic/history_manager/loop_token_reducer.py +0 -0
  121. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/agentic/history_manager/utils.py +0 -0
  122. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/agentic/loop_runner/__init__.py +0 -0
  123. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/agentic/loop_runner/_iteration_handler_utils.py +0 -0
  124. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/agentic/loop_runner/_responses_iteration_handler_utils.py +0 -0
  125. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/agentic/loop_runner/_responses_stream_handler_utils.py +0 -0
  126. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/agentic/loop_runner/_stream_handler_utils.py +0 -0
  127. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/agentic/loop_runner/base.py +0 -0
  128. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/agentic/loop_runner/middleware/__init__.py +0 -0
  129. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/agentic/loop_runner/middleware/planning/__init__.py +0 -0
  130. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/agentic/loop_runner/middleware/planning/planning.py +0 -0
  131. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/agentic/loop_runner/middleware/planning/schema.py +0 -0
  132. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/agentic/loop_runner/runners/__init__.py +0 -0
  133. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/agentic/loop_runner/runners/basic.py +0 -0
  134. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/agentic/loop_runner/runners/mistral/__init__.py +0 -0
  135. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/agentic/loop_runner/runners/mistral/mistral_runner.py +0 -0
  136. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/agentic/loop_runner/runners/qwen/__init__.py +0 -0
  137. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/agentic/loop_runner/runners/qwen/helpers.py +0 -0
  138. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/agentic/loop_runner/runners/qwen/qwen_runner.py +0 -0
  139. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/agentic/message_log_manager/__init__.py +0 -0
  140. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/agentic/message_log_manager/service.py +0 -0
  141. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/agentic/postprocessor/postprocessor_manager.py +0 -0
  142. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/agentic/reference_manager/reference_manager.py +0 -0
  143. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/agentic/responses_api/__init__.py +0 -0
  144. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/agentic/responses_api/postprocessors/code_display.py +0 -0
  145. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/agentic/responses_api/postprocessors/generated_files.py +0 -0
  146. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/agentic/responses_api/stream_handler.py +0 -0
  147. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/agentic/short_term_memory_manager/persistent_short_term_memory_manager.py +0 -0
  148. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/agentic/thinking_manager/thinking_manager.py +0 -0
  149. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/agentic/tools/__init__.py +0 -0
  150. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/agentic/tools/a2a/__init__.py +0 -0
  151. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/agentic/tools/a2a/config.py +0 -0
  152. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/agentic/tools/a2a/evaluation/__init__.py +0 -0
  153. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/agentic/tools/a2a/evaluation/_utils.py +0 -0
  154. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/agentic/tools/a2a/evaluation/config.py +0 -0
  155. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/agentic/tools/a2a/evaluation/evaluator.py +0 -0
  156. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/agentic/tools/a2a/evaluation/summarization_user_message.j2 +0 -0
  157. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/agentic/tools/a2a/manager.py +0 -0
  158. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/agentic/tools/a2a/postprocessing/__init__.py +0 -0
  159. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/agentic/tools/a2a/postprocessing/_display_utils.py +0 -0
  160. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/agentic/tools/a2a/postprocessing/_ref_utils.py +0 -0
  161. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/agentic/tools/a2a/postprocessing/config.py +0 -0
  162. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/agentic/tools/a2a/postprocessing/display.py +0 -0
  163. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/agentic/tools/a2a/postprocessing/references.py +0 -0
  164. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/agentic/tools/a2a/postprocessing/test/test_display.py +0 -0
  165. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/agentic/tools/a2a/postprocessing/test/test_display_utils.py +0 -0
  166. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/agentic/tools/a2a/postprocessing/test/test_ref_utils.py +0 -0
  167. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/agentic/tools/a2a/prompts.py +0 -0
  168. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/agentic/tools/a2a/response_watcher/__init__.py +0 -0
  169. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/agentic/tools/a2a/response_watcher/service.py +0 -0
  170. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/agentic/tools/a2a/tool/__init__.py +0 -0
  171. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/agentic/tools/a2a/tool/_memory.py +0 -0
  172. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/agentic/tools/a2a/tool/_schema.py +0 -0
  173. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/agentic/tools/a2a/tool/config.py +0 -0
  174. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/agentic/tools/a2a/tool/service.py +0 -0
  175. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/agentic/tools/a2a/tool/test/test_service_utils.py +0 -0
  176. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/agentic/tools/agent_chunks_hanlder.py +0 -0
  177. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/agentic/tools/config.py +0 -0
  178. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/agentic/tools/experimental/__init__.py +0 -0
  179. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/agentic/tools/experimental/open_file_tool/__init__.py +0 -0
  180. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/agentic/tools/experimental/open_file_tool/config.py +0 -0
  181. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/agentic/tools/experimental/open_file_tool/runtime.py +0 -0
  182. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/agentic/tools/experimental/open_file_tool/tool.py +0 -0
  183. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/agentic/tools/factory.py +0 -0
  184. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/agentic/tools/mcp/__init__.py +0 -0
  185. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/agentic/tools/mcp/manager.py +0 -0
  186. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/agentic/tools/mcp/models.py +0 -0
  187. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/agentic/tools/mcp/tool_wrapper.py +0 -0
  188. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/agentic/tools/openai_builtin/__init__.py +0 -0
  189. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/agentic/tools/openai_builtin/base.py +0 -0
  190. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/__init__.py +0 -0
  191. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/config.py +0 -0
  192. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/postprocessors/__init__.py +0 -0
  193. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/postprocessors/code_display.py +0 -0
  194. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/schemas.py +0 -0
  195. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/service.py +0 -0
  196. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/agentic/tools/openai_builtin/manager.py +0 -0
  197. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/agentic/tools/schemas.py +0 -0
  198. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/agentic/tools/test/test_mcp_manager.py +0 -0
  199. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/agentic/tools/test/test_tool_progress_reporter.py +0 -0
  200. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/agentic/tools/tool.py +0 -0
  201. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/agentic/tools/tool_manager.py +0 -0
  202. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/agentic/tools/tool_progress_reporter.py +0 -0
  203. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/agentic/tools/utils/__init__.py +0 -0
  204. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/agentic/tools/utils/source_handling/__init__.py +0 -0
  205. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/agentic/tools/utils/source_handling/schema.py +0 -0
  206. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/agentic/tools/utils/source_handling/source_formatting.py +0 -0
  207. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/agentic/tools/utils/source_handling/tests/test_source_formatting.py +0 -0
  208. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/agentic_table/__init__.py +0 -0
  209. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/agentic_table/schemas.py +0 -0
  210. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/agentic_table/service.py +0 -0
  211. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/app/__init__.py +0 -0
  212. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/app/dev_util.py +0 -0
  213. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/app/fast_api_factory.py +0 -0
  214. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/app/init_logging.py +0 -0
  215. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/app/init_sdk.py +0 -0
  216. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/app/performance/async_tasks.py +0 -0
  217. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/app/performance/async_wrapper.py +0 -0
  218. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/app/schemas.py +0 -0
  219. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/app/unique_settings.py +0 -0
  220. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/app/verification.py +0 -0
  221. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/app/webhook.py +0 -0
  222. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/chat/__init__.py +0 -0
  223. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/chat/cancellation.py +0 -0
  224. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/chat/constants.py +0 -0
  225. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/chat/deprecated/service.py +0 -0
  226. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/chat/functions.py +0 -0
  227. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/chat/rendering.py +0 -0
  228. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/chat/responses_api.py +0 -0
  229. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/chat/schemas.py +0 -0
  230. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/chat/service.py +0 -0
  231. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/chat/state.py +0 -0
  232. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/chat/utils.py +0 -0
  233. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/content/__init__.py +0 -0
  234. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/content/constants.py +0 -0
  235. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/content/functions.py +0 -0
  236. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/content/schemas.py +0 -0
  237. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/content/service.py +0 -0
  238. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/content/smart_rules.py +0 -0
  239. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/content/utils.py +0 -0
  240. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/data_extraction/README.md +0 -0
  241. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/data_extraction/__init__.py +0 -0
  242. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/data_extraction/augmented/__init__.py +0 -0
  243. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/data_extraction/augmented/service.py +0 -0
  244. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/data_extraction/base.py +0 -0
  245. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/data_extraction/basic/__init__.py +0 -0
  246. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/data_extraction/basic/config.py +0 -0
  247. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/data_extraction/basic/prompt.py +0 -0
  248. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/data_extraction/basic/service.py +0 -0
  249. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/elicitation/__init__.py +0 -0
  250. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/elicitation/constants.py +0 -0
  251. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/elicitation/exceptions.py +0 -0
  252. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/elicitation/functions.py +0 -0
  253. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/elicitation/schemas.py +0 -0
  254. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/elicitation/service.py +0 -0
  255. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/embedding/__init__.py +0 -0
  256. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/embedding/constants.py +0 -0
  257. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/embedding/functions.py +0 -0
  258. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/embedding/schemas.py +0 -0
  259. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/embedding/service.py +0 -0
  260. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/embedding/utils.py +0 -0
  261. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/framework_utilities/__init__.py +0 -0
  262. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/framework_utilities/langchain/__init__.py +0 -0
  263. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/framework_utilities/langchain/client.py +0 -0
  264. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/framework_utilities/langchain/history.py +0 -0
  265. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/framework_utilities/openai/__init__.py +0 -0
  266. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/framework_utilities/openai/client.py +0 -0
  267. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/framework_utilities/openai/message_builder.py +0 -0
  268. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/framework_utilities/utils.py +0 -0
  269. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/language_model/__init__.py +0 -0
  270. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/language_model/_responses_api_utils.py +0 -0
  271. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/language_model/builder.py +0 -0
  272. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/language_model/constants.py +0 -0
  273. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/language_model/default_language_model.py +0 -0
  274. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/language_model/functions.py +0 -0
  275. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/language_model/infos.py +0 -0
  276. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/language_model/prompt.py +0 -0
  277. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/language_model/reference.py +0 -0
  278. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/language_model/schemas.py +0 -0
  279. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/language_model/service.py +0 -0
  280. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/language_model/stream_transform.py +0 -0
  281. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/language_model/utils.py +0 -0
  282. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/monitoring/__init__.py +0 -0
  283. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/monitoring/middleware.py +0 -0
  284. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/monitoring/registry.py +0 -0
  285. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/protocols/support.py +0 -0
  286. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/services/__init__.py +0 -0
  287. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/services/chat_service.py +0 -0
  288. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/services/factory.py +0 -0
  289. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/services/knowledge_base.py +0 -0
  290. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/short_term_memory/__init__.py +0 -0
  291. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/short_term_memory/constants.py +0 -0
  292. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/short_term_memory/functions.py +0 -0
  293. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/short_term_memory/schemas.py +0 -0
  294. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/short_term_memory/service.py +0 -0
  295. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/smart_rules/__init__.py +0 -0
  296. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/unique_toolkit/smart_rules/compile.py +0 -0
  297. {unique_toolkit-1.70.6 → unique_toolkit-1.70.8}/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.70.6
3
+ Version: 1.70.8
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.70.6"
3
+ version = "1.70.8"
4
4
  description = ""
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.12"
@@ -21,6 +21,7 @@ from tenacity import (
21
21
 
22
22
  from unique_toolkit import ChatService
23
23
  from unique_toolkit._common.execution import failsafe_async
24
+ from unique_toolkit._common.utils.files import FileMimeType, ImageMimeType
24
25
  from unique_toolkit.agentic.feature_flags.feature_flags import feature_flags
25
26
  from unique_toolkit.agentic.postprocessor.postprocessor_manager import (
26
27
  ResponsesApiPostprocessor,
@@ -586,12 +587,7 @@ class DisplayCodeInterpreterFilesPostProcessor(
586
587
  missed_files.append(filename)
587
588
 
588
589
  is_html_rendered = is_html
589
- has_superscript = f"<sup>{ref_number}</sup>" in loop_response.message.text
590
- if (
591
- replaced
592
- and has_superscript
593
- and not (is_image or is_html_rendered or fence_ff_on)
594
- ):
590
+ if replaced and not (is_image or is_html_rendered or fence_ff_on):
595
591
  loop_response.message.references.append(
596
592
  ContentReference(
597
593
  sequence_number=ref_number,
@@ -617,16 +613,7 @@ class DisplayCodeInterpreterFilesPostProcessor(
617
613
  len(code_blocks),
618
614
  [f.filename for b in code_blocks for f in b.files],
619
615
  )
620
- unmatched_blocks = _warn_unmatched_code_blocks(
621
- self._content_map, code_blocks
622
- )
623
- if unmatched_blocks:
624
- self._log.info(
625
- "Fence path: %d file(s) have no code-block match and will appear "
626
- "as plain download links: %s",
627
- len(unmatched_blocks),
628
- list(unmatched_blocks),
629
- )
616
+ _warn_unmatched_code_blocks(self._content_map, code_blocks)
630
617
  text_before = loop_response.message.text
631
618
  loop_response.message.text = _inject_code_execution_fences(
632
619
  loop_response.message.text,
@@ -718,7 +705,16 @@ class DisplayCodeInterpreterFilesPostProcessor(
718
705
  container_file.filename, "uploading", force_publish=True
719
706
  )
720
707
 
721
- mime = guess_type(container_file.filename)[0] or "text/plain"
708
+ raw_mime = guess_type(container_file.filename)[0] or "text/plain"
709
+ mime = _kb_safe_mime(raw_mime)
710
+ if mime != raw_mime:
711
+ self._log.info(
712
+ "MIME type '%s' is not supported by the Unique KB; "
713
+ "uploading '%s' as '%s' so the file can be stored and downloaded.",
714
+ raw_mime,
715
+ container_file.filename,
716
+ mime,
717
+ )
722
718
  self._log.info(
723
719
  "Uploading '%s' to knowledge base (mime=%s, %d bytes)",
724
720
  container_file.filename,
@@ -1045,6 +1041,37 @@ def _get_file_type(filename: str) -> CodeInterpreterFileType:
1045
1041
  return "document"
1046
1042
 
1047
1043
 
1044
+ def _kb_safe_mime(mime: str) -> str:
1045
+ """Return a MIME type the Unique KB will accept.
1046
+
1047
+ Membership is defined by ``FileMimeType`` and ``ImageMimeType`` in
1048
+ ``unique_toolkit._common.utils.files`` (same catalog as path-based helpers
1049
+ like ``FileMimeType.is_valid_mime``, but here we already have a resolved
1050
+ MIME string from ``mimetypes.guess_type``, so we use StrEnum value lookup
1051
+ instead of re-parsing a path).
1052
+
1053
+ The KB GraphQL API rejects many code-file MIME types (e.g. ``text/x-python``
1054
+ for ``.py`` files). Anything not in those enums is coerced to
1055
+ ``text/plain`` so the file can be stored and downloaded without changing
1056
+ its bytes.
1057
+
1058
+ Other ``image/*`` subtypes (e.g. ``image/jpg``) still pass through unchanged.
1059
+ """
1060
+ try:
1061
+ FileMimeType(mime)
1062
+ return mime
1063
+ except ValueError:
1064
+ pass
1065
+ try:
1066
+ ImageMimeType(mime)
1067
+ return mime
1068
+ except ValueError:
1069
+ pass
1070
+ if mime.startswith("image/"):
1071
+ return mime
1072
+ return "text/plain"
1073
+
1074
+
1048
1075
  def _file_title(filename: str) -> str:
1049
1076
  """Derive a human-readable title from a filename.
1050
1077
 
@@ -1401,7 +1428,7 @@ def _replace_dangling_sandbox_links(text: str) -> tuple[str, bool]:
1401
1428
  def _warn_unmatched_code_blocks(
1402
1429
  content_map: dict[str, str | None],
1403
1430
  code_blocks: list[CodeInterpreterBlock],
1404
- ) -> dict[str, str]:
1431
+ ) -> None:
1405
1432
  """Warn for files that were uploaded but could not be matched to any code block.
1406
1433
 
1407
1434
  When the fence feature flag is on, every uploaded file should map to a code block
@@ -1409,13 +1436,8 @@ def _warn_unmatched_code_blocks(
1409
1436
  matched (e.g. the LLM used a variable for the output path rather than a literal
1410
1437
  string) it falls back to a plain unique://content/ link with no code context.
1411
1438
  The user can still download it, but the frontend artifact UI will not be shown.
1412
-
1413
- Returns:
1414
- Mapping of filename → content_id for every file that could not be matched
1415
- to a code block. Callers may use this to inject additional fallback links.
1416
1439
  """
1417
1440
  fenced_filenames = {f.filename for block in code_blocks for f in block.files}
1418
- unmatched: dict[str, str] = {}
1419
1441
  for filename, content_id in content_map.items():
1420
1442
  if content_id is None:
1421
1443
  continue
@@ -1431,8 +1453,6 @@ def _warn_unmatched_code_blocks(
1431
1453
  content_id,
1432
1454
  filename,
1433
1455
  )
1434
- unmatched[filename] = content_id
1435
- return unmatched
1436
1456
 
1437
1457
 
1438
1458
  def _get_next_ref_number(references: list[ContentReference] | None) -> int:
@@ -1473,12 +1493,11 @@ def _replace_container_image_citation(
1473
1493
  if not re.search(image_markdown, text):
1474
1494
  logger.warning(
1475
1495
  "No sandbox link found for image '%s' (content_id=%s); "
1476
- "file was uploaded but the LLM did not reference it — appending fallback link.",
1496
+ "file was uploaded but the LLM did not reference it — it will not be displayed.",
1477
1497
  filename,
1478
1498
  content_id,
1479
1499
  )
1480
- fallback = f"\n\n📎 [{filename}](unique://content/{content_id})"
1481
- return text + fallback, True
1500
+ return text, False
1482
1501
 
1483
1502
  logger.info("Inserting image citation for '%s'", filename)
1484
1503
  return re.sub(
@@ -1497,12 +1516,11 @@ def _replace_container_html_citation(
1497
1516
  if not re.search(html_markdown, text):
1498
1517
  logger.warning(
1499
1518
  "No sandbox link found for HTML file '%s' (content_id=%s); "
1500
- "file was uploaded but the LLM did not reference it — appending fallback link.",
1519
+ "file was uploaded but the LLM did not reference it — it will not be displayed.",
1501
1520
  filename,
1502
1521
  content_id,
1503
1522
  )
1504
- fallback = f"\n\n📎 [{filename}](unique://content/{content_id})"
1505
- return text + fallback, True
1523
+ return text, False
1506
1524
 
1507
1525
  logger.info("Inserting HTML rendering block for '%s'", filename)
1508
1526
  block = f"```HtmlRendering\n800px\n600px\n\nunique://content/{content_id}\n\n```"
@@ -1555,12 +1573,11 @@ def _replace_container_file_citation(
1555
1573
  if not re.search(file_markdown, text):
1556
1574
  logger.warning(
1557
1575
  "No sandbox link found for file '%s' (content_id=%s); "
1558
- "file was uploaded but the LLM did not reference it — appending fallback link.",
1576
+ "file was uploaded but the LLM did not reference it — it will not be displayed.",
1559
1577
  filename,
1560
1578
  content_id,
1561
1579
  )
1562
- fallback = f"\n\n📎 [{filename}](unique://content/{content_id})"
1563
- return text + fallback, True
1580
+ return text, False
1564
1581
 
1565
1582
  logger.info("Displaying file %s", filename)
1566
1583
  replacement = (