unique_toolkit 2026.24.0__tar.gz → 2026.24.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 (407) hide show
  1. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/PKG-INFO +2 -3
  2. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/pyproject.toml +5 -7
  3. unique_toolkit-2026.24.0.dev0/unique_toolkit/__init__.py +85 -0
  4. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/_common/metadata_filter_scope.py +4 -7
  5. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/_common/pydantic/rjsf_tags.py +1 -6
  6. unique_toolkit-2026.24.0.dev0/unique_toolkit/agentic/tools/a2a/config.py +17 -0
  7. unique_toolkit-2026.24.0.dev0/unique_toolkit/agentic/tools/a2a/tool/__init__.py +4 -0
  8. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/agentic/tools/a2a/tool/config.py +2 -51
  9. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/agentic/tools/a2a/tool/service.py +2 -86
  10. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/config.py +0 -2
  11. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/postprocessors/generated_files.py +5 -22
  12. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/agentic/tools/tool_manager.py +3 -48
  13. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/app/schemas.py +2 -28
  14. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/content/__init__.py +1 -30
  15. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/content/schemas.py +1 -2
  16. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/content/smart_rules.py +3 -61
  17. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/experimental/README.md +9 -11
  18. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/experimental/components/internal_search/knowledge_base/config.py +4 -27
  19. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/experimental/components/internal_search/knowledge_base/service.py +1 -5
  20. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/experimental/resources/__init__.py +1 -3
  21. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/language_model/__init__.py +3 -15
  22. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/monitoring/middleware.py +3 -4
  23. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/monitoring/registry.py +4 -58
  24. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/services/chat_service.py +20 -26
  25. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/short_term_memory/functions.py +8 -20
  26. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/short_term_memory/service.py +5 -5
  27. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/smart_rules/compile.py +0 -6
  28. unique_toolkit-2026.24.0/unique_toolkit/__init__.py +0 -149
  29. unique_toolkit-2026.24.0/unique_toolkit/agentic/tools/a2a/config.py +0 -41
  30. unique_toolkit-2026.24.0/unique_toolkit/agentic/tools/a2a/tool/__init__.py +0 -7
  31. unique_toolkit-2026.24.0/unique_toolkit/experimental/resources/feature_flags/README.md +0 -183
  32. unique_toolkit-2026.24.0/unique_toolkit/experimental/resources/feature_flags/__init__.py +0 -50
  33. unique_toolkit-2026.24.0/unique_toolkit/experimental/resources/feature_flags/_graphql_client.py +0 -57
  34. unique_toolkit-2026.24.0/unique_toolkit/experimental/resources/feature_flags/_ttl_cache.py +0 -65
  35. unique_toolkit-2026.24.0/unique_toolkit/experimental/resources/feature_flags/client.py +0 -249
  36. unique_toolkit-2026.24.0/unique_toolkit/experimental/resources/feature_flags/schemas.py +0 -17
  37. unique_toolkit-2026.24.0/unique_toolkit/experimental/resources/feature_flags/settings.py +0 -33
  38. unique_toolkit-2026.24.0/unique_toolkit/monitoring/gunicorn.py +0 -24
  39. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/README.md +0 -0
  40. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/_common/__init__.py +0 -0
  41. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/_common/_base_service.py +0 -0
  42. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/_common/_time_utils.py +0 -0
  43. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/_common/api_calling/human_verification_manager.py +0 -0
  44. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/_common/base_model_type_attribute.py +0 -0
  45. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/_common/chunk_relevancy_sorter/config.py +0 -0
  46. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/_common/chunk_relevancy_sorter/exception.py +0 -0
  47. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/_common/chunk_relevancy_sorter/schemas.py +0 -0
  48. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/_common/chunk_relevancy_sorter/service.py +0 -0
  49. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/_common/chunk_relevancy_sorter/tests/test_service.py +0 -0
  50. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/_common/config_checker/README.md +0 -0
  51. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/_common/config_checker/__init__.py +0 -0
  52. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/_common/config_checker/__main__.py +0 -0
  53. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/_common/config_checker/cli.py +0 -0
  54. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/_common/config_checker/differ.py +0 -0
  55. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/_common/config_checker/exporter.py +0 -0
  56. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/_common/config_checker/models.py +0 -0
  57. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/_common/config_checker/registry.py +0 -0
  58. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/_common/config_checker/validator.py +0 -0
  59. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/_common/default_language_model.py +0 -0
  60. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/_common/docx_generator/__init__.py +0 -0
  61. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/_common/docx_generator/config.py +0 -0
  62. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/_common/docx_generator/pandoc_converter.py +0 -0
  63. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/_common/docx_generator/schemas.py +0 -0
  64. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/_common/docx_generator/service.py +0 -0
  65. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/_common/docx_generator/template/Doc Template.docx +0 -0
  66. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/_common/endpoint_builder.py +0 -0
  67. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/_common/endpoint_requestor.py +0 -0
  68. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/_common/event_bus.py +0 -0
  69. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/_common/exception.py +0 -0
  70. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/_common/execution.py +0 -0
  71. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/_common/experimental/endpoint_builder.py +0 -0
  72. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/_common/experimental/endpoint_requestor.py +0 -0
  73. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/_common/experimental/write_up_agent/README.md +0 -0
  74. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/_common/experimental/write_up_agent/__init__.py +0 -0
  75. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/_common/experimental/write_up_agent/agent.py +0 -0
  76. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/_common/experimental/write_up_agent/config.py +0 -0
  77. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/_common/experimental/write_up_agent/examples/data.csv +0 -0
  78. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/_common/experimental/write_up_agent/examples/example_usage.py +0 -0
  79. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/_common/experimental/write_up_agent/schemas.py +0 -0
  80. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/_common/experimental/write_up_agent/services/__init__.py +0 -0
  81. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/_common/experimental/write_up_agent/services/dataframe_handler/__init__.py +0 -0
  82. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/_common/experimental/write_up_agent/services/dataframe_handler/exceptions.py +0 -0
  83. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/_common/experimental/write_up_agent/services/dataframe_handler/service.py +0 -0
  84. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/_common/experimental/write_up_agent/services/dataframe_handler/utils.py +0 -0
  85. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/__init__.py +0 -0
  86. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/config.py +0 -0
  87. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/exceptions.py +0 -0
  88. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/prompts/config.py +0 -0
  89. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/prompts/system_prompt.j2 +0 -0
  90. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/prompts/user_prompt.j2 +0 -0
  91. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/service.py +0 -0
  92. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/_common/experimental/write_up_agent/services/template_handler/__init__.py +0 -0
  93. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/_common/experimental/write_up_agent/services/template_handler/default_template.j2 +0 -0
  94. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/_common/experimental/write_up_agent/services/template_handler/exceptions.py +0 -0
  95. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/_common/experimental/write_up_agent/services/template_handler/service.py +0 -0
  96. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/_common/experimental/write_up_agent/services/template_handler/utils.py +0 -0
  97. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/_common/experimental/write_up_agent/utils.py +0 -0
  98. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/_common/feature_flags/schema.py +0 -0
  99. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/_common/pydantic_helpers.py +0 -0
  100. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/_common/referencing.py +0 -0
  101. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/_common/string_utilities.py +0 -0
  102. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/_common/tests/test_referencing.py +0 -0
  103. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/_common/tests/test_string_utilities.py +0 -0
  104. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/_common/token/__init__.py +0 -0
  105. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/_common/token/image_token_counting.py +0 -0
  106. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/_common/token/token_counting.py +0 -0
  107. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/_common/token/tokenizers/deepseek/tokenizer.json +0 -0
  108. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/_common/token/tokenizers/qwen/tokenizer.json +0 -0
  109. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/_common/utils/__init__.py +0 -0
  110. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/_common/utils/files.py +0 -0
  111. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/_common/utils/image/encode.py +0 -0
  112. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/_common/utils/jinja/helpers.py +0 -0
  113. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/_common/utils/jinja/render.py +0 -0
  114. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/_common/utils/jinja/schema.py +0 -0
  115. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/_common/utils/jinja/utils.py +0 -0
  116. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/_common/utils/structured_output/__init__.py +0 -0
  117. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/_common/utils/structured_output/schema.py +0 -0
  118. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/_common/utils/write_configuration.py +0 -0
  119. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/_common/validate_required_values.py +0 -0
  120. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/_common/validators.py +0 -0
  121. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/agentic/__init__.py +0 -0
  122. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/agentic/debug_info_manager/debug_info_manager.py +0 -0
  123. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/agentic/debug_info_manager/test/test_debug_info_manager.py +0 -0
  124. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/agentic/evaluation/config.py +0 -0
  125. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/agentic/evaluation/context_relevancy/prompts/__init__.py +0 -0
  126. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/agentic/evaluation/context_relevancy/prompts/system_prompt.j2 +0 -0
  127. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/agentic/evaluation/context_relevancy/prompts/user_prompt.j2 +0 -0
  128. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/agentic/evaluation/context_relevancy/schema.py +0 -0
  129. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/agentic/evaluation/context_relevancy/service.py +0 -0
  130. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/agentic/evaluation/evaluation_manager.py +0 -0
  131. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/agentic/evaluation/exception.py +0 -0
  132. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/agentic/evaluation/hallucination/constants.py +0 -0
  133. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/agentic/evaluation/hallucination/hallucination_evaluation.py +0 -0
  134. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/agentic/evaluation/hallucination/prompts/__init__.py +0 -0
  135. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/agentic/evaluation/hallucination/prompts/system_prompt.j2 +0 -0
  136. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/agentic/evaluation/hallucination/prompts/user_prompt.j2 +0 -0
  137. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/agentic/evaluation/hallucination/service.py +0 -0
  138. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/agentic/evaluation/hallucination/utils.py +0 -0
  139. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/agentic/evaluation/output_parser.py +0 -0
  140. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/agentic/evaluation/schemas.py +0 -0
  141. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/agentic/evaluation/tests/fixtures.py +0 -0
  142. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/agentic/evaluation/tests/test_config.py +0 -0
  143. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/agentic/evaluation/tests/test_context_relevancy_service.py +0 -0
  144. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/agentic/evaluation/tests/test_hallucination_constants.py +0 -0
  145. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/agentic/evaluation/tests/test_hallucination_utils.py +0 -0
  146. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/agentic/evaluation/tests/test_output_parser.py +0 -0
  147. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/agentic/evaluation/tests/test_prompt_loaders.py +0 -0
  148. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/agentic/evaluation/utils.py +0 -0
  149. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/agentic/feature_flags/__init__.py +0 -0
  150. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/agentic/feature_flags/feature_flags.py +0 -0
  151. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/agentic/history_manager/history_construction_with_contents.py +0 -0
  152. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/agentic/history_manager/history_manager.py +0 -0
  153. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/agentic/history_manager/loop_token_reducer.py +0 -0
  154. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/agentic/history_manager/settings.py +0 -0
  155. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/agentic/history_manager/utils.py +0 -0
  156. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/agentic/loop_runner/__init__.py +0 -0
  157. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/agentic/loop_runner/_iteration_handler_utils.py +0 -0
  158. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/agentic/loop_runner/_responses_iteration_handler_utils.py +0 -0
  159. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/agentic/loop_runner/_responses_stream_handler_utils.py +0 -0
  160. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/agentic/loop_runner/_stream_handler_utils.py +0 -0
  161. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/agentic/loop_runner/base.py +0 -0
  162. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/agentic/loop_runner/middleware/__init__.py +0 -0
  163. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/agentic/loop_runner/middleware/planning/__init__.py +0 -0
  164. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/agentic/loop_runner/middleware/planning/planning.py +0 -0
  165. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/agentic/loop_runner/middleware/planning/schema.py +0 -0
  166. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/agentic/loop_runner/runners/__init__.py +0 -0
  167. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/agentic/loop_runner/runners/basic.py +0 -0
  168. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/agentic/loop_runner/runners/mistral/__init__.py +0 -0
  169. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/agentic/loop_runner/runners/mistral/mistral_runner.py +0 -0
  170. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/agentic/loop_runner/runners/qwen/__init__.py +0 -0
  171. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/agentic/loop_runner/runners/qwen/helpers.py +0 -0
  172. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/agentic/loop_runner/runners/qwen/qwen_runner.py +0 -0
  173. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/agentic/message_log_manager/__init__.py +0 -0
  174. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/agentic/message_log_manager/service.py +0 -0
  175. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/agentic/message_log_order.py +0 -0
  176. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/agentic/postprocessor/postprocessor_manager.py +0 -0
  177. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/agentic/reference_manager/reference_manager.py +0 -0
  178. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/agentic/responses_api/__init__.py +0 -0
  179. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/agentic/responses_api/postprocessors/code_display.py +0 -0
  180. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/agentic/responses_api/postprocessors/generated_files.py +0 -0
  181. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/agentic/responses_api/stream_handler.py +0 -0
  182. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/agentic/short_term_memory_manager/persistent_short_term_memory_manager.py +0 -0
  183. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/agentic/thinking_manager/thinking_manager.py +0 -0
  184. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/agentic/tools/__init__.py +0 -0
  185. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/agentic/tools/a2a/__init__.py +0 -0
  186. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/agentic/tools/a2a/evaluation/__init__.py +0 -0
  187. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/agentic/tools/a2a/evaluation/_utils.py +0 -0
  188. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/agentic/tools/a2a/evaluation/config.py +0 -0
  189. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/agentic/tools/a2a/evaluation/evaluator.py +0 -0
  190. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/agentic/tools/a2a/evaluation/summarization_user_message.j2 +0 -0
  191. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/agentic/tools/a2a/manager.py +0 -0
  192. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/agentic/tools/a2a/postprocessing/__init__.py +0 -0
  193. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/agentic/tools/a2a/postprocessing/_display_utils.py +0 -0
  194. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/agentic/tools/a2a/postprocessing/_ref_utils.py +0 -0
  195. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/agentic/tools/a2a/postprocessing/config.py +0 -0
  196. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/agentic/tools/a2a/postprocessing/display.py +0 -0
  197. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/agentic/tools/a2a/postprocessing/references.py +0 -0
  198. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/agentic/tools/a2a/postprocessing/test/test_display.py +0 -0
  199. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/agentic/tools/a2a/postprocessing/test/test_display_utils.py +0 -0
  200. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/agentic/tools/a2a/postprocessing/test/test_ref_utils.py +0 -0
  201. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/agentic/tools/a2a/postprocessing/test/test_references.py +0 -0
  202. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/agentic/tools/a2a/prompts.py +0 -0
  203. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/agentic/tools/a2a/response_watcher/__init__.py +0 -0
  204. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/agentic/tools/a2a/response_watcher/service.py +0 -0
  205. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/agentic/tools/a2a/tool/_memory.py +0 -0
  206. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/agentic/tools/a2a/tool/_schema.py +0 -0
  207. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/agentic/tools/a2a/tool/test/test_service_utils.py +0 -0
  208. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/agentic/tools/agent_chunks_hanlder.py +0 -0
  209. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/agentic/tools/config.py +0 -0
  210. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/agentic/tools/experimental/__init__.py +0 -0
  211. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/agentic/tools/experimental/open_file_tool/__init__.py +0 -0
  212. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/agentic/tools/experimental/open_file_tool/config.py +0 -0
  213. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/agentic/tools/experimental/open_file_tool/runtime.py +0 -0
  214. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/agentic/tools/experimental/open_file_tool/tool.py +0 -0
  215. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/agentic/tools/experimental/retrieve_search_scope_tool/__init__.py +0 -0
  216. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/agentic/tools/experimental/retrieve_search_scope_tool/config.py +0 -0
  217. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/agentic/tools/experimental/retrieve_search_scope_tool/tool.py +0 -0
  218. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/agentic/tools/experimental/todo/__init__.py +0 -0
  219. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/agentic/tools/experimental/todo/config.py +0 -0
  220. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/agentic/tools/experimental/todo/prompts/__init__.py +0 -0
  221. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/agentic/tools/experimental/todo/prompts/execution_reminder.j2 +0 -0
  222. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/agentic/tools/experimental/todo/prompts/system_prompt.j2 +0 -0
  223. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/agentic/tools/experimental/todo/prompts/tool_description.j2 +0 -0
  224. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/agentic/tools/experimental/todo/prompts/verification_nudge.j2 +0 -0
  225. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/agentic/tools/experimental/todo/schemas.py +0 -0
  226. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/agentic/tools/experimental/todo/service.py +0 -0
  227. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/agentic/tools/factory.py +0 -0
  228. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/agentic/tools/mcp/__init__.py +0 -0
  229. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/agentic/tools/mcp/manager.py +0 -0
  230. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/agentic/tools/mcp/models.py +0 -0
  231. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/agentic/tools/mcp/tool_wrapper.py +0 -0
  232. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/agentic/tools/names.py +0 -0
  233. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/agentic/tools/openai_builtin/__init__.py +0 -0
  234. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/agentic/tools/openai_builtin/base.py +0 -0
  235. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/__init__.py +0 -0
  236. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/postprocessors/__init__.py +0 -0
  237. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/postprocessors/artifacts.py +0 -0
  238. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/postprocessors/code_display.py +0 -0
  239. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/schemas.py +0 -0
  240. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/service.py +0 -0
  241. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/agentic/tools/openai_builtin/manager.py +0 -0
  242. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/agentic/tools/schemas.py +0 -0
  243. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/agentic/tools/test/test_mcp_manager.py +0 -0
  244. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/agentic/tools/test/test_tool_progress_reporter.py +0 -0
  245. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/agentic/tools/tool.py +0 -0
  246. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/agentic/tools/tool_progress_reporter.py +0 -0
  247. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/agentic/tools/utils/__init__.py +0 -0
  248. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/agentic/tools/utils/source_handling/__init__.py +0 -0
  249. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/agentic/tools/utils/source_handling/schema.py +0 -0
  250. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/agentic/tools/utils/source_handling/source_formatting.py +0 -0
  251. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/agentic/tools/utils/source_handling/tests/test_source_formatting.py +0 -0
  252. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/agentic_table/__init__.py +0 -0
  253. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/agentic_table/schemas.py +0 -0
  254. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/agentic_table/service.py +0 -0
  255. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/app/__init__.py +0 -0
  256. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/app/chat_event_filter_options_settings.py +0 -0
  257. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/app/dev_util.py +0 -0
  258. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/app/fast_api_factory.py +0 -0
  259. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/app/feature_flags.py +0 -0
  260. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/app/find_env_file.py +0 -0
  261. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/app/init_logging.py +0 -0
  262. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/app/init_sdk.py +0 -0
  263. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/app/performance/async_tasks.py +0 -0
  264. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/app/performance/async_wrapper.py +0 -0
  265. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/app/unique_settings.py +0 -0
  266. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/app/verification.py +0 -0
  267. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/app/webhook.py +0 -0
  268. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/chat/__init__.py +0 -0
  269. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/chat/cancellation.py +0 -0
  270. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/chat/constants.py +0 -0
  271. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/chat/deprecated/service.py +0 -0
  272. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/chat/functions.py +0 -0
  273. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/chat/rendering.py +0 -0
  274. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/chat/responses_api.py +0 -0
  275. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/chat/schemas.py +0 -0
  276. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/chat/service.py +0 -0
  277. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/chat/state.py +0 -0
  278. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/chat/utils.py +0 -0
  279. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/content/constants.py +0 -0
  280. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/content/functions.py +0 -0
  281. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/content/service.py +0 -0
  282. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/content/utils.py +0 -0
  283. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/data_extraction/README.md +0 -0
  284. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/data_extraction/__init__.py +0 -0
  285. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/data_extraction/augmented/__init__.py +0 -0
  286. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/data_extraction/augmented/service.py +0 -0
  287. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/data_extraction/base.py +0 -0
  288. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/data_extraction/basic/__init__.py +0 -0
  289. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/data_extraction/basic/config.py +0 -0
  290. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/data_extraction/basic/prompt.py +0 -0
  291. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/data_extraction/basic/service.py +0 -0
  292. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/elicitation/__init__.py +0 -0
  293. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/elicitation/constants.py +0 -0
  294. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/elicitation/exceptions.py +0 -0
  295. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/elicitation/functions.py +0 -0
  296. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/elicitation/schemas.py +0 -0
  297. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/elicitation/service.py +0 -0
  298. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/embedding/__init__.py +0 -0
  299. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/embedding/constants.py +0 -0
  300. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/embedding/functions.py +0 -0
  301. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/embedding/schemas.py +0 -0
  302. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/embedding/service.py +0 -0
  303. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/embedding/utils.py +0 -0
  304. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/experimental/__init__.py +0 -0
  305. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/experimental/_internal/__init__.py +0 -0
  306. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/experimental/_internal/streaming/__init__.py +0 -0
  307. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/experimental/_internal/streaming/common.py +0 -0
  308. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/experimental/_internal/streaming/pattern_replacer.py +0 -0
  309. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/experimental/components/__init__.py +0 -0
  310. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/experimental/components/_base.py +0 -0
  311. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/experimental/components/content_tree/__init__.py +0 -0
  312. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/experimental/components/content_tree/functions.py +0 -0
  313. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/experimental/components/content_tree/schemas.py +0 -0
  314. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/experimental/components/content_tree/service.py +0 -0
  315. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/experimental/components/internal_search/__init__.py +0 -0
  316. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/experimental/components/internal_search/base/__init__.py +0 -0
  317. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/experimental/components/internal_search/base/config.py +0 -0
  318. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/experimental/components/internal_search/base/schemas.py +0 -0
  319. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/experimental/components/internal_search/base/service.py +0 -0
  320. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/experimental/components/internal_search/base/utils.py +0 -0
  321. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/experimental/components/internal_search/chat/__init__.py +0 -0
  322. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/experimental/components/internal_search/chat/config.py +0 -0
  323. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/experimental/components/internal_search/chat/schemas.py +0 -0
  324. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/experimental/components/internal_search/chat/service.py +0 -0
  325. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/experimental/components/internal_search/knowledge_base/__init__.py +0 -0
  326. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/experimental/components/internal_search/knowledge_base/schemas.py +0 -0
  327. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/experimental/components/internal_search/post_processing/__init__.py +0 -0
  328. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/experimental/components/internal_search/post_processing/config.py +0 -0
  329. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/experimental/components/internal_search/post_processing/service.py +0 -0
  330. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/experimental/content_tree/__init__.py +0 -0
  331. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/experimental/identity/__init__.py +0 -0
  332. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/experimental/integrations/__init__.py +0 -0
  333. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/experimental/integrations/openai/__init__.py +0 -0
  334. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/experimental/integrations/openai/streaming/__init__.py +0 -0
  335. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/__init__.py +0 -0
  336. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/_async_bridge.py +0 -0
  337. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/chat_completions/__init__.py +0 -0
  338. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/chat_completions/complete_with_references.py +0 -0
  339. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/chat_completions/stream_event_router.py +0 -0
  340. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/chat_completions/text_event_handler.py +0 -0
  341. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/chat_completions/tool_call_event_handler.py +0 -0
  342. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/events.py +0 -0
  343. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/protocols/__init__.py +0 -0
  344. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/protocols/chat_completions.py +0 -0
  345. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/protocols/responses.py +0 -0
  346. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/responses/__init__.py +0 -0
  347. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/responses/code_interpreter_event_handler.py +0 -0
  348. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/responses/complete_with_references.py +0 -0
  349. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/responses/completed_event_handler.py +0 -0
  350. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/responses/stream_event_router.py +0 -0
  351. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/responses/text_delta_event_handler.py +0 -0
  352. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/responses/tool_call_event_handler.py +0 -0
  353. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/subscribers/__init__.py +0 -0
  354. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/subscribers/message_persister.py +0 -0
  355. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/subscribers/progress_log_persister.py +0 -0
  356. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/experimental/resources/content_folder/__init__.py +0 -0
  357. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/experimental/resources/content_folder/functions.py +0 -0
  358. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/experimental/resources/content_folder/schemas.py +0 -0
  359. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/experimental/resources/content_folder/service.py +0 -0
  360. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/experimental/resources/facades/__init__.py +0 -0
  361. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/experimental/resources/facades/identity/__init__.py +0 -0
  362. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/experimental/resources/facades/identity/service.py +0 -0
  363. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/experimental/resources/group/__init__.py +0 -0
  364. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/experimental/resources/group/functions.py +0 -0
  365. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/experimental/resources/group/schemas.py +0 -0
  366. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/experimental/resources/group/service.py +0 -0
  367. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/experimental/resources/scheduled_task/__init__.py +0 -0
  368. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/experimental/resources/scheduled_task/cron.py +0 -0
  369. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/experimental/resources/scheduled_task/functions.py +0 -0
  370. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/experimental/resources/scheduled_task/schemas.py +0 -0
  371. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/experimental/resources/scheduled_task/service.py +0 -0
  372. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/experimental/resources/user/__init__.py +0 -0
  373. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/experimental/resources/user/functions.py +0 -0
  374. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/experimental/resources/user/schemas.py +0 -0
  375. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/experimental/resources/user/service.py +0 -0
  376. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/experimental/testing/__init__.py +0 -0
  377. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/framework_utilities/__init__.py +0 -0
  378. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/framework_utilities/langchain/__init__.py +0 -0
  379. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/framework_utilities/langchain/client.py +0 -0
  380. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/framework_utilities/langchain/history.py +0 -0
  381. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/framework_utilities/openai/__init__.py +0 -0
  382. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/framework_utilities/openai/client.py +0 -0
  383. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/framework_utilities/openai/message_builder.py +0 -0
  384. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/framework_utilities/utils.py +0 -0
  385. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/language_model/_responses_api_utils.py +0 -0
  386. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/language_model/builder.py +0 -0
  387. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/language_model/constants.py +0 -0
  388. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/language_model/default_language_model.py +0 -0
  389. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/language_model/functions.py +0 -0
  390. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/language_model/infos.py +0 -0
  391. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/language_model/prompt.py +0 -0
  392. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/language_model/reference.py +0 -0
  393. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/language_model/schemas.py +0 -0
  394. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/language_model/service.py +0 -0
  395. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/language_model/settings.py +0 -0
  396. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/language_model/stream_transform.py +0 -0
  397. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/language_model/utils.py +0 -0
  398. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/monitoring/__init__.py +0 -0
  399. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/protocols/support.py +0 -0
  400. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/services/__init__.py +0 -0
  401. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/services/factory.py +0 -0
  402. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/services/knowledge_base.py +0 -0
  403. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/short_term_memory/__init__.py +0 -0
  404. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/short_term_memory/constants.py +0 -0
  405. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/short_term_memory/schemas.py +0 -0
  406. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.0.dev0}/unique_toolkit/smart_rules/__init__.py +0 -0
  407. {unique_toolkit-2026.24.0 → unique_toolkit-2026.24.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.24.0
3
+ Version: 2026.24.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.24.0
19
+ Requires-Dist: unique-sdk>=2026.24.0.dev0,<2026.24.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
@@ -31,7 +31,6 @@ Requires-Dist: deepdiff>=8.6.1,<9
31
31
  Requires-Dist: pypandoc>=1.16.2,<2
32
32
  Requires-Dist: tenacity>=9.1.4
33
33
  Requires-Dist: pydantic-core>=2.41.5
34
- Requires-Dist: cachetools>=5.0,<6
35
34
  Requires-Dist: fastapi>=0.121.0,<0.122 ; extra == 'fastapi'
36
35
  Requires-Dist: starlette>=0.49.1 ; extra == 'fastapi'
37
36
  Requires-Dist: uvicorn>=0.37.0,<0.38 ; extra == 'fastapi'
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "unique_toolkit"
3
- version = "2026.24.0"
3
+ version = "2026.24.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.24.0",
31
+ "unique-sdk>=2026.24.0.dev0,<2026.24.0rc0",
32
32
  "jambo>=0.1.2,<0.2",
33
33
  "jinja2>=3.1.6,<4",
34
34
  "docxtpl>=0.20.1,<0.21",
@@ -43,7 +43,6 @@ dependencies = [
43
43
  "pypandoc>=1.16.2,<2",
44
44
  "tenacity>=9.1.4",
45
45
  "pydantic-core>=2.41.5",
46
- "cachetools>=5.0,<6",
47
46
  ]
48
47
 
49
48
  [project.optional-dependencies]
@@ -61,6 +60,7 @@ fastapi = [
61
60
  monitoring = [
62
61
  "prometheus_client>=0.24.1,<1",
63
62
  ]
63
+
64
64
  [build-system]
65
65
  requires = ["uv_build>=0.8.14,<0.9.0"]
66
66
  build-backend = "uv_build"
@@ -69,15 +69,13 @@ build-backend = "uv_build"
69
69
  module-root = ""
70
70
 
71
71
  [dependency-groups]
72
- dev = [
73
- "types-cachetools>=5.0,<6",
74
- ]
72
+ dev = []
75
73
 
76
74
  [tool.uv]
77
75
  exclude-newer = "2 weeks"
78
76
  constraint-dependencies = [
79
77
  "starlette>=0.49.1",
80
- "lxml>=6.1.0",
78
+ "lxml>=5.0.0",
81
79
  ]
82
80
 
83
81
  [tool.uv.exclude-newer-package]
@@ -0,0 +1,85 @@
1
+ # Re-export commonly used classes for easier imports
2
+ from unique_toolkit.chat import ChatService
3
+ from unique_toolkit.content import ContentService
4
+ from unique_toolkit.data_extraction import (
5
+ StructuredOutputDataExtractor,
6
+ StructuredOutputDataExtractorConfig,
7
+ )
8
+ from unique_toolkit.embedding import EmbeddingService
9
+ from unique_toolkit.framework_utilities.openai.client import (
10
+ get_async_openai_client,
11
+ get_openai_client,
12
+ )
13
+ from unique_toolkit.language_model import (
14
+ LanguageModelMessages,
15
+ LanguageModelName,
16
+ LanguageModelService,
17
+ LanguageModelToolDescription,
18
+ )
19
+ from unique_toolkit.services.knowledge_base import KnowledgeBaseService
20
+ from unique_toolkit.short_term_memory import ShortTermMemoryService
21
+
22
+ # Conditionally import config_checker (requires pydantic-settings)
23
+ _CONFIG_CHECKER_AVAILABLE: bool = False
24
+ try:
25
+ from unique_toolkit._common.config_checker import (
26
+ ConfigDiffer, # noqa: F401, I001
27
+ ConfigEntry, # noqa: F401, I001
28
+ ConfigExporter, # noqa: F401, I001
29
+ ConfigRegistry, # noqa: F401, I001
30
+ ConfigValidator, # noqa: F401, I001
31
+ DefaultChangeReport, # noqa: F401, I001
32
+ ExportManifest, # noqa: F401, I001
33
+ ValidationReport, # noqa: F401, I001
34
+ register_config, # noqa: F401, I001
35
+ )
36
+
37
+ _CONFIG_CHECKER_AVAILABLE = True # pyright: ignore[reportConstantRedefinition]
38
+ except ImportError:
39
+ pass
40
+
41
+ # Conditionally import langchain utilities if langchain is installed
42
+ _LANGCHAIN_AVAILABLE: bool = False
43
+ try:
44
+ from unique_toolkit.framework_utilities.langchain.client import get_langchain_client # noqa: F401, I001
45
+
46
+ _LANGCHAIN_AVAILABLE = True # pyright: ignore[reportConstantRedefinition]
47
+ except ImportError:
48
+ pass
49
+
50
+ # You can add other classes you frequently use here as well
51
+
52
+ __all__ = [
53
+ "ChatService",
54
+ "ContentService",
55
+ "EmbeddingService",
56
+ "get_openai_client",
57
+ "get_async_openai_client",
58
+ "KnowledgeBaseService",
59
+ "LanguageModelMessages",
60
+ "LanguageModelName",
61
+ "LanguageModelService",
62
+ "LanguageModelToolDescription",
63
+ "ShortTermMemoryService",
64
+ "StructuredOutputDataExtractor",
65
+ "StructuredOutputDataExtractorConfig",
66
+ ]
67
+
68
+ # Add config_checker exports if available
69
+ if _CONFIG_CHECKER_AVAILABLE:
70
+ __all__.extend(
71
+ [
72
+ "ConfigDiffer",
73
+ "ConfigEntry",
74
+ "ConfigExporter",
75
+ "ConfigRegistry",
76
+ "ConfigValidator",
77
+ "DefaultChangeReport",
78
+ "ExportManifest",
79
+ "ValidationReport",
80
+ "register_config",
81
+ ]
82
+ )
83
+ # Add langchain-specific exports if available
84
+ if _LANGCHAIN_AVAILABLE:
85
+ __all__.append("get_langchain_client")
@@ -8,8 +8,6 @@ from typing import Any
8
8
  from unique_toolkit.content.smart_rules import (
9
9
  Operator,
10
10
  Statement,
11
- UniqueQL,
12
- uniqueql_to_dict,
13
11
  )
14
12
 
15
13
  _UQL_AND = "and"
@@ -31,17 +29,16 @@ def build_folder_id_in_clause(scope_ids: list[str]) -> dict[str, Any]:
31
29
 
32
30
  def merge_scope_clause_into_metadata_filter(
33
31
  scope_clause: Mapping[str, Any],
34
- metadata_filter: UniqueQL | Mapping[str, Any] | None,
32
+ metadata_filter: dict[str, Any] | None,
35
33
  ) -> dict[str, Any]:
36
34
  """AND-merge *scope_clause* with *metadata_filter*, flattening a top-level ``and``."""
37
35
  scope_dict = dict(scope_clause)
38
- metadata_dict = uniqueql_to_dict(metadata_filter)
39
- if not metadata_dict:
36
+ if not metadata_filter:
40
37
  return scope_dict
41
- inner_and = metadata_dict.get(_UQL_AND)
38
+ inner_and = metadata_filter.get(_UQL_AND)
42
39
  if isinstance(inner_and, list):
43
40
  return {_UQL_AND: [scope_dict, *inner_and]}
44
- return {_UQL_AND: [scope_dict, metadata_dict]}
41
+ return {_UQL_AND: [scope_dict, dict(metadata_filter)]}
45
42
 
46
43
 
47
44
  __all__ = [
@@ -974,12 +974,7 @@ def ui_schema_for_model(
974
974
  node["items"] = item_node
975
975
 
976
976
  # Dict -> additionalProperties (value side)
977
- # Skip when the node already carries a ui:widget (fully-specified
978
- # widget) or an anyOf (fully-specified type branching): walking the
979
- # dict value type in those cases adds a spurious "additionalProperties"
980
- # node that confuses RJSF renderers. Presentation-only meta such as
981
- # ui:expandable or ui:title does NOT prevent the walk.
982
- elif origin is dict and "ui:widget" not in node and "anyOf" not in node:
977
+ elif origin is dict:
983
978
  _key_t, val_t = get_args(base) or (Any, Any)
984
979
  val_base, val_meta = _walk_annotated_chain(val_t)
985
980
  val_base = _unwrap_optional(val_base)
@@ -0,0 +1,17 @@
1
+ from pydantic import Field
2
+
3
+ from unique_toolkit.agentic.tools.a2a.evaluation import SubAgentEvaluationConfig
4
+ from unique_toolkit.agentic.tools.a2a.postprocessing import SubAgentDisplayConfig
5
+ from unique_toolkit.agentic.tools.a2a.tool import SubAgentToolConfig
6
+
7
+
8
+ # SubAgentToolConfig with display and evaluation configs
9
+ class ExtendedSubAgentToolConfig(SubAgentToolConfig):
10
+ response_display_config: SubAgentDisplayConfig = Field(
11
+ default_factory=SubAgentDisplayConfig,
12
+ description="Configuration for how to display the sub-agent response.",
13
+ )
14
+ evaluation_config: SubAgentEvaluationConfig = Field(
15
+ default_factory=SubAgentEvaluationConfig,
16
+ description="Configuration for handling assessments of the sub-agent response.",
17
+ )
@@ -0,0 +1,4 @@
1
+ from unique_toolkit.agentic.tools.a2a.tool.config import SubAgentToolConfig
2
+ from unique_toolkit.agentic.tools.a2a.tool.service import SubAgentTool
3
+
4
+ __all__ = ["SubAgentTool", "SubAgentToolConfig"]
@@ -1,9 +1,8 @@
1
- import logging
2
1
  import re
3
2
  from enum import StrEnum
4
- from typing import Annotated, Generic, Literal, Self, TypeVar
3
+ from typing import Annotated, Generic, Literal, TypeVar
5
4
 
6
- from pydantic import Field, field_validator, model_validator
5
+ from pydantic import Field, field_validator
7
6
  from pydantic.main import BaseModel
8
7
 
9
8
  from unique_toolkit._common.pydantic.rjsf_tags import RJSFMetaTag
@@ -27,9 +26,6 @@ class SystemReminderConfig(BaseModel, Generic[T]):
27
26
  type: T
28
27
 
29
28
 
30
- _LOGGER = logging.getLogger(__name__)
31
-
32
-
33
29
  _SYSTEM_REMINDER_FIELD_DESCRIPTION = """
34
30
  The reminder to add to the tool response. The reminder can be a Jinja template and can contain the following placeholders:
35
31
  - {{ display_name }}: The display name of the sub agent.
@@ -107,19 +103,6 @@ This is the message that will be sent to the sub-agent.
107
103
  """.strip()
108
104
 
109
105
 
110
- class SubAgentPassthroughConfig(BaseModel):
111
- model_config = get_configuration_dict()
112
-
113
- enabled: bool = Field(
114
- default=False,
115
- description="If set, this sub agent's response will be directly displayed to the user once the agent is called, ending the orchestrator loop.",
116
- )
117
- include_assessments: bool = Field(
118
- default=True,
119
- description="If set, this sub agent's assessments will be added to the main agent response.",
120
- )
121
-
122
-
123
106
  class SubAgentToolConfig(BaseToolConfig):
124
107
  model_config = get_configuration_dict()
125
108
 
@@ -188,12 +171,10 @@ class SubAgentToolConfig(BaseToolConfig):
188
171
  poll_interval: Annotated[float, RJSFMetaTag.NumberWidget.updown()] = Field(
189
172
  default=1.0,
190
173
  description="Time interval in seconds between polling attempts when waiting for sub-agent response.",
191
- gt=0,
192
174
  )
193
175
  max_wait: Annotated[float, RJSFMetaTag.NumberWidget.updown()] = Field(
194
176
  default=120.0,
195
177
  description="Maximum time in seconds to wait for the sub-agent response before timing out.",
196
- gt=0,
197
178
  )
198
179
  stop_condition: Literal["stoppedStreamingAt", "completedAt"] = Field(
199
180
  default="completedAt",
@@ -216,11 +197,6 @@ class SubAgentToolConfig(BaseToolConfig):
216
197
  default=False,
217
198
  description="If set, the sub-agent response will be interpreted as a list of content chunks.",
218
199
  )
219
- passthrough_config: SubAgentPassthroughConfig = Field(
220
- default_factory=SubAgentPassthroughConfig,
221
- description="Configuration for streaming the sub-agent response directly back to the user.",
222
- title="Direct Streaming Configuration (Experimental)",
223
- )
224
200
 
225
201
  system_reminders_config: list[
226
202
  Annotated[
@@ -231,28 +207,3 @@ class SubAgentToolConfig(BaseToolConfig):
231
207
  default=[],
232
208
  description="Configuration for the system reminders to add to the tool response.",
233
209
  )
234
-
235
- @model_validator(mode="after")
236
- def _ensure_response_passthrough_and_returns_content_chunks_mutually_exclusive(
237
- self,
238
- ) -> Self:
239
- if self.passthrough_config.enabled and self.returns_content_chunks:
240
- raise ValueError(
241
- f"SubAgent (assistant_id={self.assistant_id!r}): "
242
- "`passthrough_config.enabled` and `returns_content_chunks` are mutually exclusive."
243
- )
244
- return self
245
-
246
- @model_validator(mode="after")
247
- def _ensure_use_sub_agent_references_off_when_tool_response_passthrough(
248
- self,
249
- ) -> Self:
250
- if self.passthrough_config.enabled and self.use_sub_agent_references:
251
- _LOGGER.warning(
252
- "SubAgent (assistant_id=%r): `passthrough_config.enabled=True` and `use_sub_agent_references=True`. "
253
- "`use_sub_agent_references` will be overridden to False.",
254
- self.assistant_id,
255
- )
256
- self.use_sub_agent_references = False
257
-
258
- return self
@@ -11,7 +11,6 @@ from pydantic import Field, TypeAdapter, create_model
11
11
  from unique_sdk.api_resources._space import Space
12
12
  from unique_sdk.utils.chat_in_space import send_message_and_wait_for_completion
13
13
 
14
- from unique_toolkit._common.execution import SafeTaskExecutor
15
14
  from unique_toolkit._common.referencing import (
16
15
  get_all_ref_numbers,
17
16
  get_detection_pattern_for_ref,
@@ -42,15 +41,9 @@ from unique_toolkit.agentic.tools.tool_progress_reporter import (
42
41
  ToolProgressReporter,
43
42
  )
44
43
  from unique_toolkit.app import ChatEvent
45
- from unique_toolkit.chat.schemas import (
46
- ChatMessageAssessmentLabel,
47
- ChatMessageAssessmentStatus,
48
- ChatMessageAssessmentType,
49
- MessageLog,
50
- MessageLogStatus,
51
- )
44
+ from unique_toolkit.chat.schemas import MessageLog, MessageLogStatus
52
45
  from unique_toolkit.chat.service import ChatService
53
- from unique_toolkit.content import ContentChunk, ContentReference
46
+ from unique_toolkit.content import ContentChunk
54
47
  from unique_toolkit.language_model import (
55
48
  LanguageModelFunction,
56
49
  LanguageModelToolDescription,
@@ -153,10 +146,6 @@ class SubAgentTool(Tool[SubAgentToolConfig]):
153
146
  def tool_format_information_for_user_prompt(self) -> str:
154
147
  return self.config.tool_format_information_for_user_prompt
155
148
 
156
- @override
157
- def takes_control(self) -> bool:
158
- return self.config.passthrough_config.enabled
159
-
160
149
  @override
161
150
  def evaluation_check_list(self) -> list[EvaluationMetricName]:
162
151
  return [EvaluationMetricName.SUB_AGENT] if self._should_run_evaluation else []
@@ -226,7 +215,6 @@ class SubAgentTool(Tool[SubAgentToolConfig]):
226
215
  self._should_run_evaluation |= (
227
216
  response["assessment"] is not None
228
217
  and len(response["assessment"]) > 0
229
- and not self.config.passthrough_config.enabled
230
218
  ) # Run evaluation if any sub agent returned an assessment
231
219
 
232
220
  self._notify_watcher(response, sequence_number, timestamp)
@@ -285,9 +273,6 @@ class SubAgentTool(Tool[SubAgentToolConfig]):
285
273
  active_message_log=active_message_log,
286
274
  )
287
275
 
288
- if self.config.passthrough_config.enabled:
289
- await self._display_sub_agent_response(response)
290
-
291
276
  return ToolCallResponse(
292
277
  id=tool_call.id,
293
278
  name=tool_call.name,
@@ -318,68 +303,6 @@ class SubAgentTool(Tool[SubAgentToolConfig]):
318
303
  )
319
304
  raise e
320
305
 
321
- async def _display_sub_agent_response(self, response: Space.Message) -> None:
322
- await self._publish_sub_agent_response(response, set_completed_at=True)
323
-
324
- if self.config.passthrough_config.include_assessments:
325
- await self._forward_sub_agent_assessments(response["assessment"] or [])
326
-
327
- async def _publish_sub_agent_response(
328
- self,
329
- response: Space.Message,
330
- *,
331
- set_completed_at: bool,
332
- ) -> None:
333
- await self._chat_service.modify_assistant_message_async(
334
- content=response["text"],
335
- original_content=response["originalText"],
336
- references=[
337
- ContentReference.from_sdk_reference(ref)
338
- for ref in response["references"] or []
339
- ],
340
- set_completed_at=set_completed_at,
341
- )
342
-
343
- async def _publish_sub_agent_response_update(
344
- self,
345
- response: Space.Message,
346
- ) -> None:
347
- try:
348
- await self._publish_sub_agent_response(response, set_completed_at=False)
349
- except Exception:
350
- logger.warning(
351
- "Failed to publish streaming sub agent passthrough update",
352
- exc_info=True,
353
- )
354
-
355
- async def _forward_sub_agent_assessments(
356
- self,
357
- assessments: list[unique_sdk.Space.Assessment],
358
- ) -> None:
359
- async def _create_one_assessment(
360
- assessment: unique_sdk.Space.Assessment,
361
- ) -> None:
362
- await self._chat_service.create_message_assessment_async(
363
- assistant_message_id=self._chat_service._assistant_message_id,
364
- status=ChatMessageAssessmentStatus(assessment["status"]),
365
- type=ChatMessageAssessmentType(assessment["type"]),
366
- title=assessment["title"],
367
- explanation=assessment["explanation"],
368
- label=ChatMessageAssessmentLabel(assessment["label"]),
369
- is_visible=assessment["isVisible"],
370
- )
371
-
372
- if not assessments:
373
- return
374
-
375
- task_executor = SafeTaskExecutor(logger=logger)
376
- await asyncio.gather(
377
- *(
378
- task_executor.execute_async(_create_one_assessment, a)
379
- for a in assessments
380
- ),
381
- )
382
-
383
306
  async def _get_chat_id(self) -> str | None:
384
307
  if not self.config.reuse_chat:
385
308
  return None
@@ -465,12 +388,6 @@ class SubAgentTool(Tool[SubAgentToolConfig]):
465
388
  active_message_log: MessageLog | None = None,
466
389
  ) -> unique_sdk.Space.Message:
467
390
  try:
468
- on_message_update = (
469
- self._publish_sub_agent_response_update
470
- if self.config.passthrough_config.enabled
471
- else None
472
- )
473
-
474
391
  return await send_message_and_wait_for_completion(
475
392
  user_id=self._user_id,
476
393
  assistant_id=self.config.assistant_id,
@@ -486,7 +403,6 @@ class SubAgentTool(Tool[SubAgentToolConfig]):
486
403
  parentChatId=self._event.payload.chat_id,
487
404
  parentAssistantId=self.config.assistant_id,
488
405
  ),
489
- on_message_update=on_message_update,
490
406
  )
491
407
  except TimeoutError as e:
492
408
  await self._notify_progress(
@@ -147,7 +147,6 @@ HTML files — CRITICAL rules:
147
147
  - The main content container MUST have a bounded, measurable height. For charts/dashboards either (a) give the chart container an explicit pixel height (e.g. `height: 500px`) or (b) use `aspect-ratio` together with a `width` so height is derived. Do NOT leave the top-level container with no intrinsic height.
148
148
  - Do NOT use `position: fixed` or `position: absolute` on top-level layout elements — they remove the element from the flow and the iframe cannot measure it.
149
149
  - Plotly users — CRITICAL: Plotly's `fig.write_html(...)` / `fig.to_html(...)` defaults emit a `<div class="plotly-graph-div" style="height:100%; width:100%;">` with no wrapper height (iframe collapse) **and** inline the entire Plotly JS bundle (~3MB), which often fails KB upload. You MUST pass `include_plotlyjs="cdn"`, `full_html=True`, and `default_height` (and `default_width` when relevant). Example: `fig.write_html(path, full_html=True, include_plotlyjs="cdn", default_height="600px")`. If you hand-write the wrapper HTML around a Plotly div, wrap the `plotly-graph-div` in a container with an explicit pixel height and never leave the graph div at `height:100%`.
150
- - Plotly header overlap — CRITICAL: When a chart combines a horizontal legend positioned above the axes (`legend.y > 1`), range-selector buttons (`rangeselector`), and subplot title annotations, all three compete for the same top region and will overlap unless you reserve enough space. Rules: (1) set `fig.update_layout(margin=dict(t=150))` (or more) whenever any two of those elements coexist; (2) place a horizontal legend at `y=1.15` or higher (not `y=1.0`–`1.05`) so it clears the range-selector row; (3) for annotation-based subplot titles use `y` values ≥ 0.05 above the legend's `y` value; (4) if a chart also has range-sliders at the bottom, add sufficient bottom margin (`margin.b ≥ 80`) to avoid clipping the slider. Never rely on Plotly's default top margin of 80 px when the header contains more than a single title.
151
150
  - Single-chart HTML files — always add an outer wrapper with an explicit `height` (e.g. `<div style="height:600px">…chart…</div>`) so the document has a non-zero intrinsic height, even if the chart library defaults to percentage sizing.
152
151
  - Apply clean, readable typography: prefer system fonts (`-apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif`) and sufficient contrast (WCAG AA minimum).
153
152
  - Use semantic HTML elements (`<table>` for tabular data, `<button>` for actions, `<h1>`–`<h6>` for headings, `alt` attributes on `<img>` tags). Avoid using `<div>` for everything.
@@ -161,7 +160,6 @@ Handling User Queries:
161
160
  - Whenever the user query requires using the python tool, you must always think first about the steps required.
162
161
  - CRITICAL: If any step generates a plot or visualization as a PNG, use **matplotlib** — that code block MUST include `plt.savefig('/mnt/data/<filename>.png', bbox_inches='tight')` and `plt.close()` as the final lines. Code that only calls `plt.show()` without saving will NOT display the image to the user.
163
162
  - CRITICAL: NEVER reference a `sandbox:/mnt/data/<filename>` link unless you have already executed code in this response that saved that exact file. Referencing a file that was not created by executed code will result in a broken link.
164
- - Self-check before writing any sandbox link: look back at the code blocks you executed in this response. Is there a block that explicitly saves this exact filename to `/mnt/data/`? If not, execute the code first — then reference the file.
165
163
  - CRITICAL: The sandbox has NO internet access. NEVER use `requests`, `httpx`, `urllib`, or any other HTTP library to fetch data from the web — these calls will always fail. If the user's query requires live web data (e.g. market prices, news, APIs), you MUST retrieve it using the web search tool first and then pass the result into the code interpreter.
166
164
  - CRITICAL: For Excel files (`.xls`, `.xlsx`) and CSV files uploaded to the chat, ALWAYS use this tool to read and process them (e.g. `pandas.read_excel`, `pandas.read_csv`, `openpyxl`). Do NOT rely on the chat's text content or prior ingestion for spreadsheet data — the raw file contents are only accessible via code execution from `/mnt/data/<filename>`.
167
165
  - For calculation, retrieval, or exploratory-analysis answers, return the result concisely in the chat as markdown (key numbers inline, short tables where useful). Do NOT produce a separate artifact file (HTML, PDF, etc.) unless the user explicitly asked for a downloadable output or the request clearly calls for a dashboard/report.
@@ -620,16 +620,13 @@ class DisplayCodeInterpreterFilesPostProcessor(
620
620
  self._log.info("Fence injection modified the message text")
621
621
 
622
622
  _warn_missing_content_ids(loop_response.message.text or "", self._content_map)
623
- ci_ran = bool(loop_response.code_interpreter_calls)
624
623
  loop_response.message.text, dangling_replaced = _replace_dangling_sandbox_links(
625
- loop_response.message.text, ci_ran=ci_ran
624
+ loop_response.message.text
626
625
  )
627
626
  changed |= dangling_replaced
628
627
  if dangling_replaced:
629
628
  self._log.warning(
630
- "apply_postprocessing found and replaced dangling sandbox links "
631
- "(ci_ran=%s)",
632
- ci_ran,
629
+ "apply_postprocessing found and replaced dangling sandbox links"
633
630
  )
634
631
 
635
632
  apply_ms = (time.monotonic() - apply_t0) * 1000
@@ -1257,9 +1254,7 @@ _SANDBOX_MARKDOWN_LINK_RE = re.compile(r"!?\[.*?\]\(sandbox:/mnt/data/\S+?\)")
1257
1254
  _SANDBOX_FILENAME_RE = re.compile(r"sandbox:/mnt/data/([^)\s]+)")
1258
1255
 
1259
1256
 
1260
- def _replace_dangling_sandbox_links(
1261
- text: str, *, ci_ran: bool = True
1262
- ) -> tuple[str, bool]:
1257
+ def _replace_dangling_sandbox_links(text: str) -> tuple[str, bool]:
1263
1258
  """Replace any remaining sandbox:/mnt/data/ markdown links with a per-file notice.
1264
1259
 
1265
1260
  A dangling link means either the LLM hallucinated a file reference (the sandbox
@@ -1268,12 +1263,6 @@ def _replace_dangling_sandbox_links(
1268
1263
  cases the user would see a broken link; this function replaces each such link with
1269
1264
  an actionable message that names the specific file, and logs a warning so the
1270
1265
  incident is visible in production logs.
1271
-
1272
- Args:
1273
- text: The message text to scan for dangling sandbox links.
1274
- ci_ran: Whether the code interpreter was called at all this turn. When
1275
- ``False`` the LLM emitted a sandbox link without invoking the tool
1276
- (hallucination); a more accurate message is shown to the user.
1277
1266
  """
1278
1267
  if not _SANDBOX_MARKDOWN_LINK_RE.search(text):
1279
1268
  return text, False
@@ -1282,17 +1271,11 @@ def _replace_dangling_sandbox_links(
1282
1271
  filename_match = _SANDBOX_FILENAME_RE.search(m.group())
1283
1272
  filename = filename_match.group(1) if filename_match else "the file"
1284
1273
  logger.warning(
1285
- "Dangling sandbox link found in final text: '%s'. ci_ran=%s. "
1286
- "The file was either never generated or the link format did not match "
1274
+ "Dangling sandbox link found in final text: '%s'. "
1275
+ "The file was either never uploaded or the link format did not match "
1287
1276
  "the expected pattern — replacing with per-file notice.",
1288
1277
  m.group(),
1289
- ci_ran,
1290
1278
  )
1291
- if not ci_ran:
1292
- return (
1293
- f"⚠️ The file *{filename}* was not generated. "
1294
- "Please ask me to create it."
1295
- )
1296
1279
  return f"⚠️ The file *{filename}* could not be retrieved. You can ask me to regenerate it."
1297
1280
 
1298
1281
  return _SANDBOX_MARKDOWN_LINK_RE.sub(_replacement, text), True
@@ -310,65 +310,20 @@ class _ToolManager(Generic[_ApiMode]):
310
310
  if tool.name not in self._tool_choices:
311
311
  self._tool_choices.append(tool.name)
312
312
 
313
- def _get_tool_calls_that_take_control(
314
- self, tool_calls: list[LanguageModelFunction]
315
- ) -> list[LanguageModelFunction]:
316
- tools = []
313
+ def does_a_tool_take_control(self, tool_calls: list[LanguageModelFunction]) -> bool:
317
314
  for tool_call in tool_calls:
318
315
  tool_instance = self.get_tool_by_name(tool_call.name)
319
316
  if tool_instance and tool_instance.takes_control():
320
- tools.append(tool_call)
321
-
322
- return tools
323
-
324
- def does_a_tool_take_control(self, tool_calls: list[LanguageModelFunction]) -> bool:
325
- return len(self._get_tool_calls_that_take_control(tool_calls)) > 0
317
+ return True
318
+ return False
326
319
 
327
320
  def get_evaluation_check_list(self) -> list[EvaluationMetricName]:
328
321
  return list(self._tool_evaluation_check_list)
329
322
 
330
- def _take_control_conflict_response(
331
- self,
332
- tool_call: LanguageModelFunction,
333
- take_control_names: list[str],
334
- ) -> ToolCallResponse:
335
- if tool_call.name in take_control_names:
336
- content = (
337
- f"ERROR: Tool `{tool_call.name}` directly returns its response to the user and therefore must be called on its own. "
338
- "None of the tools in this batch were executed. "
339
- f"You may recover by first calling the other tools, then calling `{tool_call.name}` alone."
340
- )
341
- else:
342
- names = ", ".join(f"`{n}`" for n in take_control_names)
343
- content = f"ERROR: Not executed because the following tool(s) must be called on their own: {names}"
344
-
345
- return ToolCallResponse(
346
- id=tool_call.id,
347
- name=tool_call.name,
348
- content=content,
349
- )
350
-
351
323
  async def execute_selected_tools(
352
324
  self,
353
325
  tool_calls: list[LanguageModelFunction],
354
326
  ) -> list[ToolCallResponse]:
355
- if len(tool_calls) > 1:
356
- take_control_tools = [
357
- t.name for t in self._get_tool_calls_that_take_control(tool_calls)
358
- ]
359
-
360
- if len(take_control_tools) > 0:
361
- self._logger.warning(
362
- "Tool(s) %s take control and cannot be called alongside other tools. "
363
- "Returning error for all %d tool calls.",
364
- take_control_tools,
365
- len(tool_calls),
366
- )
367
- return [
368
- self._take_control_conflict_response(tool_call, take_control_tools)
369
- for tool_call in tool_calls
370
- ]
371
-
372
327
  tool_call_responses = await self._execute_parallelized(tool_calls)
373
328
  return tool_call_responses
374
329