unique_toolkit 1.68.9__tar.gz → 1.68.10__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 (294) hide show
  1. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/PKG-INFO +1 -1
  2. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/pyproject.toml +1 -1
  3. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/postprocessors/generated_files.py +145 -26
  4. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/README.md +0 -0
  5. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/__init__.py +0 -0
  6. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/_common/__init__.py +0 -0
  7. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/_common/_base_service.py +0 -0
  8. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/_common/_time_utils.py +0 -0
  9. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/_common/api_calling/human_verification_manager.py +0 -0
  10. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/_common/base_model_type_attribute.py +0 -0
  11. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/_common/chunk_relevancy_sorter/config.py +0 -0
  12. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/_common/chunk_relevancy_sorter/exception.py +0 -0
  13. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/_common/chunk_relevancy_sorter/schemas.py +0 -0
  14. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/_common/chunk_relevancy_sorter/service.py +0 -0
  15. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/_common/chunk_relevancy_sorter/tests/test_service.py +0 -0
  16. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/_common/config_checker/README.md +0 -0
  17. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/_common/config_checker/__init__.py +0 -0
  18. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/_common/config_checker/__main__.py +0 -0
  19. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/_common/config_checker/cli.py +0 -0
  20. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/_common/config_checker/differ.py +0 -0
  21. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/_common/config_checker/exporter.py +0 -0
  22. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/_common/config_checker/models.py +0 -0
  23. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/_common/config_checker/registry.py +0 -0
  24. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/_common/config_checker/validator.py +0 -0
  25. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/_common/default_language_model.py +0 -0
  26. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/_common/docx_generator/__init__.py +0 -0
  27. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/_common/docx_generator/config.py +0 -0
  28. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/_common/docx_generator/pandoc_converter.py +0 -0
  29. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/_common/docx_generator/schemas.py +0 -0
  30. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/_common/docx_generator/service.py +0 -0
  31. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/_common/docx_generator/template/Doc Template.docx +0 -0
  32. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/_common/endpoint_builder.py +0 -0
  33. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/_common/endpoint_requestor.py +0 -0
  34. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/_common/event_bus.py +0 -0
  35. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/_common/exception.py +0 -0
  36. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/_common/execution.py +0 -0
  37. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/_common/experimental/endpoint_builder.py +0 -0
  38. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/_common/experimental/endpoint_requestor.py +0 -0
  39. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/_common/experimental/write_up_agent/README.md +0 -0
  40. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/_common/experimental/write_up_agent/__init__.py +0 -0
  41. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/_common/experimental/write_up_agent/agent.py +0 -0
  42. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/_common/experimental/write_up_agent/config.py +0 -0
  43. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/_common/experimental/write_up_agent/examples/data.csv +0 -0
  44. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/_common/experimental/write_up_agent/examples/example_usage.py +0 -0
  45. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/_common/experimental/write_up_agent/schemas.py +0 -0
  46. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/_common/experimental/write_up_agent/services/__init__.py +0 -0
  47. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/_common/experimental/write_up_agent/services/dataframe_handler/__init__.py +0 -0
  48. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/_common/experimental/write_up_agent/services/dataframe_handler/exceptions.py +0 -0
  49. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/_common/experimental/write_up_agent/services/dataframe_handler/service.py +0 -0
  50. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/_common/experimental/write_up_agent/services/dataframe_handler/utils.py +0 -0
  51. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/__init__.py +0 -0
  52. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/config.py +0 -0
  53. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/exceptions.py +0 -0
  54. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/prompts/config.py +0 -0
  55. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/prompts/system_prompt.j2 +0 -0
  56. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/prompts/user_prompt.j2 +0 -0
  57. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/service.py +0 -0
  58. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/_common/experimental/write_up_agent/services/template_handler/__init__.py +0 -0
  59. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/_common/experimental/write_up_agent/services/template_handler/default_template.j2 +0 -0
  60. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/_common/experimental/write_up_agent/services/template_handler/exceptions.py +0 -0
  61. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/_common/experimental/write_up_agent/services/template_handler/service.py +0 -0
  62. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/_common/experimental/write_up_agent/services/template_handler/utils.py +0 -0
  63. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/_common/experimental/write_up_agent/utils.py +0 -0
  64. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/_common/feature_flags/schema.py +0 -0
  65. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/_common/pydantic/rjsf_tags.py +0 -0
  66. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/_common/pydantic_helpers.py +0 -0
  67. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/_common/referencing.py +0 -0
  68. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/_common/string_utilities.py +0 -0
  69. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/_common/tests/test_referencing.py +0 -0
  70. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/_common/tests/test_string_utilities.py +0 -0
  71. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/_common/token/__init__.py +0 -0
  72. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/_common/token/image_token_counting.py +0 -0
  73. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/_common/token/token_counting.py +0 -0
  74. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/_common/token/tokenizers/deepseek/tokenizer.json +0 -0
  75. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/_common/token/tokenizers/qwen/tokenizer.json +0 -0
  76. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/_common/utils/__init__.py +0 -0
  77. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/_common/utils/files.py +0 -0
  78. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/_common/utils/image/encode.py +0 -0
  79. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/_common/utils/jinja/helpers.py +0 -0
  80. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/_common/utils/jinja/render.py +0 -0
  81. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/_common/utils/jinja/schema.py +0 -0
  82. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/_common/utils/jinja/utils.py +0 -0
  83. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/_common/utils/structured_output/__init__.py +0 -0
  84. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/_common/utils/structured_output/schema.py +0 -0
  85. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/_common/utils/write_configuration.py +0 -0
  86. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/_common/validate_required_values.py +0 -0
  87. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/_common/validators.py +0 -0
  88. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/agentic/__init__.py +0 -0
  89. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/agentic/debug_info_manager/debug_info_manager.py +0 -0
  90. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/agentic/debug_info_manager/test/test_debug_info_manager.py +0 -0
  91. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/agentic/evaluation/config.py +0 -0
  92. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/agentic/evaluation/context_relevancy/prompts/__init__.py +0 -0
  93. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/agentic/evaluation/context_relevancy/prompts/system_prompt.j2 +0 -0
  94. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/agentic/evaluation/context_relevancy/prompts/user_prompt.j2 +0 -0
  95. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/agentic/evaluation/context_relevancy/schema.py +0 -0
  96. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/agentic/evaluation/context_relevancy/service.py +0 -0
  97. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/agentic/evaluation/evaluation_manager.py +0 -0
  98. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/agentic/evaluation/exception.py +0 -0
  99. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/agentic/evaluation/hallucination/constants.py +0 -0
  100. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/agentic/evaluation/hallucination/hallucination_evaluation.py +0 -0
  101. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/agentic/evaluation/hallucination/prompts/__init__.py +0 -0
  102. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/agentic/evaluation/hallucination/prompts/system_prompt.j2 +0 -0
  103. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/agentic/evaluation/hallucination/prompts/user_prompt.j2 +0 -0
  104. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/agentic/evaluation/hallucination/service.py +0 -0
  105. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/agentic/evaluation/hallucination/utils.py +0 -0
  106. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/agentic/evaluation/output_parser.py +0 -0
  107. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/agentic/evaluation/schemas.py +0 -0
  108. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/agentic/evaluation/tests/fixtures.py +0 -0
  109. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/agentic/evaluation/tests/test_config.py +0 -0
  110. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/agentic/evaluation/tests/test_context_relevancy_service.py +0 -0
  111. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/agentic/evaluation/tests/test_hallucination_constants.py +0 -0
  112. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/agentic/evaluation/tests/test_hallucination_utils.py +0 -0
  113. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/agentic/evaluation/tests/test_output_parser.py +0 -0
  114. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/agentic/evaluation/tests/test_prompt_loaders.py +0 -0
  115. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/agentic/evaluation/utils.py +0 -0
  116. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/agentic/feature_flags/__init__.py +0 -0
  117. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/agentic/feature_flags/feature_flags.py +0 -0
  118. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/agentic/history_manager/history_construction_with_contents.py +0 -0
  119. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/agentic/history_manager/history_manager.py +0 -0
  120. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/agentic/history_manager/loop_token_reducer.py +0 -0
  121. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/agentic/history_manager/utils.py +0 -0
  122. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/agentic/loop_runner/__init__.py +0 -0
  123. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/agentic/loop_runner/_iteration_handler_utils.py +0 -0
  124. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/agentic/loop_runner/_responses_iteration_handler_utils.py +0 -0
  125. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/agentic/loop_runner/_responses_stream_handler_utils.py +0 -0
  126. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/agentic/loop_runner/_stream_handler_utils.py +0 -0
  127. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/agentic/loop_runner/base.py +0 -0
  128. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/agentic/loop_runner/middleware/__init__.py +0 -0
  129. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/agentic/loop_runner/middleware/planning/__init__.py +0 -0
  130. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/agentic/loop_runner/middleware/planning/planning.py +0 -0
  131. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/agentic/loop_runner/middleware/planning/schema.py +0 -0
  132. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/agentic/loop_runner/runners/__init__.py +0 -0
  133. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/agentic/loop_runner/runners/basic.py +0 -0
  134. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/agentic/loop_runner/runners/mistral/__init__.py +0 -0
  135. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/agentic/loop_runner/runners/mistral/mistral_runner.py +0 -0
  136. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/agentic/loop_runner/runners/qwen/__init__.py +0 -0
  137. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/agentic/loop_runner/runners/qwen/helpers.py +0 -0
  138. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/agentic/loop_runner/runners/qwen/qwen_runner.py +0 -0
  139. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/agentic/message_log_manager/__init__.py +0 -0
  140. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/agentic/message_log_manager/service.py +0 -0
  141. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/agentic/postprocessor/postprocessor_manager.py +0 -0
  142. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/agentic/reference_manager/reference_manager.py +0 -0
  143. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/agentic/responses_api/__init__.py +0 -0
  144. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/agentic/responses_api/postprocessors/code_display.py +0 -0
  145. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/agentic/responses_api/postprocessors/generated_files.py +0 -0
  146. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/agentic/responses_api/stream_handler.py +0 -0
  147. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/agentic/short_term_memory_manager/persistent_short_term_memory_manager.py +0 -0
  148. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/agentic/thinking_manager/thinking_manager.py +0 -0
  149. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/agentic/tools/__init__.py +0 -0
  150. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/agentic/tools/a2a/__init__.py +0 -0
  151. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/agentic/tools/a2a/config.py +0 -0
  152. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/agentic/tools/a2a/evaluation/__init__.py +0 -0
  153. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/agentic/tools/a2a/evaluation/_utils.py +0 -0
  154. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/agentic/tools/a2a/evaluation/config.py +0 -0
  155. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/agentic/tools/a2a/evaluation/evaluator.py +0 -0
  156. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/agentic/tools/a2a/evaluation/summarization_user_message.j2 +0 -0
  157. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/agentic/tools/a2a/manager.py +0 -0
  158. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/agentic/tools/a2a/postprocessing/__init__.py +0 -0
  159. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/agentic/tools/a2a/postprocessing/_display_utils.py +0 -0
  160. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/agentic/tools/a2a/postprocessing/_ref_utils.py +0 -0
  161. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/agentic/tools/a2a/postprocessing/config.py +0 -0
  162. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/agentic/tools/a2a/postprocessing/display.py +0 -0
  163. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/agentic/tools/a2a/postprocessing/references.py +0 -0
  164. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/agentic/tools/a2a/postprocessing/test/test_display.py +0 -0
  165. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/agentic/tools/a2a/postprocessing/test/test_display_utils.py +0 -0
  166. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/agentic/tools/a2a/postprocessing/test/test_ref_utils.py +0 -0
  167. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/agentic/tools/a2a/prompts.py +0 -0
  168. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/agentic/tools/a2a/response_watcher/__init__.py +0 -0
  169. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/agentic/tools/a2a/response_watcher/service.py +0 -0
  170. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/agentic/tools/a2a/tool/__init__.py +0 -0
  171. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/agentic/tools/a2a/tool/_memory.py +0 -0
  172. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/agentic/tools/a2a/tool/_schema.py +0 -0
  173. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/agentic/tools/a2a/tool/config.py +0 -0
  174. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/agentic/tools/a2a/tool/service.py +0 -0
  175. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/agentic/tools/a2a/tool/test/test_service_utils.py +0 -0
  176. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/agentic/tools/agent_chunks_hanlder.py +0 -0
  177. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/agentic/tools/config.py +0 -0
  178. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/agentic/tools/experimental/__init__.py +0 -0
  179. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/agentic/tools/experimental/open_file_tool/__init__.py +0 -0
  180. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/agentic/tools/experimental/open_file_tool/config.py +0 -0
  181. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/agentic/tools/experimental/open_file_tool/runtime.py +0 -0
  182. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/agentic/tools/experimental/open_file_tool/tool.py +0 -0
  183. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/agentic/tools/factory.py +0 -0
  184. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/agentic/tools/mcp/__init__.py +0 -0
  185. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/agentic/tools/mcp/manager.py +0 -0
  186. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/agentic/tools/mcp/models.py +0 -0
  187. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/agentic/tools/mcp/tool_wrapper.py +0 -0
  188. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/agentic/tools/openai_builtin/__init__.py +0 -0
  189. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/agentic/tools/openai_builtin/base.py +0 -0
  190. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/__init__.py +0 -0
  191. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/config.py +0 -0
  192. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/postprocessors/__init__.py +0 -0
  193. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/postprocessors/code_display.py +0 -0
  194. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/schemas.py +0 -0
  195. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/service.py +0 -0
  196. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/agentic/tools/openai_builtin/manager.py +0 -0
  197. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/agentic/tools/schemas.py +0 -0
  198. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/agentic/tools/test/test_mcp_manager.py +0 -0
  199. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/agentic/tools/test/test_tool_progress_reporter.py +0 -0
  200. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/agentic/tools/tool.py +0 -0
  201. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/agentic/tools/tool_manager.py +0 -0
  202. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/agentic/tools/tool_progress_reporter.py +0 -0
  203. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/agentic/tools/utils/__init__.py +0 -0
  204. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/agentic/tools/utils/source_handling/__init__.py +0 -0
  205. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/agentic/tools/utils/source_handling/schema.py +0 -0
  206. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/agentic/tools/utils/source_handling/source_formatting.py +0 -0
  207. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/agentic/tools/utils/source_handling/tests/test_source_formatting.py +0 -0
  208. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/agentic_table/__init__.py +0 -0
  209. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/agentic_table/schemas.py +0 -0
  210. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/agentic_table/service.py +0 -0
  211. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/app/__init__.py +0 -0
  212. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/app/dev_util.py +0 -0
  213. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/app/fast_api_factory.py +0 -0
  214. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/app/init_logging.py +0 -0
  215. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/app/init_sdk.py +0 -0
  216. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/app/performance/async_tasks.py +0 -0
  217. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/app/performance/async_wrapper.py +0 -0
  218. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/app/schemas.py +0 -0
  219. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/app/unique_settings.py +0 -0
  220. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/app/verification.py +0 -0
  221. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/app/webhook.py +0 -0
  222. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/chat/__init__.py +0 -0
  223. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/chat/cancellation.py +0 -0
  224. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/chat/constants.py +0 -0
  225. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/chat/deprecated/service.py +0 -0
  226. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/chat/functions.py +0 -0
  227. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/chat/rendering.py +0 -0
  228. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/chat/responses_api.py +0 -0
  229. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/chat/schemas.py +0 -0
  230. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/chat/service.py +0 -0
  231. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/chat/state.py +0 -0
  232. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/chat/utils.py +0 -0
  233. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/content/__init__.py +0 -0
  234. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/content/constants.py +0 -0
  235. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/content/functions.py +0 -0
  236. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/content/schemas.py +0 -0
  237. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/content/service.py +0 -0
  238. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/content/smart_rules.py +0 -0
  239. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/content/utils.py +0 -0
  240. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/data_extraction/README.md +0 -0
  241. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/data_extraction/__init__.py +0 -0
  242. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/data_extraction/augmented/__init__.py +0 -0
  243. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/data_extraction/augmented/service.py +0 -0
  244. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/data_extraction/base.py +0 -0
  245. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/data_extraction/basic/__init__.py +0 -0
  246. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/data_extraction/basic/config.py +0 -0
  247. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/data_extraction/basic/prompt.py +0 -0
  248. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/data_extraction/basic/service.py +0 -0
  249. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/elicitation/__init__.py +0 -0
  250. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/elicitation/constants.py +0 -0
  251. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/elicitation/exceptions.py +0 -0
  252. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/elicitation/functions.py +0 -0
  253. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/elicitation/schemas.py +0 -0
  254. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/elicitation/service.py +0 -0
  255. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/embedding/__init__.py +0 -0
  256. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/embedding/constants.py +0 -0
  257. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/embedding/functions.py +0 -0
  258. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/embedding/schemas.py +0 -0
  259. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/embedding/service.py +0 -0
  260. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/embedding/utils.py +0 -0
  261. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/framework_utilities/__init__.py +0 -0
  262. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/framework_utilities/langchain/__init__.py +0 -0
  263. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/framework_utilities/langchain/client.py +0 -0
  264. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/framework_utilities/langchain/history.py +0 -0
  265. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/framework_utilities/openai/__init__.py +0 -0
  266. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/framework_utilities/openai/client.py +0 -0
  267. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/framework_utilities/openai/message_builder.py +0 -0
  268. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/framework_utilities/utils.py +0 -0
  269. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/language_model/__init__.py +0 -0
  270. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/language_model/_responses_api_utils.py +0 -0
  271. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/language_model/builder.py +0 -0
  272. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/language_model/constants.py +0 -0
  273. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/language_model/default_language_model.py +0 -0
  274. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/language_model/functions.py +0 -0
  275. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/language_model/infos.py +0 -0
  276. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/language_model/prompt.py +0 -0
  277. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/language_model/reference.py +0 -0
  278. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/language_model/schemas.py +0 -0
  279. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/language_model/service.py +0 -0
  280. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/language_model/stream_transform.py +0 -0
  281. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/language_model/utils.py +0 -0
  282. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/protocols/support.py +0 -0
  283. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/services/__init__.py +0 -0
  284. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/services/chat_service.py +0 -0
  285. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/services/factory.py +0 -0
  286. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/services/knowledge_base.py +0 -0
  287. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/short_term_memory/__init__.py +0 -0
  288. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/short_term_memory/constants.py +0 -0
  289. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/short_term_memory/functions.py +0 -0
  290. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/short_term_memory/schemas.py +0 -0
  291. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/short_term_memory/service.py +0 -0
  292. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/smart_rules/__init__.py +0 -0
  293. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/unique_toolkit/smart_rules/compile.py +0 -0
  294. {unique_toolkit-1.68.9 → unique_toolkit-1.68.10}/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.68.9
3
+ Version: 1.68.10
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.68.9"
3
+ version = "1.68.10"
4
4
  description = ""
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.12"
@@ -41,6 +41,14 @@ from unique_toolkit.short_term_memory.service import ShortTermMemoryService
41
41
  logger = logging.getLogger(__name__)
42
42
 
43
43
 
44
+ class _ChatLoggerAdapter(logging.LoggerAdapter[logging.Logger]):
45
+ """LoggerAdapter that prefixes every message with ``[chat_id=…]``."""
46
+
47
+ def process(self, msg: str, kwargs): # type: ignore[override]
48
+ extra = dict(self.extra) if self.extra else {} # type: ignore[arg-type]
49
+ return f"[chat_id={extra.get('chat_id', 'n/a')}] {msg}", kwargs
50
+
51
+
44
52
  class DisplayCodeInterpreterFilesPostProcessorConfig(BaseModel):
45
53
  model_config = get_configuration_dict()
46
54
  upload_to_chat: SkipJsonSchema[bool] = Field(
@@ -53,8 +61,8 @@ class DisplayCodeInterpreterFilesPostProcessorConfig(BaseModel):
53
61
  )
54
62
 
55
63
  file_download_failed_message: str = Field(
56
- default="⚠️ File download failed ...",
57
- description="The message to display when a file download fails.",
64
+ default="⚠️ File could not be generated. Please try again.",
65
+ description="The message to display when a file download fails after all retry attempts.",
58
66
  )
59
67
  max_concurrent_file_downloads: int = Field(
60
68
  default=10,
@@ -122,6 +130,10 @@ class DisplayCodeInterpreterFilesPostProcessor(
122
130
  if self._chat_service is None:
123
131
  raise ValueError("ChatService is required if uploadToChat is True")
124
132
 
133
+ self._log: logging.LoggerAdapter[logging.Logger] = _ChatLoggerAdapter(
134
+ logger, {"chat_id": chat_id or "n/a"}
135
+ )
136
+
125
137
  self._orphan_code_blocks: list[CodeInterpreterBlock] = []
126
138
  self._short_term_memory_manager = None
127
139
  if chat_id is not None and user_id is not None and company_id is not None:
@@ -140,23 +152,33 @@ class DisplayCodeInterpreterFilesPostProcessor(
140
152
  return AsyncRetrying(
141
153
  stop=stop_after_attempt(1 + self._config.max_download_retries),
142
154
  wait=wait_exponential(multiplier=self._config.download_retry_base_delay),
143
- before_sleep=before_sleep_log(logger, logging.WARNING),
155
+ before_sleep=before_sleep_log(self._log, logging.WARNING), # type: ignore[arg-type]
144
156
  reraise=True,
145
157
  )
146
158
 
147
159
  @override
148
160
  async def run(self, loop_response: ResponsesLanguageModelStreamResponse) -> None:
149
- logger.info("Fetching and adding code interpreter files to the response")
161
+ self._log.info("run() started — fetching and uploading code interpreter files")
150
162
 
151
163
  container_files = loop_response.container_files
152
- logger.info("Found %s container files", len(container_files))
164
+ self._log.info(
165
+ "run() found %d container file annotation(s): %s",
166
+ len(container_files),
167
+ [cf.filename for cf in container_files],
168
+ )
153
169
 
154
170
  try:
155
171
  self._content_map: dict[str, str | None] = await self._load_previous_files() # type: ignore
172
+ if self._content_map:
173
+ self._log.info(
174
+ "run() loaded %d previous file(s) from short-term memory: %s",
175
+ len(self._content_map),
176
+ list(self._content_map.keys()),
177
+ )
156
178
  except Exception:
157
- logger.exception(
158
- "Failed to load previous code interpreter files from short-term "
159
- "memory; proceeding without previous file context."
179
+ self._log.exception(
180
+ "run() failed to load previous files from short-term memory; "
181
+ "proceeding without previous file context."
160
182
  )
161
183
  self._content_map = {}
162
184
 
@@ -170,11 +192,21 @@ class DisplayCodeInterpreterFilesPostProcessor(
170
192
  results = await asyncio.gather(*tasks)
171
193
 
172
194
  for citation, result in zip(container_files, results):
173
- # Overwrite if file has been re-generated
174
195
  self._content_map[citation.filename] = (
175
196
  result.content_id if result is not None else None
176
197
  )
177
198
 
199
+ succeeded = {f: cid for f, cid in self._content_map.items() if cid is not None}
200
+ failed = [f for f, cid in self._content_map.items() if cid is None]
201
+ self._log.info(
202
+ "run() download/upload complete — %d succeeded, %d failed. "
203
+ "succeeded=%s, failed=%s",
204
+ len(succeeded),
205
+ len(failed),
206
+ list(succeeded.keys()),
207
+ failed,
208
+ )
209
+
178
210
  try:
179
211
  await self._save_generated_files(
180
212
  [
@@ -184,9 +216,9 @@ class DisplayCodeInterpreterFilesPostProcessor(
184
216
  ]
185
217
  )
186
218
  except Exception:
187
- logger.exception(
188
- "Failed to save generated code interpreter files to short-term "
189
- "memory; file replacement will still proceed."
219
+ self._log.exception(
220
+ "run() failed to save generated files to short-term memory; "
221
+ "file replacement will still proceed."
190
222
  )
191
223
 
192
224
  try:
@@ -196,19 +228,39 @@ class DisplayCodeInterpreterFilesPostProcessor(
196
228
  self._orphan_code_blocks = await self._upload_orphan_code_as_txt(
197
229
  loop_response
198
230
  )
231
+ if self._orphan_code_blocks:
232
+ self._log.info(
233
+ "run() produced %d orphan code block(s)",
234
+ len(self._orphan_code_blocks),
235
+ )
199
236
  else:
200
237
  self._orphan_code_blocks = []
201
238
  except Exception:
202
- logger.exception(
203
- "Failed to process orphan code blocks; "
239
+ self._log.exception(
240
+ "run() failed to process orphan code blocks; "
204
241
  "file replacement will still proceed."
205
242
  )
206
243
  self._orphan_code_blocks = []
207
244
 
245
+ self._log.info(
246
+ "run() finished — content_map has %d entries (%d with content_id, %d failed)",
247
+ len(self._content_map),
248
+ len(succeeded),
249
+ len(failed),
250
+ )
251
+
208
252
  @override
209
253
  def apply_postprocessing_to_response(
210
254
  self, loop_response: ResponsesLanguageModelStreamResponse
211
255
  ) -> bool:
256
+ self._log.info(
257
+ "apply_postprocessing started — %d file(s) in content_map, fence_ff=%s",
258
+ len(self._content_map),
259
+ feature_flags.enable_code_execution_fence_un_17972.is_enabled(
260
+ self._company_id
261
+ ),
262
+ )
263
+
212
264
  if loop_response.message.references is None:
213
265
  loop_response.message.references = []
214
266
  if loop_response.message.text is None:
@@ -220,6 +272,10 @@ class DisplayCodeInterpreterFilesPostProcessor(
220
272
  self._company_id
221
273
  )
222
274
 
275
+ replaced_files: list[str] = []
276
+ missed_files: list[str] = []
277
+ error_files: list[str] = []
278
+
223
279
  for filename, content_id in self._content_map.items():
224
280
  if content_id is None:
225
281
  loop_response.message.text, replaced = _replace_container_file_error(
@@ -228,12 +284,14 @@ class DisplayCodeInterpreterFilesPostProcessor(
228
284
  error_message=self._config.file_download_failed_message,
229
285
  )
230
286
  changed |= replaced
287
+ error_files.append(filename)
231
288
  continue
232
289
 
233
- is_image = (guess_type(filename)[0] or "").startswith("image/")
234
- is_html = (guess_type(filename)[0] or "") == "text/html"
290
+ mime = guess_type(filename)[0] or ""
291
+ is_image = mime.startswith("image/")
292
+ is_html = mime == "text/html"
293
+ file_type = "image" if is_image else ("html" if is_html else "document")
235
294
 
236
- # Images
237
295
  if is_image:
238
296
  loop_response.message.text, replaced = (
239
297
  _replace_container_image_citation(
@@ -262,6 +320,17 @@ class DisplayCodeInterpreterFilesPostProcessor(
262
320
  )
263
321
  changed |= replaced
264
322
 
323
+ if replaced:
324
+ replaced_files.append(filename)
325
+ self._log.info(
326
+ "Replaced sandbox link for '%s' (type=%s, content_id=%s)",
327
+ filename,
328
+ file_type,
329
+ content_id,
330
+ )
331
+ else:
332
+ missed_files.append(filename)
333
+
265
334
  is_html_rendered = is_html
266
335
  if replaced and not (is_image or is_html_rendered or fence_ff_on):
267
336
  loop_response.message.references.append(
@@ -275,15 +344,30 @@ class DisplayCodeInterpreterFilesPostProcessor(
275
344
  )
276
345
  ref_number += 1
277
346
 
347
+ self._log.info(
348
+ "Stage-1 replacement summary — replaced=%s, missed=%s, error=%s",
349
+ replaced_files,
350
+ missed_files,
351
+ error_files,
352
+ )
353
+
278
354
  if fence_ff_on:
279
355
  code_blocks = _build_code_blocks(loop_response, self._content_map)
356
+ self._log.info(
357
+ "Fence injection — %d code block(s), files: %s",
358
+ len(code_blocks),
359
+ [f.filename for b in code_blocks for f in b.files],
360
+ )
280
361
  _warn_unmatched_code_blocks(self._content_map, code_blocks)
281
362
  text_before = loop_response.message.text
282
363
  loop_response.message.text = _inject_code_execution_fences(
283
364
  loop_response.message.text,
284
365
  code_blocks,
285
366
  )
286
- changed |= loop_response.message.text != text_before
367
+ fences_changed = loop_response.message.text != text_before
368
+ changed |= fences_changed
369
+ if fences_changed:
370
+ self._log.info("Fence injection modified the message text")
287
371
 
288
372
  if self._orphan_code_blocks:
289
373
  fence_id = _get_next_fence_id(loop_response.message.text)
@@ -292,12 +376,29 @@ class DisplayCodeInterpreterFilesPostProcessor(
292
376
  loop_response.message.text.rstrip() + "\n\n" + orphan_fences
293
377
  )
294
378
  changed = True
379
+ self._log.info(
380
+ "Appended %d orphan fence(s)", len(self._orphan_code_blocks)
381
+ )
295
382
 
296
383
  _warn_missing_content_ids(loop_response.message.text, self._content_map)
297
384
  loop_response.message.text, dangling_replaced = _replace_dangling_sandbox_links(
298
385
  loop_response.message.text, self._config.file_download_failed_message
299
386
  )
300
387
  changed |= dangling_replaced
388
+ if dangling_replaced:
389
+ self._log.warning(
390
+ "apply_postprocessing found and replaced dangling sandbox links"
391
+ )
392
+
393
+ self._log.info(
394
+ "apply_postprocessing finished — changed=%s, replaced=%d, missed=%d, "
395
+ "error=%d, dangling_cleaned=%s",
396
+ changed,
397
+ len(replaced_files),
398
+ len(missed_files),
399
+ len(error_files),
400
+ dangling_replaced,
401
+ )
301
402
 
302
403
  return changed
303
404
 
@@ -312,16 +413,29 @@ class DisplayCodeInterpreterFilesPostProcessor(
312
413
  semaphore: asyncio.Semaphore,
313
414
  ) -> _ContentInfo | None:
314
415
  async with semaphore:
416
+ self._log.info(
417
+ "Downloading container file '%s' (container=%s, file_id=%s)",
418
+ container_file.filename,
419
+ container_file.container_id,
420
+ container_file.file_id,
421
+ )
315
422
  retry = self._build_retry()
316
423
  file_content = await retry(
317
424
  self._client.containers.files.content.retrieve,
318
425
  container_id=container_file.container_id,
319
426
  file_id=container_file.file_id,
320
427
  )
428
+ self._log.info(
429
+ "Downloaded container file '%s' (%d bytes)",
430
+ container_file.filename,
431
+ len(file_content.content),
432
+ )
321
433
 
322
- logger.info(
323
- "Uploading file content for %s to knowledge base",
434
+ mime = guess_type(container_file.filename)[0] or "text/plain"
435
+ self._log.info(
436
+ "Uploading '%s' to knowledge base (mime=%s)",
324
437
  container_file.filename,
438
+ mime,
325
439
  )
326
440
 
327
441
  assert self._chat_service is not None # Checked in __init__
@@ -329,29 +443,34 @@ class DisplayCodeInterpreterFilesPostProcessor(
329
443
  self._chat_service.upload_to_chat_from_bytes_async,
330
444
  content=file_content.content,
331
445
  content_name=container_file.filename,
332
- mime_type=guess_type(container_file.filename)[0] or "text/plain",
446
+ mime_type=mime,
333
447
  skip_ingestion=True,
334
448
  hide_in_chat=True,
335
449
  )
336
450
 
451
+ self._log.info(
452
+ "Uploaded '%s' — content_id=%s",
453
+ container_file.filename,
454
+ content.id,
455
+ )
337
456
  return _ContentInfo(filename=container_file.filename, content_id=content.id)
338
457
 
339
458
  async def _load_previous_files(self) -> dict[str, str]:
340
459
  if self._short_term_memory_manager is None:
341
460
  return {}
342
461
 
343
- logger.info(
462
+ self._log.info(
344
463
  "Loading previously generated code interpreter files from short term memory"
345
464
  )
346
465
  memory = await self._short_term_memory_manager.load_async()
347
466
 
348
467
  if memory is None:
349
- logger.info(
468
+ self._log.info(
350
469
  "No previously generated code interpreter files found in short term memory"
351
470
  )
352
471
  return {}
353
472
 
354
- logger.info(
473
+ self._log.info(
355
474
  "Found %s previously generated code interpreter files", len(memory.root)
356
475
  )
357
476
 
@@ -414,7 +533,7 @@ class DisplayCodeInterpreterFilesPostProcessor(
414
533
  hide_in_chat=True,
415
534
  )
416
535
  except Exception:
417
- logger.exception(
536
+ self._log.exception(
418
537
  "Failed to upload orphan code block as txt for call %d ('%s'); "
419
538
  "falling back to legacy code block display.",
420
539
  i,
@@ -430,7 +549,7 @@ class DisplayCodeInterpreterFilesPostProcessor(
430
549
  orphan_blocks.append(
431
550
  CodeInterpreterBlock(code=call.code, files=[orphan_file])
432
551
  )
433
- logger.info(
552
+ self._log.info(
434
553
  "Uploaded orphan code block as '%s' (content_id=%s)",
435
554
  filename,
436
555
  content.id,