unique_toolkit 2026.32.4__tar.gz → 2026.34.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (425) hide show
  1. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/PKG-INFO +7 -2
  2. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/pyproject.toml +22 -3
  3. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/agentic/debug_info_manager/debug_info_manager.py +6 -0
  4. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/agentic/evaluation/hallucination/hallucination_evaluation.py +4 -0
  5. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/agentic/evaluation/hallucination/service.py +2 -0
  6. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/agentic/evaluation/hallucination/utils.py +8 -1
  7. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/agentic/evaluation/tests/test_hallucination_external_context.py +15 -1
  8. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/agentic/evaluation/tests/test_hallucination_utils.py +48 -0
  9. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/agentic/feature_flags/__init__.py +2 -1
  10. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/agentic/feature_flags/feature_flags.py +36 -1
  11. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/agentic/history_manager/history_manager.py +8 -4
  12. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/agentic/history_manager/loop_token_reducer.py +16 -3
  13. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/agentic/history_manager/utils.py +6 -4
  14. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/agentic/tools/a2a/tool/service.py +5 -6
  15. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/agentic/tools/mcp/tool_wrapper.py +11 -16
  16. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/postprocessors/code_display.py +11 -7
  17. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/postprocessors/generated_files.py +28 -23
  18. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/agentic_table/__init__.py +2 -0
  19. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/agentic_table/schemas.py +21 -0
  20. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/agentic_table/service.py +174 -26
  21. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/app/unique_settings.py +13 -2
  22. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/chat/schemas.py +2 -1
  23. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/experimental/resources/feature_flags/__init__.py +10 -3
  24. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/experimental/resources/feature_flags/client.py +14 -14
  25. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/language_model/functions.py +90 -16
  26. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/language_model/service.py +17 -1
  27. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/monitoring/__init__.py +21 -1
  28. unique_toolkit-2026.34.0/unique_toolkit/monitoring/tracing.py +269 -0
  29. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/services/chat_service.py +5 -3
  30. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/README.md +0 -0
  31. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/__init__.py +0 -0
  32. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/_common/__init__.py +0 -0
  33. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/_common/_base_service.py +0 -0
  34. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/_common/_time_utils.py +0 -0
  35. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/_common/api_calling/human_verification_manager.py +0 -0
  36. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/_common/base_model_type_attribute.py +0 -0
  37. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/_common/chunk_relevancy_sorter/config.py +0 -0
  38. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/_common/chunk_relevancy_sorter/exception.py +0 -0
  39. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/_common/chunk_relevancy_sorter/schemas.py +0 -0
  40. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/_common/chunk_relevancy_sorter/service.py +0 -0
  41. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/_common/chunk_relevancy_sorter/tests/test_service.py +0 -0
  42. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/_common/config_checker/README.md +0 -0
  43. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/_common/config_checker/__init__.py +0 -0
  44. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/_common/config_checker/__main__.py +0 -0
  45. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/_common/config_checker/cli.py +0 -0
  46. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/_common/config_checker/differ.py +0 -0
  47. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/_common/config_checker/exporter.py +0 -0
  48. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/_common/config_checker/models.py +0 -0
  49. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/_common/config_checker/registry.py +0 -0
  50. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/_common/config_checker/validator.py +0 -0
  51. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/_common/default_language_model.py +0 -0
  52. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/_common/docx_generator/__init__.py +0 -0
  53. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/_common/docx_generator/config.py +0 -0
  54. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/_common/docx_generator/pandoc_converter.py +0 -0
  55. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/_common/docx_generator/schemas.py +0 -0
  56. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/_common/docx_generator/service.py +0 -0
  57. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/_common/docx_generator/template/Doc Template.docx +0 -0
  58. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/_common/endpoint_builder.py +0 -0
  59. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/_common/endpoint_requestor.py +0 -0
  60. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/_common/event_bus.py +0 -0
  61. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/_common/exception.py +0 -0
  62. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/_common/execution.py +0 -0
  63. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/_common/experimental/endpoint_builder.py +0 -0
  64. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/_common/experimental/endpoint_requestor.py +0 -0
  65. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/_common/experimental/write_up_agent/README.md +0 -0
  66. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/_common/experimental/write_up_agent/__init__.py +0 -0
  67. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/_common/experimental/write_up_agent/agent.py +0 -0
  68. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/_common/experimental/write_up_agent/config.py +0 -0
  69. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/_common/experimental/write_up_agent/examples/data.csv +0 -0
  70. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/_common/experimental/write_up_agent/examples/example_usage.py +0 -0
  71. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/_common/experimental/write_up_agent/schemas.py +0 -0
  72. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/_common/experimental/write_up_agent/services/__init__.py +0 -0
  73. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/_common/experimental/write_up_agent/services/dataframe_handler/__init__.py +0 -0
  74. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/_common/experimental/write_up_agent/services/dataframe_handler/exceptions.py +0 -0
  75. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/_common/experimental/write_up_agent/services/dataframe_handler/service.py +0 -0
  76. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/_common/experimental/write_up_agent/services/dataframe_handler/utils.py +0 -0
  77. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/__init__.py +0 -0
  78. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/config.py +0 -0
  79. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/exceptions.py +0 -0
  80. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/prompts/config.py +0 -0
  81. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/prompts/system_prompt.j2 +0 -0
  82. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/prompts/user_prompt.j2 +0 -0
  83. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/service.py +0 -0
  84. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/_common/experimental/write_up_agent/services/template_handler/__init__.py +0 -0
  85. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/_common/experimental/write_up_agent/services/template_handler/default_template.j2 +0 -0
  86. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/_common/experimental/write_up_agent/services/template_handler/exceptions.py +0 -0
  87. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/_common/experimental/write_up_agent/services/template_handler/service.py +0 -0
  88. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/_common/experimental/write_up_agent/services/template_handler/utils.py +0 -0
  89. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/_common/experimental/write_up_agent/utils.py +0 -0
  90. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/_common/feature_flags/schema.py +0 -0
  91. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/_common/metadata_filter_scope.py +0 -0
  92. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/_common/pydantic/rjsf_tags.py +0 -0
  93. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/_common/pydantic_helpers.py +0 -0
  94. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/_common/referencing.py +0 -0
  95. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/_common/string_utilities.py +0 -0
  96. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/_common/tests/test_referencing.py +0 -0
  97. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/_common/tests/test_string_utilities.py +0 -0
  98. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/_common/token/__init__.py +0 -0
  99. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/_common/token/image_token_counting.py +0 -0
  100. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/_common/token/token_counting.py +0 -0
  101. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/_common/token/tokenizers/deepseek/tokenizer.json +0 -0
  102. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/_common/token/tokenizers/qwen/tokenizer.json +0 -0
  103. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/_common/utils/__init__.py +0 -0
  104. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/_common/utils/files.py +0 -0
  105. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/_common/utils/image/encode.py +0 -0
  106. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/_common/utils/jinja/helpers.py +0 -0
  107. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/_common/utils/jinja/render.py +0 -0
  108. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/_common/utils/jinja/schema.py +0 -0
  109. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/_common/utils/jinja/utils.py +0 -0
  110. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/_common/utils/structured_output/__init__.py +0 -0
  111. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/_common/utils/structured_output/schema.py +0 -0
  112. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/_common/utils/write_configuration.py +0 -0
  113. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/_common/validate_required_values.py +0 -0
  114. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/_common/validators.py +0 -0
  115. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/agentic/__init__.py +0 -0
  116. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/agentic/debug_info_manager/test/test_debug_info_manager.py +0 -0
  117. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/agentic/evaluation/config.py +0 -0
  118. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/agentic/evaluation/context_relevancy/prompts/__init__.py +0 -0
  119. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/agentic/evaluation/context_relevancy/prompts/system_prompt.j2 +0 -0
  120. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/agentic/evaluation/context_relevancy/prompts/user_prompt.j2 +0 -0
  121. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/agentic/evaluation/context_relevancy/schema.py +0 -0
  122. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/agentic/evaluation/context_relevancy/service.py +0 -0
  123. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/agentic/evaluation/evaluation_manager.py +0 -0
  124. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/agentic/evaluation/exception.py +0 -0
  125. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/agentic/evaluation/hallucination/constants.py +0 -0
  126. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/agentic/evaluation/hallucination/prompts/__init__.py +0 -0
  127. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/agentic/evaluation/hallucination/prompts/system_prompt.j2 +0 -0
  128. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/agentic/evaluation/hallucination/prompts/user_prompt.j2 +0 -0
  129. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/agentic/evaluation/output_parser.py +0 -0
  130. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/agentic/evaluation/schemas.py +0 -0
  131. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/agentic/evaluation/tests/fixtures.py +0 -0
  132. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/agentic/evaluation/tests/test_config.py +0 -0
  133. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/agentic/evaluation/tests/test_context_relevancy_service.py +0 -0
  134. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/agentic/evaluation/tests/test_hallucination_constants.py +0 -0
  135. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/agentic/evaluation/tests/test_output_parser.py +0 -0
  136. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/agentic/evaluation/tests/test_prompt_loaders.py +0 -0
  137. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/agentic/evaluation/utils.py +0 -0
  138. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/agentic/history_manager/history_construction_with_contents.py +0 -0
  139. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/agentic/history_manager/settings.py +0 -0
  140. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/agentic/loop_runner/__init__.py +0 -0
  141. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/agentic/loop_runner/_iteration_handler_utils.py +0 -0
  142. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/agentic/loop_runner/_responses_iteration_handler_utils.py +0 -0
  143. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/agentic/loop_runner/_responses_stream_handler_utils.py +0 -0
  144. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/agentic/loop_runner/_stream_handler_utils.py +0 -0
  145. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/agentic/loop_runner/base.py +0 -0
  146. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/agentic/loop_runner/middleware/__init__.py +0 -0
  147. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/agentic/loop_runner/middleware/planning/__init__.py +0 -0
  148. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/agentic/loop_runner/middleware/planning/planning.py +0 -0
  149. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/agentic/loop_runner/middleware/planning/schema.py +0 -0
  150. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/agentic/loop_runner/runners/__init__.py +0 -0
  151. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/agentic/loop_runner/runners/basic.py +0 -0
  152. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/agentic/loop_runner/runners/mistral/__init__.py +0 -0
  153. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/agentic/loop_runner/runners/mistral/mistral_runner.py +0 -0
  154. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/agentic/loop_runner/runners/qwen/__init__.py +0 -0
  155. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/agentic/loop_runner/runners/qwen/helpers.py +0 -0
  156. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/agentic/loop_runner/runners/qwen/qwen_runner.py +0 -0
  157. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/agentic/message_log_manager/__init__.py +0 -0
  158. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/agentic/message_log_manager/service.py +0 -0
  159. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/agentic/message_log_order.py +0 -0
  160. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/agentic/postprocessor/postprocessor_manager.py +0 -0
  161. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/agentic/reference_manager/reference_manager.py +0 -0
  162. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/agentic/reference_manager/tests/test_external_context.py +0 -0
  163. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/agentic/responses_api/__init__.py +0 -0
  164. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/agentic/responses_api/postprocessors/code_display.py +0 -0
  165. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/agentic/responses_api/postprocessors/generated_files.py +0 -0
  166. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/agentic/responses_api/stream_handler.py +0 -0
  167. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/agentic/short_term_memory_manager/persistent_short_term_memory_manager.py +0 -0
  168. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/agentic/thinking_manager/thinking_manager.py +0 -0
  169. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/agentic/tools/__init__.py +0 -0
  170. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/agentic/tools/a2a/__init__.py +0 -0
  171. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/agentic/tools/a2a/config.py +0 -0
  172. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/agentic/tools/a2a/evaluation/__init__.py +0 -0
  173. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/agentic/tools/a2a/evaluation/_utils.py +0 -0
  174. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/agentic/tools/a2a/evaluation/config.py +0 -0
  175. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/agentic/tools/a2a/evaluation/evaluator.py +0 -0
  176. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/agentic/tools/a2a/evaluation/summarization_user_message.j2 +0 -0
  177. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/agentic/tools/a2a/manager.py +0 -0
  178. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/agentic/tools/a2a/postprocessing/__init__.py +0 -0
  179. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/agentic/tools/a2a/postprocessing/_display_utils.py +0 -0
  180. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/agentic/tools/a2a/postprocessing/_ref_utils.py +0 -0
  181. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/agentic/tools/a2a/postprocessing/config.py +0 -0
  182. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/agentic/tools/a2a/postprocessing/display.py +0 -0
  183. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/agentic/tools/a2a/postprocessing/references.py +0 -0
  184. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/agentic/tools/a2a/postprocessing/test/test_display.py +0 -0
  185. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/agentic/tools/a2a/postprocessing/test/test_display_utils.py +0 -0
  186. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/agentic/tools/a2a/postprocessing/test/test_ref_utils.py +0 -0
  187. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/agentic/tools/a2a/postprocessing/test/test_references.py +0 -0
  188. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/agentic/tools/a2a/prompts.py +0 -0
  189. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/agentic/tools/a2a/response_watcher/__init__.py +0 -0
  190. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/agentic/tools/a2a/response_watcher/service.py +0 -0
  191. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/agentic/tools/a2a/tool/__init__.py +0 -0
  192. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/agentic/tools/a2a/tool/_memory.py +0 -0
  193. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/agentic/tools/a2a/tool/_schema.py +0 -0
  194. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/agentic/tools/a2a/tool/config.py +0 -0
  195. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/agentic/tools/a2a/tool/test/test_service_utils.py +0 -0
  196. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/agentic/tools/agent_chunks_hanlder.py +0 -0
  197. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/agentic/tools/config.py +0 -0
  198. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/agentic/tools/experimental/__init__.py +0 -0
  199. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/agentic/tools/experimental/ask_user_tool/__init__.py +0 -0
  200. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/agentic/tools/experimental/ask_user_tool/config.py +0 -0
  201. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/agentic/tools/experimental/ask_user_tool/tool.py +0 -0
  202. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/agentic/tools/experimental/open_file_tool/__init__.py +0 -0
  203. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/agentic/tools/experimental/open_file_tool/config.py +0 -0
  204. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/agentic/tools/experimental/open_file_tool/runtime.py +0 -0
  205. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/agentic/tools/experimental/open_file_tool/tool.py +0 -0
  206. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/agentic/tools/experimental/retrieve_search_scope_tool/__init__.py +0 -0
  207. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/agentic/tools/experimental/retrieve_search_scope_tool/config.py +0 -0
  208. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/agentic/tools/experimental/retrieve_search_scope_tool/tool.py +0 -0
  209. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/agentic/tools/experimental/todo/__init__.py +0 -0
  210. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/agentic/tools/experimental/todo/config.py +0 -0
  211. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/agentic/tools/experimental/todo/prompts/__init__.py +0 -0
  212. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/agentic/tools/experimental/todo/prompts/execution_reminder.j2 +0 -0
  213. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/agentic/tools/experimental/todo/prompts/system_prompt.j2 +0 -0
  214. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/agentic/tools/experimental/todo/prompts/tool_description.j2 +0 -0
  215. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/agentic/tools/experimental/todo/prompts/verification_nudge.j2 +0 -0
  216. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/agentic/tools/experimental/todo/schemas.py +0 -0
  217. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/agentic/tools/experimental/todo/service.py +0 -0
  218. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/agentic/tools/factory.py +0 -0
  219. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/agentic/tools/mcp/__init__.py +0 -0
  220. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/agentic/tools/mcp/manager.py +0 -0
  221. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/agentic/tools/mcp/models.py +0 -0
  222. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/agentic/tools/names.py +0 -0
  223. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/agentic/tools/openai_builtin/__init__.py +0 -0
  224. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/agentic/tools/openai_builtin/base.py +0 -0
  225. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/__init__.py +0 -0
  226. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/activator/__init__.py +0 -0
  227. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/activator/config.py +0 -0
  228. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/activator/service.py +0 -0
  229. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/builder/__init__.py +0 -0
  230. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/builder/_container.py +0 -0
  231. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/builder/_files.py +0 -0
  232. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/builder/_memory.py +0 -0
  233. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/builder/builder.py +0 -0
  234. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/config.py +0 -0
  235. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/postprocessors/__init__.py +0 -0
  236. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/postprocessors/artifacts.py +0 -0
  237. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/schemas.py +0 -0
  238. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/tool/__init__.py +0 -0
  239. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/tool/config.py +0 -0
  240. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/tool/service.py +0 -0
  241. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/agentic/tools/openai_builtin/manager.py +0 -0
  242. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/agentic/tools/run_context.py +0 -0
  243. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/agentic/tools/schemas.py +0 -0
  244. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/agentic/tools/test/test_mcp_manager.py +0 -0
  245. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/agentic/tools/test/test_tool_progress_reporter.py +0 -0
  246. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/agentic/tools/tool.py +0 -0
  247. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/agentic/tools/tool_manager.py +0 -0
  248. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/agentic/tools/tool_progress_reporter.py +0 -0
  249. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/agentic/tools/utils/__init__.py +0 -0
  250. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/agentic/tools/utils/source_handling/__init__.py +0 -0
  251. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/agentic/tools/utils/source_handling/schema.py +0 -0
  252. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/agentic/tools/utils/source_handling/source_formatting.py +0 -0
  253. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/agentic/tools/utils/source_handling/tests/test_source_formatting.py +0 -0
  254. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/agentic_table/synthetic_chat_event.py +0 -0
  255. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/app/__init__.py +0 -0
  256. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/app/chat_event_filter_options_settings.py +0 -0
  257. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/app/dev_util.py +0 -0
  258. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/app/fast_api_factory.py +0 -0
  259. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/app/feature_flags.py +0 -0
  260. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/app/find_env_file.py +0 -0
  261. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/app/init_logging.py +0 -0
  262. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/app/init_sdk.py +0 -0
  263. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/app/performance/async_tasks.py +0 -0
  264. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/app/performance/async_wrapper.py +0 -0
  265. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/app/schemas.py +0 -0
  266. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/app/verification.py +0 -0
  267. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/app/webhook.py +0 -0
  268. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/chat/__init__.py +0 -0
  269. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/chat/cancellation.py +0 -0
  270. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/chat/constants.py +0 -0
  271. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/chat/deprecated/__init__.py +0 -0
  272. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/chat/deprecated/service.py +0 -0
  273. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/chat/functions.py +0 -0
  274. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/chat/rendering.py +0 -0
  275. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/chat/responses_api.py +0 -0
  276. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/chat/service.py +0 -0
  277. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/chat/state.py +0 -0
  278. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/chat/utils.py +0 -0
  279. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/content/__init__.py +0 -0
  280. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/content/constants.py +0 -0
  281. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/content/functions.py +0 -0
  282. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/content/schemas.py +0 -0
  283. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/content/service.py +0 -0
  284. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/content/smart_rules.py +0 -0
  285. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/content/utils.py +0 -0
  286. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/data_extraction/README.md +0 -0
  287. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/data_extraction/__init__.py +0 -0
  288. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/data_extraction/augmented/__init__.py +0 -0
  289. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/data_extraction/augmented/service.py +0 -0
  290. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/data_extraction/base.py +0 -0
  291. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/data_extraction/basic/__init__.py +0 -0
  292. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/data_extraction/basic/config.py +0 -0
  293. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/data_extraction/basic/prompt.py +0 -0
  294. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/data_extraction/basic/service.py +0 -0
  295. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/elicitation/__init__.py +0 -0
  296. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/elicitation/constants.py +0 -0
  297. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/elicitation/exceptions.py +0 -0
  298. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/elicitation/functions.py +0 -0
  299. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/elicitation/schemas.py +0 -0
  300. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/elicitation/service.py +0 -0
  301. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/embedding/__init__.py +0 -0
  302. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/embedding/constants.py +0 -0
  303. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/embedding/functions.py +0 -0
  304. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/embedding/schemas.py +0 -0
  305. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/embedding/service.py +0 -0
  306. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/embedding/utils.py +0 -0
  307. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/experimental/README.md +0 -0
  308. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/experimental/__init__.py +0 -0
  309. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/experimental/_internal/__init__.py +0 -0
  310. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/experimental/_internal/streaming/__init__.py +0 -0
  311. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/experimental/_internal/streaming/common.py +0 -0
  312. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/experimental/_internal/streaming/pattern_replacer.py +0 -0
  313. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/experimental/components/__init__.py +0 -0
  314. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/experimental/components/_base.py +0 -0
  315. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/experimental/components/content_tree/__init__.py +0 -0
  316. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/experimental/components/content_tree/functions.py +0 -0
  317. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/experimental/components/content_tree/schemas.py +0 -0
  318. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/experimental/components/content_tree/service.py +0 -0
  319. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/experimental/components/internal_search/__init__.py +0 -0
  320. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/experimental/components/internal_search/base/__init__.py +0 -0
  321. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/experimental/components/internal_search/base/config.py +0 -0
  322. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/experimental/components/internal_search/base/schemas.py +0 -0
  323. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/experimental/components/internal_search/base/service.py +0 -0
  324. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/experimental/components/internal_search/base/utils.py +0 -0
  325. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/experimental/components/internal_search/chat/__init__.py +0 -0
  326. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/experimental/components/internal_search/chat/config.py +0 -0
  327. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/experimental/components/internal_search/chat/schemas.py +0 -0
  328. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/experimental/components/internal_search/chat/service.py +0 -0
  329. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/experimental/components/internal_search/knowledge_base/__init__.py +0 -0
  330. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/experimental/components/internal_search/knowledge_base/config.py +0 -0
  331. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/experimental/components/internal_search/knowledge_base/schemas.py +0 -0
  332. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/experimental/components/internal_search/knowledge_base/service.py +0 -0
  333. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/experimental/components/internal_search/post_processing/__init__.py +0 -0
  334. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/experimental/components/internal_search/post_processing/config.py +0 -0
  335. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/experimental/components/internal_search/post_processing/service.py +0 -0
  336. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/experimental/content_tree/__init__.py +0 -0
  337. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/experimental/identity/__init__.py +0 -0
  338. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/experimental/integrations/__init__.py +0 -0
  339. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/experimental/integrations/openai/__init__.py +0 -0
  340. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/experimental/integrations/openai/streaming/__init__.py +0 -0
  341. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/__init__.py +0 -0
  342. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/_async_bridge.py +0 -0
  343. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/chat_completions/__init__.py +0 -0
  344. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/chat_completions/complete_with_references.py +0 -0
  345. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/chat_completions/stream_event_router.py +0 -0
  346. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/chat_completions/text_event_handler.py +0 -0
  347. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/chat_completions/tool_call_event_handler.py +0 -0
  348. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/events.py +0 -0
  349. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/protocols/__init__.py +0 -0
  350. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/protocols/chat_completions.py +0 -0
  351. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/protocols/responses.py +0 -0
  352. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/responses/__init__.py +0 -0
  353. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/responses/code_interpreter_event_handler.py +0 -0
  354. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/responses/complete_with_references.py +0 -0
  355. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/responses/completed_event_handler.py +0 -0
  356. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/responses/stream_event_router.py +0 -0
  357. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/responses/text_delta_event_handler.py +0 -0
  358. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/responses/tool_call_event_handler.py +0 -0
  359. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/subscribers/__init__.py +0 -0
  360. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/subscribers/message_persister.py +0 -0
  361. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/subscribers/progress_log_persister.py +0 -0
  362. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/experimental/resources/__init__.py +0 -0
  363. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/experimental/resources/content_folder/__init__.py +0 -0
  364. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/experimental/resources/content_folder/functions.py +0 -0
  365. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/experimental/resources/content_folder/schemas.py +0 -0
  366. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/experimental/resources/content_folder/service.py +0 -0
  367. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/experimental/resources/facades/__init__.py +0 -0
  368. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/experimental/resources/facades/identity/__init__.py +0 -0
  369. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/experimental/resources/facades/identity/service.py +0 -0
  370. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/experimental/resources/feature_flags/README.md +0 -0
  371. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/experimental/resources/feature_flags/_graphql_client.py +0 -0
  372. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/experimental/resources/feature_flags/_ttl_cache.py +0 -0
  373. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/experimental/resources/feature_flags/schemas.py +0 -0
  374. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/experimental/resources/feature_flags/settings.py +0 -0
  375. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/experimental/resources/group/__init__.py +0 -0
  376. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/experimental/resources/group/functions.py +0 -0
  377. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/experimental/resources/group/schemas.py +0 -0
  378. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/experimental/resources/group/service.py +0 -0
  379. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/experimental/resources/scheduled_task/__init__.py +0 -0
  380. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/experimental/resources/scheduled_task/cron.py +0 -0
  381. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/experimental/resources/scheduled_task/functions.py +0 -0
  382. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/experimental/resources/scheduled_task/schemas.py +0 -0
  383. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/experimental/resources/scheduled_task/service.py +0 -0
  384. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/experimental/resources/user/__init__.py +0 -0
  385. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/experimental/resources/user/functions.py +0 -0
  386. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/experimental/resources/user/schemas.py +0 -0
  387. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/experimental/resources/user/service.py +0 -0
  388. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/experimental/testing/__init__.py +0 -0
  389. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/framework_utilities/__init__.py +0 -0
  390. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/framework_utilities/langchain/__init__.py +0 -0
  391. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/framework_utilities/langchain/client.py +0 -0
  392. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/framework_utilities/langchain/history.py +0 -0
  393. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/framework_utilities/openai/__init__.py +0 -0
  394. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/framework_utilities/openai/client.py +0 -0
  395. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/framework_utilities/openai/message_builder.py +0 -0
  396. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/framework_utilities/utils.py +0 -0
  397. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/language_model/__init__.py +0 -0
  398. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/language_model/_responses_api_utils.py +0 -0
  399. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/language_model/builder.py +0 -0
  400. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/language_model/constants.py +0 -0
  401. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/language_model/default_language_model.py +0 -0
  402. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/language_model/infos.py +0 -0
  403. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/language_model/invocation_stats.py +0 -0
  404. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/language_model/model_costs.py +0 -0
  405. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/language_model/prompt.py +0 -0
  406. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/language_model/reference.py +0 -0
  407. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/language_model/schemas.py +0 -0
  408. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/language_model/settings.py +0 -0
  409. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/language_model/stream_transform.py +0 -0
  410. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/language_model/utils.py +0 -0
  411. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/monitoring/gunicorn.py +0 -0
  412. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/monitoring/middleware.py +0 -0
  413. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/monitoring/registry.py +0 -0
  414. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/protocols/support.py +0 -0
  415. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/services/__init__.py +0 -0
  416. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/services/factory.py +0 -0
  417. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/services/knowledge_base.py +0 -0
  418. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/short_term_memory/__init__.py +0 -0
  419. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/short_term_memory/constants.py +0 -0
  420. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/short_term_memory/functions.py +0 -0
  421. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/short_term_memory/schemas.py +0 -0
  422. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/short_term_memory/service.py +0 -0
  423. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/smart_rules/__init__.py +0 -0
  424. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/unique_toolkit/smart_rules/compile.py +0 -0
  425. {unique_toolkit-2026.32.4 → unique_toolkit-2026.34.0}/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.32.4
3
+ Version: 2026.34.0
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.32.4
19
+ Requires-Dist: unique-sdk>=2026.34.0
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
@@ -42,10 +42,15 @@ Requires-Dist: langchain>=1.0.0,<2 ; extra == 'langchain'
42
42
  Requires-Dist: langchain-openai>=0.3.28 ; extra == 'langchain'
43
43
  Requires-Dist: langchain-core>=1.0.0,<2 ; extra == 'langchain'
44
44
  Requires-Dist: prometheus-client>=0.24.1,<1 ; extra == 'monitoring'
45
+ Requires-Dist: opentelemetry-sdk>=1.27,<2 ; extra == 'otel'
46
+ Requires-Dist: opentelemetry-exporter-otlp-proto-http>=1.27,<2 ; extra == 'otel'
47
+ Requires-Dist: opentelemetry-instrumentation-fastapi>=0.65b0,<1 ; extra == 'otel'
48
+ Requires-Dist: opentelemetry-instrumentation-requests>=0.65b0,<1 ; extra == 'otel'
45
49
  Requires-Python: >=3.12
46
50
  Provides-Extra: fastapi
47
51
  Provides-Extra: langchain
48
52
  Provides-Extra: monitoring
53
+ Provides-Extra: otel
49
54
  Description-Content-Type: text/markdown
50
55
 
51
56
  # Unique Toolkit
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "unique_toolkit"
3
- version = "2026.32.4"
3
+ version = "2026.34.0"
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.32.4",
31
+ "unique-sdk>=2026.34.0",
32
32
  "jambo>=0.1.2,<0.2",
33
33
  "jinja2>=3.1.6,<4",
34
34
  "docxtpl>=0.20.1,<0.21",
@@ -63,6 +63,12 @@ fastapi = [
63
63
  monitoring = [
64
64
  "prometheus_client>=0.24.1,<1",
65
65
  ]
66
+ otel = [
67
+ "opentelemetry-sdk>=1.27,<2",
68
+ "opentelemetry-exporter-otlp-proto-http>=1.27,<2",
69
+ "opentelemetry-instrumentation-fastapi>=0.65b0,<1",
70
+ "opentelemetry-instrumentation-requests>=0.65b0,<1",
71
+ ]
66
72
  [build-system]
67
73
  requires = ["uv_build>=0.8.14,<0.9.0"]
68
74
  build-backend = "uv_build"
@@ -73,6 +79,10 @@ module-root = ""
73
79
  [dependency-groups]
74
80
  dev = [
75
81
  "types-cachetools>=5.0,<6",
82
+ "opentelemetry-sdk>=1.27,<2",
83
+ "opentelemetry-exporter-otlp-proto-http>=1.27,<2",
84
+ "opentelemetry-instrumentation-fastapi>=0.65b0,<1",
85
+ "opentelemetry-instrumentation-requests>=0.65b0,<1",
76
86
  ]
77
87
 
78
88
  [tool.uv]
@@ -119,7 +129,16 @@ known_first_party = ["unique_toolkit"]
119
129
  extend_exclude = ["docs", "tests", "unique_toolkit/.*/test", "unique_toolkit/.*/tests"]
120
130
 
121
131
  [tool.deptry.per_rule_ignores]
122
- DEP002 = ["langchain", "fastapi", "starlette", "uvicorn"]
132
+ DEP002 = [
133
+ "langchain",
134
+ "fastapi",
135
+ "starlette",
136
+ "uvicorn",
137
+ "opentelemetry-sdk",
138
+ "opentelemetry-exporter-otlp-proto-http",
139
+ "opentelemetry-instrumentation-fastapi",
140
+ "opentelemetry-instrumentation-requests",
141
+ ]
123
142
  DEP004 = ["langchain_openai", "langchain_core"]
124
143
 
125
144
  # -----------------------------------------------------------------------------
@@ -24,6 +24,8 @@ class AnalyticsTool(TypedDict, total=False):
24
24
  is_sub_agent: bool
25
25
  is_mcp: bool
26
26
  loop_iteration: int
27
+ elicitation_approval: bool
28
+ elicitation_prompt_change: bool
27
29
 
28
30
 
29
31
  class AnalyticsSkill(TypedDict):
@@ -294,6 +296,10 @@ def _to_analytics_tool_entry(
294
296
  analytics_tool["is_mcp"] = True
295
297
  if "loop_iteration" in info:
296
298
  analytics_tool["loop_iteration"] = info["loop_iteration"]
299
+ if "elicitation_approval" in info:
300
+ analytics_tool["elicitation_approval"] = info["elicitation_approval"]
301
+ if "elicitation_prompt_change" in info:
302
+ analytics_tool["elicitation_prompt_change"] = info["elicitation_prompt_change"]
297
303
  return analytics_tool
298
304
 
299
305
 
@@ -36,6 +36,8 @@ class HallucinationEvaluation(Evaluation):
36
36
  self.config = config
37
37
  self._company_id = event.company_id
38
38
  self._user_id = event.user_id
39
+ self._chat_id = event.payload.chat_id
40
+ self._assistant_id = event.payload.assistant_id
39
41
  self._reference_manager = reference_manager
40
42
  self._user_message = event.payload.user_message.text
41
43
  super().__init__(EvaluationMetricName.HALLUCINATION)
@@ -75,6 +77,8 @@ class HallucinationEvaluation(Evaluation):
75
77
  output_text=loop_response.message.text,
76
78
  ),
77
79
  config=self.config,
80
+ chat_id=self._chat_id,
81
+ assistant_id=self._assistant_id,
78
82
  )
79
83
 
80
84
  score_to_label = self.config.score_to_label
@@ -59,4 +59,6 @@ class HallucinationEvaluator:
59
59
  user_id=self.event.user_id,
60
60
  input=input,
61
61
  config=config,
62
+ chat_id=self.event.payload.chat_id,
63
+ assistant_id=self.event.payload.assistant_id,
62
64
  )
@@ -37,6 +37,8 @@ async def check_hallucination(
37
37
  user_id: str,
38
38
  input: EvaluationMetricInput,
39
39
  config: EvaluationMetricConfig,
40
+ chat_id: str | None = None,
41
+ assistant_id: str | None = None,
40
42
  ) -> EvaluationMetricResult:
41
43
  """
42
44
  Analyzes the level of hallucination in the generated output by comparing it with the provided input
@@ -77,7 +79,12 @@ async def check_hallucination(
77
79
  try:
78
80
  msgs = _get_msgs(input, config)
79
81
  result = await LanguageModelService.complete_async_util(
80
- company_id=company_id, user_id=user_id, messages=msgs, model_name=model_name
82
+ company_id=company_id,
83
+ user_id=user_id,
84
+ messages=msgs,
85
+ model_name=model_name,
86
+ chat_id=chat_id,
87
+ assistant_id=assistant_id,
81
88
  )
82
89
  except Exception as e:
83
90
  error_message = "Error occurred during hallucination metric analysis"
@@ -36,6 +36,8 @@ def _make_event() -> SimpleNamespace:
36
36
  company_id="company_1",
37
37
  user_id="user_1",
38
38
  payload=SimpleNamespace(
39
+ chat_id="chat_1",
40
+ assistant_id="assistant_1",
39
41
  user_message=SimpleNamespace(text="what is ACME revenue?"),
40
42
  ),
41
43
  )
@@ -61,8 +63,18 @@ def captured_context(monkeypatch: pytest.MonkeyPatch) -> dict:
61
63
  """Patch check_hallucination to capture the context_texts it receives."""
62
64
  captured: dict = {}
63
65
 
64
- async def _fake_check_hallucination(*, company_id, user_id, input, config):
66
+ async def _fake_check_hallucination(
67
+ *,
68
+ company_id,
69
+ user_id,
70
+ input,
71
+ config,
72
+ chat_id,
73
+ assistant_id,
74
+ ):
65
75
  captured["context_texts"] = list(input.context_texts or [])
76
+ captured["chat_id"] = chat_id
77
+ captured["assistant_id"] = assistant_id
66
78
  return EvaluationMetricResult(
67
79
  name=EvaluationMetricName.HALLUCINATION,
68
80
  value="LOW",
@@ -86,6 +98,8 @@ async def test_external_context_is_appended(captured_context: dict) -> None:
86
98
 
87
99
  # No chunks → context comes solely from the external (MCP) source.
88
100
  assert captured_context["context_texts"] == ["ACME revenue: 1M"]
101
+ assert captured_context["chat_id"] == "chat_1"
102
+ assert captured_context["assistant_id"] == "assistant_1"
89
103
  assert result.value == "LOW"
90
104
  assert result.is_positive is True
91
105
 
@@ -1,6 +1,7 @@
1
1
  """Tests for hallucination evaluation utils."""
2
2
 
3
3
  from typing import List, Optional
4
+ from unittest.mock import AsyncMock
4
5
 
5
6
  import pytest
6
7
 
@@ -14,6 +15,7 @@ from unique_toolkit.agentic.evaluation.hallucination.utils import (
14
15
  _from_order_source_selection_mode,
15
16
  _from_original_response_source_selection_mode,
16
17
  _get_msgs,
18
+ check_hallucination,
17
19
  context_text_from_stream_response,
18
20
  )
19
21
  from unique_toolkit.agentic.evaluation.schemas import EvaluationMetricInput
@@ -25,8 +27,11 @@ from unique_toolkit.language_model.infos import (
25
27
  ModelCapabilities,
26
28
  )
27
29
  from unique_toolkit.language_model.schemas import (
30
+ LanguageModelAssistantMessage,
31
+ LanguageModelCompletionChoice,
28
32
  LanguageModelMessageRole,
29
33
  LanguageModelMessages,
34
+ LanguageModelResponse,
30
35
  LanguageModelStreamResponse,
31
36
  )
32
37
 
@@ -101,6 +106,49 @@ def evaluation_input() -> EvaluationMetricInput:
101
106
  )
102
107
 
103
108
 
109
+ @pytest.mark.ai
110
+ @pytest.mark.asyncio
111
+ async def test_check_hallucination__forwards_attribution_ids(
112
+ monkeypatch: pytest.MonkeyPatch,
113
+ hallucination_config: HallucinationConfig,
114
+ evaluation_input: EvaluationMetricInput,
115
+ ) -> None:
116
+ """Purpose: Verify hallucination completion receives chat attribution IDs.
117
+ Why this matters: Secondary evaluator usage must link to the originating chat.
118
+ Setup summary: Mock the completion utility, run the check, and inspect its call.
119
+ """
120
+ complete_async_util = AsyncMock(
121
+ return_value=LanguageModelResponse(
122
+ choices=[
123
+ LanguageModelCompletionChoice(
124
+ index=0,
125
+ message=LanguageModelAssistantMessage(
126
+ content='{"value": "low", "reason": "grounded"}'
127
+ ),
128
+ finish_reason="stop",
129
+ )
130
+ ]
131
+ )
132
+ )
133
+ monkeypatch.setattr(
134
+ "unique_toolkit.agentic.evaluation.hallucination.utils."
135
+ "LanguageModelService.complete_async_util",
136
+ complete_async_util,
137
+ )
138
+
139
+ await check_hallucination(
140
+ company_id="company_1",
141
+ user_id="user_1",
142
+ input=evaluation_input.model_copy(update={"history_messages": []}),
143
+ config=hallucination_config,
144
+ chat_id="chat_1",
145
+ assistant_id="assistant_1",
146
+ )
147
+
148
+ assert complete_async_util.await_args.kwargs["chat_id"] == "chat_1"
149
+ assert complete_async_util.await_args.kwargs["assistant_id"] == "assistant_1"
150
+
151
+
104
152
  @pytest.mark.ai
105
153
  def test_default_source_selection_mode__selects_chunks__by_source_id_match(
106
154
  sample_references: List[ContentReference],
@@ -1,6 +1,7 @@
1
1
  from unique_toolkit.agentic.feature_flags.feature_flags import (
2
+ FeatureFlagNames,
2
3
  FeatureFlags,
3
4
  feature_flags,
4
5
  )
5
6
 
6
- __all__ = ["FeatureFlags", "feature_flags"]
7
+ __all__ = ["FeatureFlagNames", "FeatureFlags", "feature_flags"]
@@ -1,11 +1,41 @@
1
+ from enum import StrEnum
1
2
  from typing import Any
2
3
 
3
4
  from pydantic import Field, field_validator
4
5
  from pydantic_settings import BaseSettings, SettingsConfigDict
6
+ from typing_extensions import deprecated
5
7
 
6
8
  from unique_toolkit._common.config_checker import register_config
7
9
 
8
10
 
11
+ class FeatureFlagNames(StrEnum):
12
+ """Flag name constants used by unique_toolkit's own agentic features.
13
+
14
+ Values match both the env-var fallback names (``FeatureFlags`` below) and
15
+ the configuration-backend registry keys used by
16
+ ``unique_toolkit.experimental.resources.feature_flags.FeatureFlagClient``.
17
+ """
18
+
19
+ enable_selected_uploaded_files_un_18215 = (
20
+ "FEATURE_FLAG_ENABLE_SELECTED_UPLOADED_FILES_UN_18215"
21
+ )
22
+ enable_mcp_metadata_fallback_un_19145 = (
23
+ "FEATURE_FLAG_ENABLE_MCP_METADATA_FALLBACK_UN_19145"
24
+ )
25
+ enable_html_rendering_un_15131 = "FEATURE_FLAG_ENABLE_HTML_RENDERING_UN_15131"
26
+ enable_code_execution_fence_un_17972 = (
27
+ "FEATURE_FLAG_ENABLE_CODE_EXECUTION_FENCE_UN_17972"
28
+ )
29
+ enable_html_with_fence_un_17927 = "FEATURE_FLAG_ENABLE_HTML_WITH_FENCE_UN_17927"
30
+ enable_web_search_argument_screening_un_18741 = (
31
+ "FEATURE_FLAG_ENABLE_WEB_SEARCH_ARGUMENT_SCREENING_UN_18741"
32
+ )
33
+ enable_new_answers_ui_un_14411 = "FEATURE_FLAG_ENABLE_NEW_ANSWERS_UI_UN_14411"
34
+
35
+
36
+ @deprecated(
37
+ "Use unique_toolkit.experimental.resources.feature_flags.is_flag_enabled instead"
38
+ )
9
39
  class FeatureFlag:
10
40
  """A feature flag that can be enabled globally or for specific company IDs.
11
41
 
@@ -45,6 +75,9 @@ class FeatureFlag:
45
75
  return f"FeatureFlag({self.value})"
46
76
 
47
77
 
78
+ @deprecated(
79
+ "Use unique_toolkit.experimental.resources.feature_flags.is_flag_enabled instead"
80
+ )
48
81
  @register_config()
49
82
  class FeatureFlags(BaseSettings):
50
83
  """Feature flags loaded from environment variables.
@@ -145,5 +178,7 @@ class FeatureFlags(BaseSettings):
145
178
  return FeatureFlag(False)
146
179
 
147
180
 
148
- # Initialize once at module load - import this where needed
181
+ # Deprecated, unused elsewhere in this toolkit — kept only for external
182
+ # backward compatibility. Use unique_toolkit.experimental.resources.feature_flags
183
+ # .is_flag_enabled instead.
149
184
  feature_flags = FeatureFlags()
@@ -348,8 +348,6 @@ class HistoryManager:
348
348
  int(m)
349
349
  for m in re.findall(r"\[source(\d+)\]", assistant_text, re.IGNORECASE)
350
350
  }
351
- if not cited:
352
- return records
353
351
 
354
352
  return [
355
353
  record.model_copy(
@@ -374,8 +372,9 @@ def _strip_uncited_sources_from_content(content: str, cited: set[int]) -> str:
374
372
 
375
373
  The content is expected to be a JSON array of dicts containing at least
376
374
  a "source_number" key. Items whose "source_number" is not in *cited*
377
- are removed. If the content is not valid JSON or not in the expected
378
- format it is returned unchanged.
375
+ are removed. If no sources are cited, the response is replaced with a short
376
+ message. If the content is not valid JSON or not in the expected format it
377
+ is returned unchanged.
379
378
  """
380
379
  try:
381
380
  data = json.loads(content)
@@ -390,5 +389,10 @@ def _strip_uncited_sources_from_content(content: str, cited: set[int]) -> str:
390
389
  ):
391
390
  return content
392
391
 
392
+ if not cited:
393
+ return (
394
+ "The search did not produce any relevant information that could be cited."
395
+ )
396
+
393
397
  filtered = [item for item in data if item.get("source_number") in cited]
394
398
  return serialize_tool_content_json(filtered)
@@ -109,7 +109,19 @@ class LoopTokenReducer:
109
109
  self._max_db_source_number: int = -1
110
110
  self._db_source_map: dict[int, ContentChunk] = {}
111
111
  self._enable_tool_call_persistence = enable_tool_call_persistence
112
- self._selected_content_ids = get_selected_uploaded_content_ids(event)
112
+ self._event = event
113
+ # Lazily resolved on first async use since the flag check is async;
114
+ # `_resolved` distinguishes "not yet checked" from a resolved `None` (flag off).
115
+ self._selected_content_ids: set[str] | None = None
116
+ self._selected_content_ids_resolved = False
117
+
118
+ async def _get_selected_content_ids(self) -> set[str] | None:
119
+ if not self._selected_content_ids_resolved:
120
+ self._selected_content_ids = await get_selected_uploaded_content_ids(
121
+ self._event
122
+ )
123
+ self._selected_content_ids_resolved = True
124
+ return self._selected_content_ids
113
125
 
114
126
  @property
115
127
  def max_db_source_number(self) -> int:
@@ -354,6 +366,7 @@ class LoopTokenReducer:
354
366
  Returns:
355
367
  list[LanguageModelMessage]: The history
356
368
  """
369
+ selected_content_ids = await self._get_selected_content_ids()
357
370
  if self._enable_tool_call_persistence:
358
371
  (
359
372
  full_history,
@@ -365,7 +378,7 @@ class LoopTokenReducer:
365
378
  chat_service=self._chat_service,
366
379
  content_service=self._content_service,
367
380
  file_content_serializer=self._file_content_serializer,
368
- selected_content_ids=self._selected_content_ids,
381
+ selected_content_ids=selected_content_ids,
369
382
  )
370
383
  self._max_db_source_number = max_src
371
384
  self._db_source_map = src_map
@@ -376,7 +389,7 @@ class LoopTokenReducer:
376
389
  chat_service=self._chat_service,
377
390
  content_service=self._content_service,
378
391
  file_content_serializer=self._file_content_serializer,
379
- selected_content_ids=self._selected_content_ids,
392
+ selected_content_ids=selected_content_ids,
380
393
  )
381
394
 
382
395
  if remove_from_text is not None:
@@ -3,10 +3,11 @@ import logging
3
3
  from copy import deepcopy
4
4
  from typing import Any
5
5
 
6
- from unique_toolkit.agentic.feature_flags import feature_flags
6
+ from unique_toolkit.agentic.feature_flags import FeatureFlagNames
7
7
  from unique_toolkit.agentic.tools.schemas import Source
8
8
  from unique_toolkit.app.schemas import ChatEvent
9
9
  from unique_toolkit.content.schemas import ContentChunk
10
+ from unique_toolkit.experimental.resources.feature_flags import is_flag_enabled
10
11
  from unique_toolkit.language_model.schemas import (
11
12
  LanguageModelAssistantMessage,
12
13
  LanguageModelMessage,
@@ -16,15 +17,16 @@ from unique_toolkit.language_model.schemas import (
16
17
  logger = logging.getLogger(__name__)
17
18
 
18
19
 
19
- def get_selected_uploaded_content_ids(event: ChatEvent) -> set[str] | None:
20
+ async def get_selected_uploaded_content_ids(event: ChatEvent) -> set[str] | None:
20
21
  """Derive the set of content IDs the user explicitly selected.
21
22
 
22
23
  Returns ``None`` when the feature flag is disabled (meaning *all*
23
24
  uploaded images should be included), or a ``set[str]`` of IDs when
24
25
  only a subset should be attached.
25
26
  """
26
- if not feature_flags.enable_selected_uploaded_files_un_18215.is_enabled(
27
- event.company_id
27
+ if not await is_flag_enabled(
28
+ FeatureFlagNames.enable_selected_uploaded_files_un_18215,
29
+ company_id=event.company_id,
28
30
  ):
29
31
  return None
30
32
 
@@ -22,7 +22,7 @@ from unique_toolkit._common.referencing import (
22
22
  )
23
23
  from unique_toolkit._common.utils.jinja.render import render_template
24
24
  from unique_toolkit.agentic.evaluation.schemas import EvaluationMetricName
25
- from unique_toolkit.agentic.feature_flags import feature_flags
25
+ from unique_toolkit.agentic.feature_flags import FeatureFlagNames
26
26
  from unique_toolkit.agentic.tools.a2a.response_watcher import SubAgentResponseWatcher
27
27
  from unique_toolkit.agentic.tools.a2a.tool._memory import (
28
28
  get_sub_agent_short_term_memory_manager,
@@ -53,6 +53,7 @@ from unique_toolkit.chat.schemas import (
53
53
  )
54
54
  from unique_toolkit.chat.service import ChatService
55
55
  from unique_toolkit.content import ContentChunk, ContentReference
56
+ from unique_toolkit.experimental.resources.feature_flags import is_flag_enabled
56
57
  from unique_toolkit.language_model import (
57
58
  LanguageModelFunction,
58
59
  LanguageModelService,
@@ -431,11 +432,9 @@ class SubAgentTool(Tool[SubAgentToolConfig]):
431
432
  message: str,
432
433
  state: ProgressState,
433
434
  ) -> None:
434
- if (
435
- self._tool_progress_reporter is not None
436
- and not feature_flags.enable_new_answers_ui_un_14411.is_enabled(
437
- self._company_id
438
- )
435
+ if self._tool_progress_reporter is not None and not await is_flag_enabled(
436
+ FeatureFlagNames.enable_new_answers_ui_un_14411,
437
+ company_id=self._company_id or "",
439
438
  ):
440
439
  await self._tool_progress_reporter.notify_from_tool_call(
441
440
  tool_call=tool_call,
@@ -9,7 +9,7 @@ from typing import Any, Dict
9
9
  import unique_sdk
10
10
 
11
11
  from unique_toolkit.agentic.evaluation.schemas import EvaluationMetricName
12
- from unique_toolkit.agentic.feature_flags import feature_flags
12
+ from unique_toolkit.agentic.feature_flags import FeatureFlagNames
13
13
  from unique_toolkit.agentic.tools.mcp.models import MCPToolConfig
14
14
  from unique_toolkit.agentic.tools.schemas import ToolCallResponse
15
15
  from unique_toolkit.agentic.tools.tool import Tool
@@ -21,6 +21,7 @@ from unique_toolkit.app.schemas import ChatEvent, McpServer, McpTool
21
21
  from unique_toolkit.chat.schemas import MessageLog, MessageLogStatus
22
22
  from unique_toolkit.chat.service import ChatService
23
23
  from unique_toolkit.content.functions import upload_content_from_bytes
24
+ from unique_toolkit.experimental.resources.feature_flags import is_flag_enabled
24
25
  from unique_toolkit.language_model import LanguageModelService
25
26
  from unique_toolkit.language_model.schemas import (
26
27
  LanguageModelFunction,
@@ -133,11 +134,9 @@ class MCPToolWrapper(Tool[MCPToolConfig]):
133
134
  )
134
135
 
135
136
  # Notify progress if reporter is available
136
- if (
137
- self._tool_progress_reporter
138
- and not feature_flags.enable_new_answers_ui_un_14411.is_enabled(
139
- self._event.company_id
140
- )
137
+ if self._tool_progress_reporter and not await is_flag_enabled(
138
+ FeatureFlagNames.enable_new_answers_ui_un_14411,
139
+ company_id=self._event.company_id,
141
140
  ):
142
141
  await self._tool_progress_reporter.notify_from_tool_call(
143
142
  tool_call=tool_call,
@@ -172,11 +171,9 @@ class MCPToolWrapper(Tool[MCPToolConfig]):
172
171
  )
173
172
 
174
173
  # Notify completion
175
- if (
176
- self._tool_progress_reporter
177
- and not feature_flags.enable_new_answers_ui_un_14411.is_enabled(
178
- self._event.company_id
179
- )
174
+ if self._tool_progress_reporter and not await is_flag_enabled(
175
+ FeatureFlagNames.enable_new_answers_ui_un_14411,
176
+ company_id=self._event.company_id,
180
177
  ):
181
178
  await self._tool_progress_reporter.notify_from_tool_call(
182
179
  tool_call=tool_call,
@@ -198,11 +195,9 @@ class MCPToolWrapper(Tool[MCPToolConfig]):
198
195
  self.logger.error(f"Error executing MCP tool {self.name}: {e}")
199
196
 
200
197
  # Notify failure
201
- if (
202
- self._tool_progress_reporter
203
- and not feature_flags.enable_new_answers_ui_un_14411.is_enabled(
204
- self._event.company_id
205
- )
198
+ if self._tool_progress_reporter and not await is_flag_enabled(
199
+ FeatureFlagNames.enable_new_answers_ui_un_14411,
200
+ company_id=self._event.company_id,
206
201
  ):
207
202
  await self._tool_progress_reporter.notify_from_tool_call(
208
203
  tool_call=tool_call,
@@ -6,11 +6,15 @@ from typing import override
6
6
  from pydantic import BaseModel, Field
7
7
  from pydantic.json_schema import SkipJsonSchema
8
8
 
9
- from unique_toolkit.agentic.feature_flags.feature_flags import feature_flags
9
+ from unique_toolkit.agentic.feature_flags import FeatureFlagNames
10
10
  from unique_toolkit.agentic.postprocessor.postprocessor_manager import (
11
11
  ResponsesApiPostprocessor,
12
12
  )
13
13
  from unique_toolkit.agentic.tools.config import get_configuration_dict
14
+ from unique_toolkit.experimental.resources.feature_flags import (
15
+ COMPANY_ID_PLACEHOLDER,
16
+ is_flag_enabled,
17
+ )
14
18
  from unique_toolkit.language_model.schemas import ResponsesLanguageModelStreamResponse
15
19
 
16
20
  _TEMPLATE = """
@@ -56,15 +60,15 @@ class ShowExecutedCodePostprocessor(ResponsesApiPostprocessor):
56
60
  super().__init__(self.__class__.__name__)
57
61
  self._config = config
58
62
  self._company_id = company_id
59
- self._is_enabled = (
60
- self._config.enable
61
- and not feature_flags.enable_code_execution_fence_un_17972.is_enabled(
62
- company_id
63
- )
64
- )
63
+ # Resolved in run() (before apply_postprocessing_to_response) since flag evaluation is async.
64
+ self._is_enabled = False
65
65
 
66
66
  @override
67
67
  async def run(self, loop_response: ResponsesLanguageModelStreamResponse) -> None:
68
+ self._is_enabled = self._config.enable and not await is_flag_enabled(
69
+ FeatureFlagNames.enable_code_execution_fence_un_17972,
70
+ company_id=self._company_id or COMPANY_ID_PLACEHOLDER,
71
+ )
68
72
  if self._is_enabled:
69
73
  await asyncio.sleep(self._config.sleep_time_before_display)
70
74