unique_toolkit 2026.22.0__tar.gz → 2026.22.0.dev0__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 (396) hide show
  1. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/PKG-INFO +2 -2
  2. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/pyproject.toml +2 -2
  3. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/_common/utils/files.py +2 -3
  4. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/feature_flags/feature_flags.py +5 -5
  5. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/history_manager/loop_token_reducer.py +4 -3
  6. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/tools/config.py +6 -2
  7. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/tools/names.py +0 -1
  8. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/tools/openai_builtin/base.py +0 -7
  9. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/config.py +5 -42
  10. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/postprocessors/generated_files.py +69 -38
  11. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/service.py +40 -74
  12. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/tools/tool.py +0 -10
  13. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/tools/tool_manager.py +2 -12
  14. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/app/schemas.py +2 -13
  15. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/language_model/infos.py +22 -118
  16. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/language_model/schemas.py +0 -13
  17. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/services/chat_service.py +9 -37
  18. unique_toolkit-2026.22.0/unique_toolkit/agentic/history_manager/settings.py +0 -53
  19. unique_toolkit-2026.22.0/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/postprocessors/artifacts.py +0 -103
  20. unique_toolkit-2026.22.0/unique_toolkit/language_model/settings.py +0 -65
  21. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/README.md +0 -0
  22. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/__init__.py +0 -0
  23. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/_common/__init__.py +0 -0
  24. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/_common/_base_service.py +0 -0
  25. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/_common/_time_utils.py +0 -0
  26. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/_common/api_calling/human_verification_manager.py +0 -0
  27. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/_common/base_model_type_attribute.py +0 -0
  28. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/_common/chunk_relevancy_sorter/config.py +0 -0
  29. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/_common/chunk_relevancy_sorter/exception.py +0 -0
  30. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/_common/chunk_relevancy_sorter/schemas.py +0 -0
  31. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/_common/chunk_relevancy_sorter/service.py +0 -0
  32. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/_common/chunk_relevancy_sorter/tests/test_service.py +0 -0
  33. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/_common/config_checker/README.md +0 -0
  34. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/_common/config_checker/__init__.py +0 -0
  35. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/_common/config_checker/__main__.py +0 -0
  36. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/_common/config_checker/cli.py +0 -0
  37. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/_common/config_checker/differ.py +0 -0
  38. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/_common/config_checker/exporter.py +0 -0
  39. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/_common/config_checker/models.py +0 -0
  40. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/_common/config_checker/registry.py +0 -0
  41. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/_common/config_checker/validator.py +0 -0
  42. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/_common/default_language_model.py +0 -0
  43. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/_common/docx_generator/__init__.py +0 -0
  44. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/_common/docx_generator/config.py +0 -0
  45. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/_common/docx_generator/pandoc_converter.py +0 -0
  46. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/_common/docx_generator/schemas.py +0 -0
  47. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/_common/docx_generator/service.py +0 -0
  48. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/_common/docx_generator/template/Doc Template.docx +0 -0
  49. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/_common/endpoint_builder.py +0 -0
  50. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/_common/endpoint_requestor.py +0 -0
  51. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/_common/event_bus.py +0 -0
  52. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/_common/exception.py +0 -0
  53. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/_common/execution.py +0 -0
  54. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/_common/experimental/endpoint_builder.py +0 -0
  55. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/_common/experimental/endpoint_requestor.py +0 -0
  56. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/_common/experimental/write_up_agent/README.md +0 -0
  57. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/_common/experimental/write_up_agent/__init__.py +0 -0
  58. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/_common/experimental/write_up_agent/agent.py +0 -0
  59. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/_common/experimental/write_up_agent/config.py +0 -0
  60. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/_common/experimental/write_up_agent/examples/data.csv +0 -0
  61. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/_common/experimental/write_up_agent/examples/example_usage.py +0 -0
  62. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/_common/experimental/write_up_agent/schemas.py +0 -0
  63. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/_common/experimental/write_up_agent/services/__init__.py +0 -0
  64. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/_common/experimental/write_up_agent/services/dataframe_handler/__init__.py +0 -0
  65. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/_common/experimental/write_up_agent/services/dataframe_handler/exceptions.py +0 -0
  66. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/_common/experimental/write_up_agent/services/dataframe_handler/service.py +0 -0
  67. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/_common/experimental/write_up_agent/services/dataframe_handler/utils.py +0 -0
  68. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/__init__.py +0 -0
  69. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/config.py +0 -0
  70. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/exceptions.py +0 -0
  71. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/prompts/config.py +0 -0
  72. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/prompts/system_prompt.j2 +0 -0
  73. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/prompts/user_prompt.j2 +0 -0
  74. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/service.py +0 -0
  75. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/_common/experimental/write_up_agent/services/template_handler/__init__.py +0 -0
  76. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/_common/experimental/write_up_agent/services/template_handler/default_template.j2 +0 -0
  77. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/_common/experimental/write_up_agent/services/template_handler/exceptions.py +0 -0
  78. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/_common/experimental/write_up_agent/services/template_handler/service.py +0 -0
  79. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/_common/experimental/write_up_agent/services/template_handler/utils.py +0 -0
  80. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/_common/experimental/write_up_agent/utils.py +0 -0
  81. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/_common/feature_flags/schema.py +0 -0
  82. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/_common/metadata_filter_scope.py +0 -0
  83. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/_common/pydantic/rjsf_tags.py +0 -0
  84. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/_common/pydantic_helpers.py +0 -0
  85. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/_common/referencing.py +0 -0
  86. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/_common/string_utilities.py +0 -0
  87. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/_common/tests/test_referencing.py +0 -0
  88. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/_common/tests/test_string_utilities.py +0 -0
  89. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/_common/token/__init__.py +0 -0
  90. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/_common/token/image_token_counting.py +0 -0
  91. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/_common/token/token_counting.py +0 -0
  92. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/_common/token/tokenizers/deepseek/tokenizer.json +0 -0
  93. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/_common/token/tokenizers/qwen/tokenizer.json +0 -0
  94. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/_common/utils/__init__.py +0 -0
  95. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/_common/utils/image/encode.py +0 -0
  96. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/_common/utils/jinja/helpers.py +0 -0
  97. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/_common/utils/jinja/render.py +0 -0
  98. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/_common/utils/jinja/schema.py +0 -0
  99. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/_common/utils/jinja/utils.py +0 -0
  100. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/_common/utils/structured_output/__init__.py +0 -0
  101. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/_common/utils/structured_output/schema.py +0 -0
  102. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/_common/utils/write_configuration.py +0 -0
  103. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/_common/validate_required_values.py +0 -0
  104. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/_common/validators.py +0 -0
  105. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/__init__.py +0 -0
  106. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/debug_info_manager/debug_info_manager.py +0 -0
  107. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/debug_info_manager/test/test_debug_info_manager.py +0 -0
  108. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/evaluation/config.py +0 -0
  109. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/evaluation/context_relevancy/prompts/__init__.py +0 -0
  110. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/evaluation/context_relevancy/prompts/system_prompt.j2 +0 -0
  111. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/evaluation/context_relevancy/prompts/user_prompt.j2 +0 -0
  112. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/evaluation/context_relevancy/schema.py +0 -0
  113. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/evaluation/context_relevancy/service.py +0 -0
  114. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/evaluation/evaluation_manager.py +0 -0
  115. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/evaluation/exception.py +0 -0
  116. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/evaluation/hallucination/constants.py +0 -0
  117. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/evaluation/hallucination/hallucination_evaluation.py +0 -0
  118. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/evaluation/hallucination/prompts/__init__.py +0 -0
  119. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/evaluation/hallucination/prompts/system_prompt.j2 +0 -0
  120. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/evaluation/hallucination/prompts/user_prompt.j2 +0 -0
  121. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/evaluation/hallucination/service.py +0 -0
  122. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/evaluation/hallucination/utils.py +0 -0
  123. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/evaluation/output_parser.py +0 -0
  124. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/evaluation/schemas.py +0 -0
  125. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/evaluation/tests/fixtures.py +0 -0
  126. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/evaluation/tests/test_config.py +0 -0
  127. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/evaluation/tests/test_context_relevancy_service.py +0 -0
  128. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/evaluation/tests/test_hallucination_constants.py +0 -0
  129. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/evaluation/tests/test_hallucination_utils.py +0 -0
  130. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/evaluation/tests/test_output_parser.py +0 -0
  131. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/evaluation/tests/test_prompt_loaders.py +0 -0
  132. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/evaluation/utils.py +0 -0
  133. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/feature_flags/__init__.py +0 -0
  134. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/history_manager/history_construction_with_contents.py +0 -0
  135. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/history_manager/history_manager.py +0 -0
  136. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/history_manager/utils.py +0 -0
  137. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/loop_runner/__init__.py +0 -0
  138. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/loop_runner/_iteration_handler_utils.py +0 -0
  139. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/loop_runner/_responses_iteration_handler_utils.py +0 -0
  140. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/loop_runner/_responses_stream_handler_utils.py +0 -0
  141. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/loop_runner/_stream_handler_utils.py +0 -0
  142. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/loop_runner/base.py +0 -0
  143. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/loop_runner/middleware/__init__.py +0 -0
  144. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/loop_runner/middleware/planning/__init__.py +0 -0
  145. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/loop_runner/middleware/planning/planning.py +0 -0
  146. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/loop_runner/middleware/planning/schema.py +0 -0
  147. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/loop_runner/runners/__init__.py +0 -0
  148. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/loop_runner/runners/basic.py +0 -0
  149. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/loop_runner/runners/mistral/__init__.py +0 -0
  150. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/loop_runner/runners/mistral/mistral_runner.py +0 -0
  151. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/loop_runner/runners/qwen/__init__.py +0 -0
  152. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/loop_runner/runners/qwen/helpers.py +0 -0
  153. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/loop_runner/runners/qwen/qwen_runner.py +0 -0
  154. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/message_log_manager/__init__.py +0 -0
  155. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/message_log_manager/service.py +0 -0
  156. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/message_log_order.py +0 -0
  157. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/postprocessor/postprocessor_manager.py +0 -0
  158. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/reference_manager/reference_manager.py +0 -0
  159. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/responses_api/__init__.py +0 -0
  160. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/responses_api/postprocessors/code_display.py +0 -0
  161. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/responses_api/postprocessors/generated_files.py +0 -0
  162. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/responses_api/stream_handler.py +0 -0
  163. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/short_term_memory_manager/persistent_short_term_memory_manager.py +0 -0
  164. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/thinking_manager/thinking_manager.py +0 -0
  165. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/tools/__init__.py +0 -0
  166. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/tools/a2a/__init__.py +0 -0
  167. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/tools/a2a/config.py +0 -0
  168. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/tools/a2a/evaluation/__init__.py +0 -0
  169. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/tools/a2a/evaluation/_utils.py +0 -0
  170. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/tools/a2a/evaluation/config.py +0 -0
  171. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/tools/a2a/evaluation/evaluator.py +0 -0
  172. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/tools/a2a/evaluation/summarization_user_message.j2 +0 -0
  173. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/tools/a2a/manager.py +0 -0
  174. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/tools/a2a/postprocessing/__init__.py +0 -0
  175. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/tools/a2a/postprocessing/_display_utils.py +0 -0
  176. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/tools/a2a/postprocessing/_ref_utils.py +0 -0
  177. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/tools/a2a/postprocessing/config.py +0 -0
  178. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/tools/a2a/postprocessing/display.py +0 -0
  179. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/tools/a2a/postprocessing/references.py +0 -0
  180. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/tools/a2a/postprocessing/test/test_display.py +0 -0
  181. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/tools/a2a/postprocessing/test/test_display_utils.py +0 -0
  182. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/tools/a2a/postprocessing/test/test_ref_utils.py +0 -0
  183. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/tools/a2a/postprocessing/test/test_references.py +0 -0
  184. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/tools/a2a/prompts.py +0 -0
  185. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/tools/a2a/response_watcher/__init__.py +0 -0
  186. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/tools/a2a/response_watcher/service.py +0 -0
  187. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/tools/a2a/tool/__init__.py +0 -0
  188. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/tools/a2a/tool/_memory.py +0 -0
  189. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/tools/a2a/tool/_schema.py +0 -0
  190. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/tools/a2a/tool/config.py +0 -0
  191. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/tools/a2a/tool/service.py +0 -0
  192. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/tools/a2a/tool/test/test_service_utils.py +0 -0
  193. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/tools/agent_chunks_hanlder.py +0 -0
  194. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/tools/experimental/__init__.py +0 -0
  195. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/tools/experimental/open_file_tool/__init__.py +0 -0
  196. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/tools/experimental/open_file_tool/config.py +0 -0
  197. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/tools/experimental/open_file_tool/runtime.py +0 -0
  198. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/tools/experimental/open_file_tool/tool.py +0 -0
  199. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/tools/experimental/retrieve_search_scope_tool/__init__.py +0 -0
  200. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/tools/experimental/retrieve_search_scope_tool/config.py +0 -0
  201. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/tools/experimental/retrieve_search_scope_tool/tool.py +0 -0
  202. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/tools/experimental/todo/__init__.py +0 -0
  203. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/tools/experimental/todo/config.py +0 -0
  204. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/tools/experimental/todo/prompts/__init__.py +0 -0
  205. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/tools/experimental/todo/prompts/execution_reminder.j2 +0 -0
  206. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/tools/experimental/todo/prompts/system_prompt.j2 +0 -0
  207. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/tools/experimental/todo/prompts/tool_description.j2 +0 -0
  208. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/tools/experimental/todo/prompts/verification_nudge.j2 +0 -0
  209. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/tools/experimental/todo/schemas.py +0 -0
  210. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/tools/experimental/todo/service.py +0 -0
  211. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/tools/factory.py +0 -0
  212. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/tools/mcp/__init__.py +0 -0
  213. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/tools/mcp/manager.py +0 -0
  214. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/tools/mcp/models.py +0 -0
  215. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/tools/mcp/tool_wrapper.py +0 -0
  216. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/tools/openai_builtin/__init__.py +0 -0
  217. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/__init__.py +0 -0
  218. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/postprocessors/__init__.py +0 -0
  219. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/postprocessors/code_display.py +0 -0
  220. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/schemas.py +0 -0
  221. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/tools/openai_builtin/manager.py +0 -0
  222. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/tools/schemas.py +0 -0
  223. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/tools/test/test_mcp_manager.py +0 -0
  224. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/tools/test/test_tool_progress_reporter.py +0 -0
  225. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/tools/tool_progress_reporter.py +0 -0
  226. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/tools/utils/__init__.py +0 -0
  227. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/tools/utils/source_handling/__init__.py +0 -0
  228. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/tools/utils/source_handling/schema.py +0 -0
  229. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/tools/utils/source_handling/source_formatting.py +0 -0
  230. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/tools/utils/source_handling/tests/test_source_formatting.py +0 -0
  231. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic_table/__init__.py +0 -0
  232. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic_table/schemas.py +0 -0
  233. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic_table/service.py +0 -0
  234. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/app/__init__.py +0 -0
  235. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/app/chat_event_filter_options_settings.py +0 -0
  236. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/app/dev_util.py +0 -0
  237. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/app/fast_api_factory.py +0 -0
  238. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/app/feature_flags.py +0 -0
  239. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/app/find_env_file.py +0 -0
  240. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/app/init_logging.py +0 -0
  241. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/app/init_sdk.py +0 -0
  242. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/app/performance/async_tasks.py +0 -0
  243. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/app/performance/async_wrapper.py +0 -0
  244. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/app/unique_settings.py +0 -0
  245. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/app/verification.py +0 -0
  246. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/app/webhook.py +0 -0
  247. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/chat/__init__.py +0 -0
  248. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/chat/cancellation.py +0 -0
  249. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/chat/constants.py +0 -0
  250. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/chat/deprecated/service.py +0 -0
  251. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/chat/functions.py +0 -0
  252. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/chat/rendering.py +0 -0
  253. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/chat/responses_api.py +0 -0
  254. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/chat/schemas.py +0 -0
  255. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/chat/service.py +0 -0
  256. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/chat/state.py +0 -0
  257. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/chat/utils.py +0 -0
  258. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/content/__init__.py +0 -0
  259. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/content/constants.py +0 -0
  260. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/content/functions.py +0 -0
  261. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/content/schemas.py +0 -0
  262. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/content/service.py +0 -0
  263. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/content/smart_rules.py +0 -0
  264. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/content/utils.py +0 -0
  265. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/data_extraction/README.md +0 -0
  266. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/data_extraction/__init__.py +0 -0
  267. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/data_extraction/augmented/__init__.py +0 -0
  268. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/data_extraction/augmented/service.py +0 -0
  269. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/data_extraction/base.py +0 -0
  270. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/data_extraction/basic/__init__.py +0 -0
  271. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/data_extraction/basic/config.py +0 -0
  272. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/data_extraction/basic/prompt.py +0 -0
  273. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/data_extraction/basic/service.py +0 -0
  274. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/elicitation/__init__.py +0 -0
  275. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/elicitation/constants.py +0 -0
  276. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/elicitation/exceptions.py +0 -0
  277. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/elicitation/functions.py +0 -0
  278. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/elicitation/schemas.py +0 -0
  279. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/elicitation/service.py +0 -0
  280. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/embedding/__init__.py +0 -0
  281. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/embedding/constants.py +0 -0
  282. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/embedding/functions.py +0 -0
  283. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/embedding/schemas.py +0 -0
  284. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/embedding/service.py +0 -0
  285. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/embedding/utils.py +0 -0
  286. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/experimental/README.md +0 -0
  287. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/experimental/__init__.py +0 -0
  288. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/experimental/_internal/__init__.py +0 -0
  289. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/experimental/_internal/streaming/__init__.py +0 -0
  290. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/experimental/_internal/streaming/common.py +0 -0
  291. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/experimental/_internal/streaming/pattern_replacer.py +0 -0
  292. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/experimental/components/__init__.py +0 -0
  293. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/experimental/components/_base.py +0 -0
  294. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/experimental/components/content_tree/__init__.py +0 -0
  295. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/experimental/components/content_tree/functions.py +0 -0
  296. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/experimental/components/content_tree/schemas.py +0 -0
  297. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/experimental/components/content_tree/service.py +0 -0
  298. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/experimental/components/internal_search/__init__.py +0 -0
  299. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/experimental/components/internal_search/base/__init__.py +0 -0
  300. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/experimental/components/internal_search/base/config.py +0 -0
  301. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/experimental/components/internal_search/base/schemas.py +0 -0
  302. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/experimental/components/internal_search/base/service.py +0 -0
  303. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/experimental/components/internal_search/base/utils.py +0 -0
  304. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/experimental/components/internal_search/chat/__init__.py +0 -0
  305. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/experimental/components/internal_search/chat/config.py +0 -0
  306. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/experimental/components/internal_search/chat/schemas.py +0 -0
  307. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/experimental/components/internal_search/chat/service.py +0 -0
  308. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/experimental/components/internal_search/knowledge_base/__init__.py +0 -0
  309. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/experimental/components/internal_search/knowledge_base/config.py +0 -0
  310. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/experimental/components/internal_search/knowledge_base/schemas.py +0 -0
  311. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/experimental/components/internal_search/knowledge_base/service.py +0 -0
  312. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/experimental/components/internal_search/post_processing/__init__.py +0 -0
  313. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/experimental/components/internal_search/post_processing/config.py +0 -0
  314. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/experimental/components/internal_search/post_processing/service.py +0 -0
  315. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/experimental/content_tree/__init__.py +0 -0
  316. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/experimental/identity/__init__.py +0 -0
  317. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/experimental/integrations/__init__.py +0 -0
  318. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/experimental/integrations/openai/__init__.py +0 -0
  319. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/experimental/integrations/openai/streaming/__init__.py +0 -0
  320. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/__init__.py +0 -0
  321. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/_async_bridge.py +0 -0
  322. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/chat_completions/__init__.py +0 -0
  323. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/chat_completions/complete_with_references.py +0 -0
  324. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/chat_completions/stream_event_router.py +0 -0
  325. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/chat_completions/text_event_handler.py +0 -0
  326. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/chat_completions/tool_call_event_handler.py +0 -0
  327. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/events.py +0 -0
  328. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/protocols/__init__.py +0 -0
  329. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/protocols/chat_completions.py +0 -0
  330. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/protocols/responses.py +0 -0
  331. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/responses/__init__.py +0 -0
  332. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/responses/code_interpreter_event_handler.py +0 -0
  333. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/responses/complete_with_references.py +0 -0
  334. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/responses/completed_event_handler.py +0 -0
  335. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/responses/stream_event_router.py +0 -0
  336. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/responses/text_delta_event_handler.py +0 -0
  337. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/responses/tool_call_event_handler.py +0 -0
  338. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/subscribers/__init__.py +0 -0
  339. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/subscribers/message_persister.py +0 -0
  340. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/subscribers/progress_log_persister.py +0 -0
  341. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/experimental/resources/__init__.py +0 -0
  342. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/experimental/resources/content_folder/__init__.py +0 -0
  343. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/experimental/resources/content_folder/functions.py +0 -0
  344. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/experimental/resources/content_folder/schemas.py +0 -0
  345. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/experimental/resources/content_folder/service.py +0 -0
  346. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/experimental/resources/facades/__init__.py +0 -0
  347. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/experimental/resources/facades/identity/__init__.py +0 -0
  348. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/experimental/resources/facades/identity/service.py +0 -0
  349. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/experimental/resources/group/__init__.py +0 -0
  350. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/experimental/resources/group/functions.py +0 -0
  351. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/experimental/resources/group/schemas.py +0 -0
  352. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/experimental/resources/group/service.py +0 -0
  353. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/experimental/resources/scheduled_task/__init__.py +0 -0
  354. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/experimental/resources/scheduled_task/cron.py +0 -0
  355. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/experimental/resources/scheduled_task/functions.py +0 -0
  356. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/experimental/resources/scheduled_task/schemas.py +0 -0
  357. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/experimental/resources/scheduled_task/service.py +0 -0
  358. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/experimental/resources/user/__init__.py +0 -0
  359. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/experimental/resources/user/functions.py +0 -0
  360. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/experimental/resources/user/schemas.py +0 -0
  361. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/experimental/resources/user/service.py +0 -0
  362. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/experimental/testing/__init__.py +0 -0
  363. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/framework_utilities/__init__.py +0 -0
  364. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/framework_utilities/langchain/__init__.py +0 -0
  365. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/framework_utilities/langchain/client.py +0 -0
  366. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/framework_utilities/langchain/history.py +0 -0
  367. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/framework_utilities/openai/__init__.py +0 -0
  368. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/framework_utilities/openai/client.py +0 -0
  369. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/framework_utilities/openai/message_builder.py +0 -0
  370. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/framework_utilities/utils.py +0 -0
  371. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/language_model/__init__.py +0 -0
  372. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/language_model/_responses_api_utils.py +0 -0
  373. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/language_model/builder.py +0 -0
  374. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/language_model/constants.py +0 -0
  375. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/language_model/default_language_model.py +0 -0
  376. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/language_model/functions.py +0 -0
  377. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/language_model/prompt.py +0 -0
  378. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/language_model/reference.py +0 -0
  379. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/language_model/service.py +0 -0
  380. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/language_model/stream_transform.py +0 -0
  381. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/language_model/utils.py +0 -0
  382. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/monitoring/__init__.py +0 -0
  383. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/monitoring/middleware.py +0 -0
  384. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/monitoring/registry.py +0 -0
  385. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/protocols/support.py +0 -0
  386. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/services/__init__.py +0 -0
  387. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/services/factory.py +0 -0
  388. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/services/knowledge_base.py +0 -0
  389. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/short_term_memory/__init__.py +0 -0
  390. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/short_term_memory/constants.py +0 -0
  391. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/short_term_memory/functions.py +0 -0
  392. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/short_term_memory/schemas.py +0 -0
  393. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/short_term_memory/service.py +0 -0
  394. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/smart_rules/__init__.py +0 -0
  395. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/smart_rules/compile.py +0 -0
  396. {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/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: 2026.22.0
3
+ Version: 2026.22.0.dev0
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>
@@ -16,7 +16,7 @@ Requires-Dist: sseclient>=0.0.27,<0.0.28
16
16
  Requires-Dist: openai>=1.105.0,<3
17
17
  Requires-Dist: platformdirs>=4.0.0,<5
18
18
  Requires-Dist: pillow>=12.1.1
19
- Requires-Dist: unique-sdk>=2026.22.0
19
+ Requires-Dist: unique-sdk>=2026.22.0.dev0,<2026.22.0rc0
20
20
  Requires-Dist: jambo>=0.1.2,<0.2
21
21
  Requires-Dist: jinja2>=3.1.6,<4
22
22
  Requires-Dist: docxtpl>=0.20.1,<0.21
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "unique_toolkit"
3
- version = "2026.22.0"
3
+ version = "2026.22.0.dev0"
4
4
  description = ""
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.12"
@@ -28,7 +28,7 @@ dependencies = [
28
28
  "openai>=1.105.0,<3",
29
29
  "platformdirs>=4.0.0,<5",
30
30
  "pillow>=12.1.1",
31
- "unique-sdk>=2026.22.0",
31
+ "unique-sdk>=2026.22.0.dev0,<2026.22.0rc0",
32
32
  "jambo>=0.1.2,<0.2",
33
33
  "jinja2>=3.1.6,<4",
34
34
  "docxtpl>=0.20.1,<0.21",
@@ -8,7 +8,6 @@ from pathlib import Path
8
8
  class FileMimeType(StrEnum):
9
9
  PDF = "application/pdf"
10
10
  DOCX = "application/vnd.openxmlformats-officedocument.wordprocessingml.document"
11
- DOTX = "application/vnd.openxmlformats-officedocument.wordprocessingml.template"
12
11
  DOC = "application/msword"
13
12
  # TODO: clean up duplicates and make the monolith compatible with this.
14
13
  XLSX = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
@@ -42,7 +41,7 @@ class FileMimeType(StrEnum):
42
41
  @property
43
42
  def is_docx(self) -> bool:
44
43
  cls = self.__class__
45
- return self in {cls.DOCX, cls.DOTX, cls.DOC}
44
+ return self in {cls.DOCX, cls.DOC}
46
45
 
47
46
  @property
48
47
  def is_pdf(self) -> bool:
@@ -99,7 +98,7 @@ class FileMimeType(StrEnum):
99
98
 
100
99
  def get_common_name(extension: FileMimeType) -> str:
101
100
  match extension:
102
- case FileMimeType.DOCX | FileMimeType.DOTX | FileMimeType.DOC:
101
+ case FileMimeType.DOCX | FileMimeType.DOC:
103
102
  return "docx"
104
103
  case (
105
104
  FileMimeType.XLSX
@@ -66,6 +66,11 @@ class FeatureFlags(BaseSettings):
66
66
  description="Enable new answers UI (UN-14411)",
67
67
  )
68
68
 
69
+ enable_elicitation_un_15809: FeatureFlag = Field(
70
+ default=FeatureFlag(False),
71
+ description="Enable elicitation (UN-15809)",
72
+ )
73
+
69
74
  enable_html_rendering_un_15131: FeatureFlag = Field(
70
75
  default=FeatureFlag(False),
71
76
  description="Enable HTML rendering for code interpreter files (UN-15131). Can be 'true' or comma-separated company IDs.",
@@ -76,11 +81,6 @@ class FeatureFlags(BaseSettings):
76
81
  description="Emit codeExecution fences in message.text for code interpreter outputs (UN-17972). When disabled, inline file refs are kept as-is. Can be 'true' or comma-separated company IDs.",
77
82
  )
78
83
 
79
- enable_html_with_fence_un_17927: FeatureFlag = Field(
80
- default=FeatureFlag(False),
81
- description="Render HTML code interpreter files as htmlWithSource fences instead of HtmlRendering blocks (UN-17927). Requires enable_code_execution_fence_un_17972 to also be enabled. Can be 'true' or comma-separated company IDs.",
82
- )
83
-
84
84
  enable_web_search_argument_screening_un_18741: FeatureFlag = Field(
85
85
  default=FeatureFlag(False),
86
86
  description="Enable argument screening agent for web search tool calls (UN-18741). Can be 'true' or comma-separated company IDs.",
@@ -13,7 +13,6 @@ from unique_toolkit.agentic.history_manager.history_construction_with_contents i
13
13
  get_full_history_with_contents_and_tool_calls_async,
14
14
  get_full_history_with_contents_async,
15
15
  )
16
- from unique_toolkit.agentic.history_manager.settings import env_settings
17
16
  from unique_toolkit.agentic.history_manager.utils import (
18
17
  get_selected_uploaded_content_ids,
19
18
  serialize_tool_content_json,
@@ -34,8 +33,10 @@ from unique_toolkit.language_model.schemas import (
34
33
  )
35
34
  from unique_toolkit.services.factory import UniqueServiceFactory
36
35
 
37
- MAX_INPUT_TOKENS_SAFETY_PERCENTAGE = env_settings.input_correction_reduction_factor
38
- SAFETY_MARGIN_FOR_AGGRESSIVE_REDUCTION = env_settings.input_aggressive_reduction_factor
36
+ MAX_INPUT_TOKENS_SAFETY_PERCENTAGE = (
37
+ 0.1 # 10% safety margin for input tokens we need 10% less does not work.
38
+ )
39
+ SAFETY_MARGIN_FOR_AGGRESSIVE_REDUCTION = 0.9
39
40
 
40
41
 
41
42
  class SourceReductionResult(BaseModel):
@@ -5,8 +5,8 @@ from pydantic import (
5
5
  BaseModel,
6
6
  BeforeValidator,
7
7
  Field,
8
- SerializeAsAny,
9
8
  ValidationInfo,
9
+ field_serializer,
10
10
  model_validator,
11
11
  )
12
12
  from typing_extensions import TypeVar
@@ -53,7 +53,7 @@ class ToolBuildConfig(BaseModel, Generic[T]):
53
53
  """Main tool configuration"""
54
54
 
55
55
  name: str
56
- configuration: SerializeAsAny[T]
56
+ configuration: T
57
57
  display_name: str = ""
58
58
  icon: Annotated[ToolIcon, BeforeValidator(handle_undefined_icon)] = Field(
59
59
  default=ToolIcon.BOOK,
@@ -125,3 +125,7 @@ class ToolBuildConfig(BaseModel, Generic[T]):
125
125
  config = configuration
126
126
  value["configuration"] = config
127
127
  return value
128
+
129
+ @field_serializer("configuration")
130
+ def serialize_config(self, value: T) -> dict[str, Any]:
131
+ return value.__class__.model_dump(value)
@@ -8,4 +8,3 @@ TODO(UN-20578): Add canonical name constants for the remaining toolkit tools.
8
8
 
9
9
  INTERNAL_SEARCH_TOOL_NAME = "InternalSearch"
10
10
  UPLOADED_SEARCH_TOOL_NAME = "UploadedSearch"
11
- SKILL_TOOL_NAME = "Skill"
@@ -46,13 +46,6 @@ class OpenAIBuiltInTool(ABC, Generic[ToolType]):
46
46
  def display_name(self) -> str:
47
47
  raise NotImplementedError()
48
48
 
49
- def is_capability(self) -> bool:
50
- """Return True if this tool is a capability that must remain in the
51
- active tool set regardless of ``tool_choices`` filtering.
52
- Default: False.
53
- """
54
- return False
55
-
56
49
  def get_required_include_params(self) -> list[ResponseIncludable]:
57
50
  """Return Responses API `include` values required by this tool.
58
51
 
@@ -17,36 +17,7 @@ from unique_toolkit.agentic.tools.openai_builtin.code_interpreter.postprocessors
17
17
  )
18
18
  from unique_toolkit.agentic.tools.schemas import BaseToolConfig
19
19
 
20
- _TOOL_DESCRIPTION_FILES_SUFFIX = """
21
- {%- if user_uploaded_files and user_uploaded_files | length > 0 %}
22
-
23
- ## User Uploaded Files
24
- The following files have been uploaded by the user and are available in the environment:
25
- {% for file in user_uploaded_files %}
26
- - {{ file }}
27
- {% endfor %}
28
- {% endif %}
29
-
30
- {%- if kb_uploaded_files and kb_uploaded_files | length > 0 %}
31
-
32
- ## Knowledge Base Files
33
- These files are made available by the system but were NOT uploaded by the user:
34
- {% for file in kb_uploaded_files %}
35
- - {{ file }}
36
- {% endfor %}
37
- {% endif %}
38
-
39
- {%- if code_interpreter_artifacts and code_interpreter_artifacts | length > 0 %}
40
-
41
- ## Code Interpreter Artifacts
42
- The following files have been generated by you using the python tool in previous turns:
43
- {% for file in code_interpreter_artifacts %}
44
- - {{ file }}
45
- {% endfor %}
46
- {% endif %}
47
- """.strip()
48
-
49
- _TOOL_DESCRIPTION_FOR_SYSTEM_PROMPT_BASE = """
20
+ DEFAULT_TOOL_DESCRIPTION_FOR_SYSTEM_PROMPT = """
50
21
  Use this tool to run python code, e.g to generate plots, process excel files, perform calculations, etc.
51
22
 
52
23
  Instructions:
@@ -66,7 +37,7 @@ WHENEVER you reference a generated file, you MUST use the following format:
66
37
  IMPORTANT: Do NOT append a leading `!` even when displaying an image.
67
38
  Always use a line break between the title and the markdown!
68
39
  - Files with image file extensions are displayed directly in the chat, while other file extensions are shown as download links.
69
- - Not using syntax above will FAIL to show images to the user.
40
+ - Not using syntax above will FAIL to show images to the user.
70
41
  - YOU MUST use the syntax above to display images, otherwise the image will not be displayed in the chat.
71
42
  - Only the following file types are allowed to be uploaded to the platform, anything else will FAIL: PDF, DOCX, XLSX, PPTX, CSV, HTML, MD, TXT, PNG, JPG, JPEG.
72
43
  - You MUST always use this syntax, otherwise the files will not be displayed in the chat.
@@ -87,11 +58,7 @@ Handling User Queries:
87
58
  - REMEMBER that you can always read the content of text, csv files if needed. In this case, you MUST always limit the amount of data displayed.
88
59
  - If a tool step fails, you must recover as much as possible.
89
60
  - After exhausting all possible solutions without success, inform the user of what was tried and request clarification/help.
90
- """
91
-
92
- DEFAULT_TOOL_DESCRIPTION_FOR_SYSTEM_PROMPT = (
93
- _TOOL_DESCRIPTION_FOR_SYSTEM_PROMPT_BASE + _TOOL_DESCRIPTION_FILES_SUFFIX
94
- ).strip()
61
+ """.strip()
95
62
 
96
63
  # Used when the code-execution fence feature flag (UN-17972) is enabled.
97
64
  # The frontend derives the artifact title from the filename itself, so the
@@ -104,7 +71,7 @@ DEFAULT_TOOL_DESCRIPTION_FOR_SYSTEM_PROMPT = (
104
71
  # UN-19880: kaleido is not installed in the Azure OpenAI code interpreter environment,
105
72
  # so plotly's fig.write_image() always fails. The "Visualization library choice" section
106
73
  # steers the model to use matplotlib for PNG outputs and plotly only for HTML artifacts.
107
- _TOOL_DESCRIPTION_FOR_SYSTEM_PROMPT_FENCE_BASE = """
74
+ DEFAULT_TOOL_DESCRIPTION_FOR_SYSTEM_PROMPT_FENCE = """
108
75
  Use this tool to run python code, e.g to generate plots, process excel files, perform calculations, etc.
109
76
 
110
77
  Instructions:
@@ -170,11 +137,7 @@ Handling User Queries:
170
137
  - REMEMBER that you can always read the content of text, csv files if needed. In this case, you MUST always limit the amount of data displayed.
171
138
  - If a tool step fails, you must recover as much as possible.
172
139
  - After exhausting all possible solutions without success, inform the user of what was tried and request clarification/help.
173
- """
174
-
175
- DEFAULT_TOOL_DESCRIPTION_FOR_SYSTEM_PROMPT_FENCE = (
176
- _TOOL_DESCRIPTION_FOR_SYSTEM_PROMPT_FENCE_BASE + _TOOL_DESCRIPTION_FILES_SUFFIX
177
- ).strip()
140
+ """.strip()
178
141
 
179
142
 
180
143
  DEFAULT_TOOL_DESCRIPTION_FOR_USER_PROMPT = ""
@@ -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,
@@ -29,9 +30,6 @@ from unique_toolkit.agentic.short_term_memory_manager.persistent_short_term_memo
29
30
  PersistentShortMemoryManager,
30
31
  )
31
32
  from unique_toolkit.agentic.tools.config import get_configuration_dict
32
- from unique_toolkit.agentic.tools.openai_builtin.code_interpreter.postprocessors.artifacts import (
33
- save_code_execution_artifact,
34
- )
35
33
  from unique_toolkit.agentic.tools.openai_builtin.code_interpreter.schemas import (
36
34
  CodeInterpreterBlock,
37
35
  CodeInterpreterFile,
@@ -503,15 +501,6 @@ class DisplayCodeInterpreterFilesPostProcessor(
503
501
  fence_ff_on = feature_flags.enable_code_execution_fence_un_17972.is_enabled(
504
502
  self._company_id
505
503
  )
506
- # HTML uses htmlWithSource only when BOTH the code-execution fence FF AND the
507
- # dedicated HTML-fence FF are on. Default (FF off) keeps HtmlRendering so
508
- # existing deployments are unaffected.
509
- html_fence_ff_on = (
510
- fence_ff_on
511
- and feature_flags.enable_html_with_fence_un_17927.is_enabled(
512
- self._company_id
513
- )
514
- )
515
504
 
516
505
  replaced_files: list[str] = []
517
506
  missed_files: list[str] = []
@@ -543,9 +532,7 @@ class DisplayCodeInterpreterFilesPostProcessor(
543
532
  )
544
533
  changed |= replaced
545
534
 
546
- # HTML rendered as HtmlRendering block unless the dedicated html-fence FF
547
- # is on (enable_html_with_fence_un_17927). Default keeps HtmlRendering.
548
- elif is_html and not html_fence_ff_on:
535
+ elif is_html:
549
536
  loop_response.message.text, replaced = _replace_container_html_citation(
550
537
  text=loop_response.message.text or "",
551
538
  filename=filename,
@@ -553,8 +540,6 @@ class DisplayCodeInterpreterFilesPostProcessor(
553
540
  )
554
541
  changed |= replaced
555
542
 
556
- # Non-HTML files, or HTML when html_fence_ff_on → inline content link for
557
- # subsequent fence injection (htmlWithSource / imgWithSource / fileWithSource)
558
543
  else:
559
544
  loop_response.message.text, replaced = _replace_container_file_citation(
560
545
  text=loop_response.message.text or "",
@@ -576,7 +561,6 @@ class DisplayCodeInterpreterFilesPostProcessor(
576
561
  else:
577
562
  missed_files.append(filename)
578
563
 
579
- # HtmlRendering and htmlWithSource both embed contentId directly — no ContentReference needed
580
564
  is_html_rendered = is_html
581
565
  if replaced and not (is_image or is_html_rendered or fence_ff_on):
582
566
  loop_response.message.references.append(
@@ -598,17 +582,13 @@ class DisplayCodeInterpreterFilesPostProcessor(
598
582
  )
599
583
 
600
584
  if fence_ff_on:
601
- code_blocks = _build_code_blocks(
602
- loop_response, self._content_map, include_html=html_fence_ff_on
603
- )
585
+ code_blocks = _build_code_blocks(loop_response, self._content_map)
604
586
  self._log.info(
605
587
  "Fence injection — %d code block(s), files: %s",
606
588
  len(code_blocks),
607
589
  [f.filename for b in code_blocks for f in b.files],
608
590
  )
609
- _warn_unmatched_code_blocks(
610
- self._content_map, code_blocks, include_html=html_fence_ff_on
611
- )
591
+ _warn_unmatched_code_blocks(self._content_map, code_blocks)
612
592
  text_before = loop_response.message.text
613
593
  loop_response.message.text = _inject_code_execution_fences(
614
594
  loop_response.message.text or "",
@@ -681,13 +661,32 @@ class DisplayCodeInterpreterFilesPostProcessor(
681
661
  container_file.filename, "uploading", force_publish=True
682
662
  )
683
663
 
664
+ raw_mime = guess_type(container_file.filename)[0] or "text/plain"
665
+ mime = _kb_safe_mime(raw_mime)
666
+ if mime != raw_mime:
667
+ self._log.info(
668
+ "MIME type '%s' is not supported by the Unique KB; "
669
+ "uploading '%s' as '%s' so the file can be stored and downloaded.",
670
+ raw_mime,
671
+ container_file.filename,
672
+ mime,
673
+ )
674
+ self._log.info(
675
+ "Uploading '%s' to knowledge base (mime=%s, %d bytes)",
676
+ container_file.filename,
677
+ mime,
678
+ len(file_bytes),
679
+ )
680
+
684
681
  assert self._chat_service is not None # Checked in __init__
685
682
  upload_t0 = time.monotonic()
686
683
  content = await self._build_retry()(
687
- save_code_execution_artifact,
688
- chat_service=self._chat_service,
689
- file=container_file,
690
- file_bytes=file_bytes,
684
+ self._chat_service.upload_to_chat_from_bytes_async,
685
+ content=file_bytes,
686
+ content_name=container_file.filename,
687
+ mime_type=mime,
688
+ skip_ingestion=True,
689
+ hide_in_chat=True,
691
690
  )
692
691
  upload_ms = (time.monotonic() - upload_t0) * 1000
693
692
  if upload_ms > 2000:
@@ -930,6 +929,37 @@ def _get_file_type(filename: str) -> CodeInterpreterFileType:
930
929
  return "document"
931
930
 
932
931
 
932
+ def _kb_safe_mime(mime: str) -> str:
933
+ """Return a MIME type the Unique KB will accept.
934
+
935
+ Membership is defined by ``FileMimeType`` and ``ImageMimeType`` in
936
+ ``unique_toolkit._common.utils.files`` (same catalog as path-based helpers
937
+ like ``FileMimeType.is_valid_mime``, but here we already have a resolved
938
+ MIME string from ``mimetypes.guess_type``, so we use StrEnum value lookup
939
+ instead of re-parsing a path).
940
+
941
+ The KB GraphQL API rejects many code-file MIME types (e.g. ``text/x-python``
942
+ for ``.py`` files). Anything not in those enums is coerced to
943
+ ``text/plain`` so the file can be stored and downloaded without changing
944
+ its bytes.
945
+
946
+ Other ``image/*`` subtypes (e.g. ``image/jpg``) still pass through unchanged.
947
+ """
948
+ try:
949
+ FileMimeType(mime)
950
+ return mime
951
+ except ValueError:
952
+ pass
953
+ try:
954
+ ImageMimeType(mime)
955
+ return mime
956
+ except ValueError:
957
+ pass
958
+ if mime.startswith("image/"):
959
+ return mime
960
+ return "text/plain"
961
+
962
+
933
963
  def _file_title(filename: str) -> str:
934
964
  """Derive a human-readable title from a filename.
935
965
 
@@ -989,9 +1019,12 @@ def _build_file_fence(file: CodeInterpreterFile, code: str, fence_id: int) -> st
989
1019
  content_id, a title derived from the filename, the type, and the
990
1020
  escaped source code.
991
1021
 
1022
+ HTML is not emitted here in normal flow: it is rendered via ``HtmlRendering`` blocks
1023
+ in message text and excluded from fence injection. If ``type="html"`` is passed (e.g.
1024
+ orphan path), fall through to ``fileWithSource`` like other non-image artifacts.
1025
+
992
1026
  Format (4 backticks so inner code backticks never close the fence):
993
1027
  ````imgWithSource(id='{n}', contentId='{id}', title="{title}", code="{escaped_code}")````
994
- ````htmlWithSource(id='{n}', contentId='{id}', title="{title}", code="{escaped_code}")````
995
1028
  ````fileWithSource(id='{n}', contentId='{id}', title="{title}", type="{type}", code="{escaped_code}")````
996
1029
  """
997
1030
  title = _file_title(file.filename)
@@ -999,8 +1032,6 @@ def _build_file_fence(file: CodeInterpreterFile, code: str, fence_id: int) -> st
999
1032
  outer = "````"
1000
1033
  if file.type == "image":
1001
1034
  tag = f"imgWithSource(id='{fence_id}', contentId='{file.content_id}', title=\"{title}\", code=\"{escaped}\")"
1002
- elif file.type == "html":
1003
- tag = f"htmlWithSource(id='{fence_id}', contentId='{file.content_id}', title=\"{title}\", code=\"{escaped}\")"
1004
1035
  else:
1005
1036
  ftype = _file_frontend_type(file.filename)
1006
1037
  tag = f'fileWithSource(id=\'{fence_id}\', contentId=\'{file.content_id}\', title="{title}", type="{ftype}", code="{escaped}")'
@@ -1024,7 +1055,7 @@ def _inline_ref_pattern(file: CodeInterpreterFile) -> re.Pattern[str]:
1024
1055
 
1025
1056
 
1026
1057
  _FENCE_BLOCK_START = re.compile(
1027
- r"^[^\n`]+?(````(?:imgWithSource|fileWithSource|htmlWithSource)\()",
1058
+ r"^[^\n`]+?(````(?:imgWithSource|fileWithSource)\()",
1028
1059
  re.MULTILINE,
1029
1060
  )
1030
1061
 
@@ -1034,9 +1065,9 @@ _FENCE_BLOCK_START = re.compile(
1034
1065
  # - cross-line: 1 or 2 newlines optionally surrounded by horizontal whitespace
1035
1066
  # (list-item linebreak, or blank-line paragraph gap)
1036
1067
  _CONSECUTIVE_FENCES_RE = re.compile(
1037
- r"(````(?:imgWithSource|fileWithSource|htmlWithSource)\([^\n]*\)````)"
1068
+ r"(````(?:imgWithSource|fileWithSource)\([^\n]*\)````)"
1038
1069
  r"(?:[^\n`]*|[ \t]*\n{1,2}[ \t]*)"
1039
- r"(?=````(?:imgWithSource|fileWithSource|htmlWithSource)\()"
1070
+ r"(?=````(?:imgWithSource|fileWithSource)\()"
1040
1071
  )
1041
1072
 
1042
1073
 
@@ -1100,7 +1131,6 @@ def _inject_code_execution_fences(
1100
1131
  def _build_code_blocks(
1101
1132
  loop_response: ResponsesLanguageModelStreamResponse,
1102
1133
  content_map: dict[str, str | None],
1103
- include_html: bool = False,
1104
1134
  ) -> list[CodeInterpreterBlock]:
1105
1135
  """Map each code interpreter call to the files it produced via /mnt/data/ path matching.
1106
1136
 
@@ -1198,9 +1228,11 @@ def _build_code_blocks(
1198
1228
  # overwritten across executions. Using a dict keyed by filename ensures each
1199
1229
  # file appears exactly once per block (last annotation wins, consistent with
1200
1230
  # the last-writer-wins rule applied in step 1).
1231
+ # HTML files are excluded: they are always rendered via HtmlRendering blocks
1232
+ # and never participate in fence injection.
1201
1233
  block_file_map: dict[int, dict[str, CodeInterpreterFile]] = {}
1202
1234
  for annotation in loop_response.container_files:
1203
- if not include_html and _get_file_type(annotation.filename) == "html":
1235
+ if _get_file_type(annotation.filename) == "html":
1204
1236
  continue
1205
1237
  content_id = content_map.get(annotation.filename)
1206
1238
  if content_id is None:
@@ -1284,7 +1316,6 @@ def _replace_dangling_sandbox_links(text: str) -> tuple[str, bool]:
1284
1316
  def _warn_unmatched_code_blocks(
1285
1317
  content_map: dict[str, str | None],
1286
1318
  code_blocks: list[CodeInterpreterBlock],
1287
- include_html: bool = False,
1288
1319
  ) -> None:
1289
1320
  """Warn for files that were uploaded but could not be matched to any code block.
1290
1321
 
@@ -1298,7 +1329,7 @@ def _warn_unmatched_code_blocks(
1298
1329
  for filename, content_id in content_map.items():
1299
1330
  if content_id is None:
1300
1331
  continue
1301
- if not include_html and _get_file_type(filename) == "html":
1332
+ if _get_file_type(filename) == "html":
1302
1333
  continue
1303
1334
  if filename not in fenced_filenames:
1304
1335
  logger.warning(