unique_toolkit 1.70.5__tar.gz → 1.70.6__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.5 → unique_toolkit-1.70.6}/PKG-INFO +1 -1
  2. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/pyproject.toml +1 -1
  3. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/postprocessors/generated_files.py +38 -60
  4. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/README.md +0 -0
  5. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/__init__.py +0 -0
  6. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/_common/__init__.py +0 -0
  7. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/_common/_base_service.py +0 -0
  8. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/_common/_time_utils.py +0 -0
  9. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/_common/api_calling/human_verification_manager.py +0 -0
  10. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/_common/base_model_type_attribute.py +0 -0
  11. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/_common/chunk_relevancy_sorter/config.py +0 -0
  12. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/_common/chunk_relevancy_sorter/exception.py +0 -0
  13. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/_common/chunk_relevancy_sorter/schemas.py +0 -0
  14. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/_common/chunk_relevancy_sorter/service.py +0 -0
  15. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/_common/chunk_relevancy_sorter/tests/test_service.py +0 -0
  16. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/_common/config_checker/README.md +0 -0
  17. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/_common/config_checker/__init__.py +0 -0
  18. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/_common/config_checker/__main__.py +0 -0
  19. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/_common/config_checker/cli.py +0 -0
  20. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/_common/config_checker/differ.py +0 -0
  21. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/_common/config_checker/exporter.py +0 -0
  22. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/_common/config_checker/models.py +0 -0
  23. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/_common/config_checker/registry.py +0 -0
  24. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/_common/config_checker/validator.py +0 -0
  25. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/_common/default_language_model.py +0 -0
  26. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/_common/docx_generator/__init__.py +0 -0
  27. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/_common/docx_generator/config.py +0 -0
  28. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/_common/docx_generator/pandoc_converter.py +0 -0
  29. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/_common/docx_generator/schemas.py +0 -0
  30. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/_common/docx_generator/service.py +0 -0
  31. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/_common/docx_generator/template/Doc Template.docx +0 -0
  32. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/_common/endpoint_builder.py +0 -0
  33. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/_common/endpoint_requestor.py +0 -0
  34. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/_common/event_bus.py +0 -0
  35. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/_common/exception.py +0 -0
  36. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/_common/execution.py +0 -0
  37. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/_common/experimental/endpoint_builder.py +0 -0
  38. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/_common/experimental/endpoint_requestor.py +0 -0
  39. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/_common/experimental/write_up_agent/README.md +0 -0
  40. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/_common/experimental/write_up_agent/__init__.py +0 -0
  41. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/_common/experimental/write_up_agent/agent.py +0 -0
  42. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/_common/experimental/write_up_agent/config.py +0 -0
  43. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/_common/experimental/write_up_agent/examples/data.csv +0 -0
  44. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/_common/experimental/write_up_agent/examples/example_usage.py +0 -0
  45. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/_common/experimental/write_up_agent/schemas.py +0 -0
  46. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/_common/experimental/write_up_agent/services/__init__.py +0 -0
  47. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/_common/experimental/write_up_agent/services/dataframe_handler/__init__.py +0 -0
  48. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/_common/experimental/write_up_agent/services/dataframe_handler/exceptions.py +0 -0
  49. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/_common/experimental/write_up_agent/services/dataframe_handler/service.py +0 -0
  50. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/_common/experimental/write_up_agent/services/dataframe_handler/utils.py +0 -0
  51. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/__init__.py +0 -0
  52. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/config.py +0 -0
  53. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/exceptions.py +0 -0
  54. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/prompts/config.py +0 -0
  55. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/prompts/system_prompt.j2 +0 -0
  56. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/prompts/user_prompt.j2 +0 -0
  57. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/service.py +0 -0
  58. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/_common/experimental/write_up_agent/services/template_handler/__init__.py +0 -0
  59. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/_common/experimental/write_up_agent/services/template_handler/default_template.j2 +0 -0
  60. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/_common/experimental/write_up_agent/services/template_handler/exceptions.py +0 -0
  61. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/_common/experimental/write_up_agent/services/template_handler/service.py +0 -0
  62. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/_common/experimental/write_up_agent/services/template_handler/utils.py +0 -0
  63. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/_common/experimental/write_up_agent/utils.py +0 -0
  64. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/_common/feature_flags/schema.py +0 -0
  65. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/_common/pydantic/rjsf_tags.py +0 -0
  66. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/_common/pydantic_helpers.py +0 -0
  67. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/_common/referencing.py +0 -0
  68. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/_common/string_utilities.py +0 -0
  69. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/_common/tests/test_referencing.py +0 -0
  70. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/_common/tests/test_string_utilities.py +0 -0
  71. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/_common/token/__init__.py +0 -0
  72. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/_common/token/image_token_counting.py +0 -0
  73. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/_common/token/token_counting.py +0 -0
  74. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/_common/token/tokenizers/deepseek/tokenizer.json +0 -0
  75. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/_common/token/tokenizers/qwen/tokenizer.json +0 -0
  76. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/_common/utils/__init__.py +0 -0
  77. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/_common/utils/files.py +0 -0
  78. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/_common/utils/image/encode.py +0 -0
  79. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/_common/utils/jinja/helpers.py +0 -0
  80. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/_common/utils/jinja/render.py +0 -0
  81. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/_common/utils/jinja/schema.py +0 -0
  82. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/_common/utils/jinja/utils.py +0 -0
  83. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/_common/utils/structured_output/__init__.py +0 -0
  84. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/_common/utils/structured_output/schema.py +0 -0
  85. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/_common/utils/write_configuration.py +0 -0
  86. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/_common/validate_required_values.py +0 -0
  87. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/_common/validators.py +0 -0
  88. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/agentic/__init__.py +0 -0
  89. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/agentic/debug_info_manager/debug_info_manager.py +0 -0
  90. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/agentic/debug_info_manager/test/test_debug_info_manager.py +0 -0
  91. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/agentic/evaluation/config.py +0 -0
  92. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/agentic/evaluation/context_relevancy/prompts/__init__.py +0 -0
  93. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/agentic/evaluation/context_relevancy/prompts/system_prompt.j2 +0 -0
  94. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/agentic/evaluation/context_relevancy/prompts/user_prompt.j2 +0 -0
  95. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/agentic/evaluation/context_relevancy/schema.py +0 -0
  96. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/agentic/evaluation/context_relevancy/service.py +0 -0
  97. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/agentic/evaluation/evaluation_manager.py +0 -0
  98. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/agentic/evaluation/exception.py +0 -0
  99. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/agentic/evaluation/hallucination/constants.py +0 -0
  100. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/agentic/evaluation/hallucination/hallucination_evaluation.py +0 -0
  101. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/agentic/evaluation/hallucination/prompts/__init__.py +0 -0
  102. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/agentic/evaluation/hallucination/prompts/system_prompt.j2 +0 -0
  103. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/agentic/evaluation/hallucination/prompts/user_prompt.j2 +0 -0
  104. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/agentic/evaluation/hallucination/service.py +0 -0
  105. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/agentic/evaluation/hallucination/utils.py +0 -0
  106. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/agentic/evaluation/output_parser.py +0 -0
  107. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/agentic/evaluation/schemas.py +0 -0
  108. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/agentic/evaluation/tests/fixtures.py +0 -0
  109. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/agentic/evaluation/tests/test_config.py +0 -0
  110. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/agentic/evaluation/tests/test_context_relevancy_service.py +0 -0
  111. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/agentic/evaluation/tests/test_hallucination_constants.py +0 -0
  112. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/agentic/evaluation/tests/test_hallucination_utils.py +0 -0
  113. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/agentic/evaluation/tests/test_output_parser.py +0 -0
  114. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/agentic/evaluation/tests/test_prompt_loaders.py +0 -0
  115. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/agentic/evaluation/utils.py +0 -0
  116. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/agentic/feature_flags/__init__.py +0 -0
  117. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/agentic/feature_flags/feature_flags.py +0 -0
  118. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/agentic/history_manager/history_construction_with_contents.py +0 -0
  119. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/agentic/history_manager/history_manager.py +0 -0
  120. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/agentic/history_manager/loop_token_reducer.py +0 -0
  121. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/agentic/history_manager/utils.py +0 -0
  122. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/agentic/loop_runner/__init__.py +0 -0
  123. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/agentic/loop_runner/_iteration_handler_utils.py +0 -0
  124. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/agentic/loop_runner/_responses_iteration_handler_utils.py +0 -0
  125. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/agentic/loop_runner/_responses_stream_handler_utils.py +0 -0
  126. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/agentic/loop_runner/_stream_handler_utils.py +0 -0
  127. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/agentic/loop_runner/base.py +0 -0
  128. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/agentic/loop_runner/middleware/__init__.py +0 -0
  129. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/agentic/loop_runner/middleware/planning/__init__.py +0 -0
  130. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/agentic/loop_runner/middleware/planning/planning.py +0 -0
  131. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/agentic/loop_runner/middleware/planning/schema.py +0 -0
  132. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/agentic/loop_runner/runners/__init__.py +0 -0
  133. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/agentic/loop_runner/runners/basic.py +0 -0
  134. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/agentic/loop_runner/runners/mistral/__init__.py +0 -0
  135. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/agentic/loop_runner/runners/mistral/mistral_runner.py +0 -0
  136. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/agentic/loop_runner/runners/qwen/__init__.py +0 -0
  137. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/agentic/loop_runner/runners/qwen/helpers.py +0 -0
  138. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/agentic/loop_runner/runners/qwen/qwen_runner.py +0 -0
  139. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/agentic/message_log_manager/__init__.py +0 -0
  140. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/agentic/message_log_manager/service.py +0 -0
  141. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/agentic/postprocessor/postprocessor_manager.py +0 -0
  142. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/agentic/reference_manager/reference_manager.py +0 -0
  143. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/agentic/responses_api/__init__.py +0 -0
  144. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/agentic/responses_api/postprocessors/code_display.py +0 -0
  145. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/agentic/responses_api/postprocessors/generated_files.py +0 -0
  146. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/agentic/responses_api/stream_handler.py +0 -0
  147. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/agentic/short_term_memory_manager/persistent_short_term_memory_manager.py +0 -0
  148. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/agentic/thinking_manager/thinking_manager.py +0 -0
  149. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/agentic/tools/__init__.py +0 -0
  150. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/agentic/tools/a2a/__init__.py +0 -0
  151. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/agentic/tools/a2a/config.py +0 -0
  152. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/agentic/tools/a2a/evaluation/__init__.py +0 -0
  153. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/agentic/tools/a2a/evaluation/_utils.py +0 -0
  154. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/agentic/tools/a2a/evaluation/config.py +0 -0
  155. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/agentic/tools/a2a/evaluation/evaluator.py +0 -0
  156. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/agentic/tools/a2a/evaluation/summarization_user_message.j2 +0 -0
  157. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/agentic/tools/a2a/manager.py +0 -0
  158. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/agentic/tools/a2a/postprocessing/__init__.py +0 -0
  159. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/agentic/tools/a2a/postprocessing/_display_utils.py +0 -0
  160. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/agentic/tools/a2a/postprocessing/_ref_utils.py +0 -0
  161. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/agentic/tools/a2a/postprocessing/config.py +0 -0
  162. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/agentic/tools/a2a/postprocessing/display.py +0 -0
  163. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/agentic/tools/a2a/postprocessing/references.py +0 -0
  164. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/agentic/tools/a2a/postprocessing/test/test_display.py +0 -0
  165. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/agentic/tools/a2a/postprocessing/test/test_display_utils.py +0 -0
  166. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/agentic/tools/a2a/postprocessing/test/test_ref_utils.py +0 -0
  167. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/agentic/tools/a2a/prompts.py +0 -0
  168. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/agentic/tools/a2a/response_watcher/__init__.py +0 -0
  169. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/agentic/tools/a2a/response_watcher/service.py +0 -0
  170. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/agentic/tools/a2a/tool/__init__.py +0 -0
  171. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/agentic/tools/a2a/tool/_memory.py +0 -0
  172. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/agentic/tools/a2a/tool/_schema.py +0 -0
  173. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/agentic/tools/a2a/tool/config.py +0 -0
  174. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/agentic/tools/a2a/tool/service.py +0 -0
  175. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/agentic/tools/a2a/tool/test/test_service_utils.py +0 -0
  176. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/agentic/tools/agent_chunks_hanlder.py +0 -0
  177. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/agentic/tools/config.py +0 -0
  178. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/agentic/tools/experimental/__init__.py +0 -0
  179. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/agentic/tools/experimental/open_file_tool/__init__.py +0 -0
  180. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/agentic/tools/experimental/open_file_tool/config.py +0 -0
  181. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/agentic/tools/experimental/open_file_tool/runtime.py +0 -0
  182. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/agentic/tools/experimental/open_file_tool/tool.py +0 -0
  183. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/agentic/tools/factory.py +0 -0
  184. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/agentic/tools/mcp/__init__.py +0 -0
  185. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/agentic/tools/mcp/manager.py +0 -0
  186. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/agentic/tools/mcp/models.py +0 -0
  187. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/agentic/tools/mcp/tool_wrapper.py +0 -0
  188. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/agentic/tools/openai_builtin/__init__.py +0 -0
  189. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/agentic/tools/openai_builtin/base.py +0 -0
  190. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/__init__.py +0 -0
  191. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/config.py +0 -0
  192. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/postprocessors/__init__.py +0 -0
  193. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/postprocessors/code_display.py +0 -0
  194. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/schemas.py +0 -0
  195. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/service.py +0 -0
  196. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/agentic/tools/openai_builtin/manager.py +0 -0
  197. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/agentic/tools/schemas.py +0 -0
  198. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/agentic/tools/test/test_mcp_manager.py +0 -0
  199. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/agentic/tools/test/test_tool_progress_reporter.py +0 -0
  200. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/agentic/tools/tool.py +0 -0
  201. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/agentic/tools/tool_manager.py +0 -0
  202. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/agentic/tools/tool_progress_reporter.py +0 -0
  203. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/agentic/tools/utils/__init__.py +0 -0
  204. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/agentic/tools/utils/source_handling/__init__.py +0 -0
  205. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/agentic/tools/utils/source_handling/schema.py +0 -0
  206. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/agentic/tools/utils/source_handling/source_formatting.py +0 -0
  207. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/agentic/tools/utils/source_handling/tests/test_source_formatting.py +0 -0
  208. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/agentic_table/__init__.py +0 -0
  209. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/agentic_table/schemas.py +0 -0
  210. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/agentic_table/service.py +0 -0
  211. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/app/__init__.py +0 -0
  212. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/app/dev_util.py +0 -0
  213. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/app/fast_api_factory.py +0 -0
  214. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/app/init_logging.py +0 -0
  215. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/app/init_sdk.py +0 -0
  216. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/app/performance/async_tasks.py +0 -0
  217. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/app/performance/async_wrapper.py +0 -0
  218. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/app/schemas.py +0 -0
  219. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/app/unique_settings.py +0 -0
  220. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/app/verification.py +0 -0
  221. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/app/webhook.py +0 -0
  222. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/chat/__init__.py +0 -0
  223. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/chat/cancellation.py +0 -0
  224. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/chat/constants.py +0 -0
  225. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/chat/deprecated/service.py +0 -0
  226. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/chat/functions.py +0 -0
  227. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/chat/rendering.py +0 -0
  228. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/chat/responses_api.py +0 -0
  229. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/chat/schemas.py +0 -0
  230. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/chat/service.py +0 -0
  231. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/chat/state.py +0 -0
  232. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/chat/utils.py +0 -0
  233. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/content/__init__.py +0 -0
  234. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/content/constants.py +0 -0
  235. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/content/functions.py +0 -0
  236. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/content/schemas.py +0 -0
  237. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/content/service.py +0 -0
  238. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/content/smart_rules.py +0 -0
  239. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/content/utils.py +0 -0
  240. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/data_extraction/README.md +0 -0
  241. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/data_extraction/__init__.py +0 -0
  242. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/data_extraction/augmented/__init__.py +0 -0
  243. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/data_extraction/augmented/service.py +0 -0
  244. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/data_extraction/base.py +0 -0
  245. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/data_extraction/basic/__init__.py +0 -0
  246. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/data_extraction/basic/config.py +0 -0
  247. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/data_extraction/basic/prompt.py +0 -0
  248. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/data_extraction/basic/service.py +0 -0
  249. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/elicitation/__init__.py +0 -0
  250. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/elicitation/constants.py +0 -0
  251. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/elicitation/exceptions.py +0 -0
  252. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/elicitation/functions.py +0 -0
  253. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/elicitation/schemas.py +0 -0
  254. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/elicitation/service.py +0 -0
  255. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/embedding/__init__.py +0 -0
  256. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/embedding/constants.py +0 -0
  257. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/embedding/functions.py +0 -0
  258. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/embedding/schemas.py +0 -0
  259. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/embedding/service.py +0 -0
  260. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/embedding/utils.py +0 -0
  261. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/framework_utilities/__init__.py +0 -0
  262. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/framework_utilities/langchain/__init__.py +0 -0
  263. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/framework_utilities/langchain/client.py +0 -0
  264. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/framework_utilities/langchain/history.py +0 -0
  265. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/framework_utilities/openai/__init__.py +0 -0
  266. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/framework_utilities/openai/client.py +0 -0
  267. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/framework_utilities/openai/message_builder.py +0 -0
  268. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/framework_utilities/utils.py +0 -0
  269. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/language_model/__init__.py +0 -0
  270. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/language_model/_responses_api_utils.py +0 -0
  271. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/language_model/builder.py +0 -0
  272. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/language_model/constants.py +0 -0
  273. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/language_model/default_language_model.py +0 -0
  274. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/language_model/functions.py +0 -0
  275. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/language_model/infos.py +0 -0
  276. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/language_model/prompt.py +0 -0
  277. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/language_model/reference.py +0 -0
  278. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/language_model/schemas.py +0 -0
  279. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/language_model/service.py +0 -0
  280. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/language_model/stream_transform.py +0 -0
  281. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/language_model/utils.py +0 -0
  282. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/monitoring/__init__.py +0 -0
  283. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/monitoring/middleware.py +0 -0
  284. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/monitoring/registry.py +0 -0
  285. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/protocols/support.py +0 -0
  286. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/services/__init__.py +0 -0
  287. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/services/chat_service.py +0 -0
  288. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/services/factory.py +0 -0
  289. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/services/knowledge_base.py +0 -0
  290. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/short_term_memory/__init__.py +0 -0
  291. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/short_term_memory/constants.py +0 -0
  292. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/short_term_memory/functions.py +0 -0
  293. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/short_term_memory/schemas.py +0 -0
  294. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/short_term_memory/service.py +0 -0
  295. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/smart_rules/__init__.py +0 -0
  296. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/unique_toolkit/smart_rules/compile.py +0 -0
  297. {unique_toolkit-1.70.5 → unique_toolkit-1.70.6}/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.5
3
+ Version: 1.70.6
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.5"
3
+ version = "1.70.6"
4
4
  description = ""
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.12"
@@ -9,7 +9,6 @@ from typing import NamedTuple, override
9
9
 
10
10
  import httpx
11
11
  from openai import AsyncOpenAI
12
- from openai.types.responses import ResponseCodeInterpreterToolCall
13
12
  from openai.types.responses.response_output_text import AnnotationContainerFileCitation
14
13
  from pydantic import BaseModel, Field, RootModel
15
14
  from pydantic.json_schema import SkipJsonSchema
@@ -639,19 +638,27 @@ class DisplayCodeInterpreterFilesPostProcessor(
639
638
  self._log.info("Fence injection modified the message text")
640
639
 
641
640
  if self._orphan_code_blocks:
642
- fence_id = _get_next_fence_id(loop_response.message.text)
643
- orphan_fences = _build_orphan_fences(self._orphan_code_blocks, fence_id)
644
- loop_response.message.text = (
645
- loop_response.message.text.rstrip() + "\n\n" + orphan_fences
646
- )
641
+ for block in self._orphan_code_blocks:
642
+ for file in block.files:
643
+ loop_response.message.references.append(
644
+ ContentReference(
645
+ sequence_number=ref_number,
646
+ source_id=file.content_id,
647
+ source="node-ingestion-chunks",
648
+ url=f"unique://content/{file.content_id}",
649
+ name=file.filename,
650
+ )
651
+ )
652
+ ref_number += 1
647
653
  changed = True
648
654
  self._log.info(
649
- "Appended %d orphan fence(s)", len(self._orphan_code_blocks)
655
+ "Added %d orphan code block(s) to message references",
656
+ len(self._orphan_code_blocks),
650
657
  )
651
658
 
652
659
  _warn_missing_content_ids(loop_response.message.text, self._content_map)
653
660
  loop_response.message.text, dangling_replaced = _replace_dangling_sandbox_links(
654
- loop_response.message.text, self._config.file_download_failed_message
661
+ loop_response.message.text
655
662
  )
656
663
  changed |= dangling_replaced
657
664
  if dangling_replaced:
@@ -963,13 +970,12 @@ class DisplayCodeInterpreterFilesPostProcessor(
963
970
  async def _upload_orphan_code_as_txt(
964
971
  self, loop_response: ResponsesLanguageModelStreamResponse
965
972
  ) -> list[CodeInterpreterBlock]:
966
- """Upload stdout (or code) from calls that produced no container files as .txt artifacts.
973
+ """Upload source **code** from calls that produced no container files as .txt artifacts.
967
974
 
968
975
  When code interpreter runs but generates no files or images, the response
969
976
  text has no sandbox links for fence injection to hook onto. This method
970
- converts those "orphan" calls into downloadable .txt files so the fence
971
- postprocessor can attach a fileWithSource component and the new Code
972
- Execution UI is shown instead of the legacy <details> block.
977
+ converts those "orphan" calls into downloadable .txt files (the executed
978
+ code, not stdout) so the postprocessor can attach a reference for download.
973
979
 
974
980
  Called only when the fence feature flag is enabled. Skipped entirely if
975
981
  any container files were produced (normal fencing handles those).
@@ -990,13 +996,9 @@ class DisplayCodeInterpreterFilesPostProcessor(
990
996
  if not call.code:
991
997
  continue
992
998
 
993
- # Code interpreter logs are only present on each code_interpreter_call when
994
- # the create/retrieve request sets include=["code_interpreter_call.outputs"]
995
- # (see OpenAI Responses API `include` and manual examples in
996
- # docs/manual_examples_for_docs/code_execution_openai_client.py). If
997
- # `outputs` is omitted, call.outputs is null and we fall back to the
998
- # source code as the downloadable txt.
999
- txt_content = _collect_stdout(call) or call.code
999
+ # Always persist the executed source as the downloadable .txt (not stdout),
1000
+ # so the attachment matches what ran in the sandbox.
1001
+ txt_content = call.code
1000
1002
  filename = f"code_{i + 1}.txt" if use_numeric_suffix else "code.txt"
1001
1003
 
1002
1004
  try:
@@ -1034,38 +1036,6 @@ class DisplayCodeInterpreterFilesPostProcessor(
1034
1036
  return orphan_blocks
1035
1037
 
1036
1038
 
1037
- def _collect_stdout(call: ResponseCodeInterpreterToolCall) -> str:
1038
- """Collect all stdout logs from a code interpreter call's outputs."""
1039
- if not call.outputs:
1040
- return ""
1041
- return "\n".join(output.logs for output in call.outputs if output.type == "logs")
1042
-
1043
-
1044
- def _get_next_fence_id(text: str) -> int:
1045
- """Return the next available fence id by scanning existing fences in the text."""
1046
- existing = re.findall(r"````(?:imgWithSource|fileWithSource)\(id='(\d+)'", text)
1047
- if not existing:
1048
- return 1
1049
- return max(int(fid) for fid in existing) + 1
1050
-
1051
-
1052
- def _build_orphan_fences(
1053
- blocks: list[CodeInterpreterBlock], start_fence_id: int
1054
- ) -> str:
1055
- """Build concatenated fence text for orphan code blocks.
1056
-
1057
- Orphan blocks have no inline ref in the message text, so their fences are
1058
- appended directly rather than injected via pattern replacement.
1059
- """
1060
- fence_id = start_fence_id
1061
- parts: list[str] = []
1062
- for block in blocks:
1063
- for file in block.files:
1064
- parts.append(_build_file_fence(file, block.code, fence_id))
1065
- fence_id += 1
1066
- return "\n".join(parts)
1067
-
1068
-
1069
1039
  def _get_file_type(filename: str) -> CodeInterpreterFileType:
1070
1040
  mime = guess_type(filename)[0] or ""
1071
1041
  if mime.startswith("image/"):
@@ -1397,27 +1367,35 @@ def _warn_missing_content_ids(text: str, content_map: dict[str, str | None]) ->
1397
1367
  # so the entire `[label](sandbox://...)` token can be replaced rather than just the URL.
1398
1368
  _SANDBOX_MARKDOWN_LINK_RE = re.compile(r"!?\[.*?\]\(sandbox:/mnt/data/\S+?\)")
1399
1369
 
1370
+ # Extracts the bare filename from a sandbox URL like `sandbox:/mnt/data/foo.csv`.
1371
+ _SANDBOX_FILENAME_RE = re.compile(r"sandbox:/mnt/data/([^)\s]+)")
1372
+
1400
1373
 
1401
- def _replace_dangling_sandbox_links(text: str, error_message: str) -> tuple[str, bool]:
1402
- """Replace any remaining sandbox:/mnt/data/ markdown links with an error message.
1374
+ def _replace_dangling_sandbox_links(text: str) -> tuple[str, bool]:
1375
+ """Replace any remaining sandbox:/mnt/data/ markdown links with a per-file notice.
1403
1376
 
1404
1377
  A dangling link means either the LLM hallucinated a file reference (the sandbox
1405
1378
  link appears in the text but no matching container file annotation was emitted by
1406
1379
  OpenAI), or the link format did not match the expected regex in stage-1. In both
1407
1380
  cases the user would see a broken link; this function replaces each such link with
1408
- the configured error message and logs a warning so the incident is visible in logs.
1381
+ an actionable message that names the specific file, and logs a warning so the
1382
+ incident is visible in production logs.
1409
1383
  """
1410
- matches = _SANDBOX_MARKDOWN_LINK_RE.findall(text)
1411
- if not matches:
1384
+ if not _SANDBOX_MARKDOWN_LINK_RE.search(text):
1412
1385
  return text, False
1413
- for match in matches:
1386
+
1387
+ def _replacement(m: re.Match[str]) -> str:
1388
+ filename_match = _SANDBOX_FILENAME_RE.search(m.group())
1389
+ filename = filename_match.group(1) if filename_match else "the file"
1414
1390
  logger.warning(
1415
1391
  "Dangling sandbox link found in final text: '%s'. "
1416
1392
  "The file was either never uploaded or the link format did not match "
1417
- "the expected pattern — replacing with error message.",
1418
- match,
1393
+ "the expected pattern — replacing with per-file notice.",
1394
+ m.group(),
1419
1395
  )
1420
- return _SANDBOX_MARKDOWN_LINK_RE.sub(error_message, text), True
1396
+ return f"⚠️ The file *{filename}* could not be retrieved. You can ask me to regenerate it."
1397
+
1398
+ return _SANDBOX_MARKDOWN_LINK_RE.sub(_replacement, text), True
1421
1399
 
1422
1400
 
1423
1401
  def _warn_unmatched_code_blocks(