unique-toolkit 2026.28.0.dev16__tar.gz → 2026.28.0.dev18__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 (411) hide show
  1. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/PKG-INFO +2 -2
  2. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/pyproject.toml +2 -2
  3. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/agentic/tools/a2a/manager.py +33 -9
  4. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/agentic/tools/a2a/tool/service.py +14 -6
  5. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/agentic/tools/experimental/ask_user_tool/tool.py +19 -3
  6. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/agentic/tools/experimental/todo/service.py +18 -2
  7. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/agentic/tools/mcp/manager.py +29 -8
  8. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/agentic/tools/mcp/tool_wrapper.py +15 -7
  9. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/agentic/tools/tool.py +13 -0
  10. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/agentic/tools/tool_manager.py +53 -8
  11. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/app/unique_settings.py +45 -1
  12. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/README.md +0 -0
  13. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/__init__.py +0 -0
  14. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/_common/__init__.py +0 -0
  15. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/_common/_base_service.py +0 -0
  16. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/_common/_time_utils.py +0 -0
  17. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/_common/api_calling/human_verification_manager.py +0 -0
  18. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/_common/base_model_type_attribute.py +0 -0
  19. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/_common/chunk_relevancy_sorter/config.py +0 -0
  20. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/_common/chunk_relevancy_sorter/exception.py +0 -0
  21. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/_common/chunk_relevancy_sorter/schemas.py +0 -0
  22. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/_common/chunk_relevancy_sorter/service.py +0 -0
  23. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/_common/chunk_relevancy_sorter/tests/test_service.py +0 -0
  24. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/_common/config_checker/README.md +0 -0
  25. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/_common/config_checker/__init__.py +0 -0
  26. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/_common/config_checker/__main__.py +0 -0
  27. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/_common/config_checker/cli.py +0 -0
  28. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/_common/config_checker/differ.py +0 -0
  29. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/_common/config_checker/exporter.py +0 -0
  30. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/_common/config_checker/models.py +0 -0
  31. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/_common/config_checker/registry.py +0 -0
  32. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/_common/config_checker/validator.py +0 -0
  33. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/_common/default_language_model.py +0 -0
  34. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/_common/docx_generator/__init__.py +0 -0
  35. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/_common/docx_generator/config.py +0 -0
  36. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/_common/docx_generator/pandoc_converter.py +0 -0
  37. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/_common/docx_generator/schemas.py +0 -0
  38. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/_common/docx_generator/service.py +0 -0
  39. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/_common/docx_generator/template/Doc Template.docx +0 -0
  40. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/_common/endpoint_builder.py +0 -0
  41. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/_common/endpoint_requestor.py +0 -0
  42. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/_common/event_bus.py +0 -0
  43. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/_common/exception.py +0 -0
  44. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/_common/execution.py +0 -0
  45. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/_common/experimental/endpoint_builder.py +0 -0
  46. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/_common/experimental/endpoint_requestor.py +0 -0
  47. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/_common/experimental/write_up_agent/README.md +0 -0
  48. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/_common/experimental/write_up_agent/__init__.py +0 -0
  49. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/_common/experimental/write_up_agent/agent.py +0 -0
  50. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/_common/experimental/write_up_agent/config.py +0 -0
  51. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/_common/experimental/write_up_agent/examples/data.csv +0 -0
  52. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/_common/experimental/write_up_agent/examples/example_usage.py +0 -0
  53. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/_common/experimental/write_up_agent/schemas.py +0 -0
  54. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/_common/experimental/write_up_agent/services/__init__.py +0 -0
  55. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/_common/experimental/write_up_agent/services/dataframe_handler/__init__.py +0 -0
  56. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/_common/experimental/write_up_agent/services/dataframe_handler/exceptions.py +0 -0
  57. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/_common/experimental/write_up_agent/services/dataframe_handler/service.py +0 -0
  58. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/_common/experimental/write_up_agent/services/dataframe_handler/utils.py +0 -0
  59. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/__init__.py +0 -0
  60. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/config.py +0 -0
  61. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/exceptions.py +0 -0
  62. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/prompts/config.py +0 -0
  63. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/prompts/system_prompt.j2 +0 -0
  64. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/prompts/user_prompt.j2 +0 -0
  65. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/service.py +0 -0
  66. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/_common/experimental/write_up_agent/services/template_handler/__init__.py +0 -0
  67. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/_common/experimental/write_up_agent/services/template_handler/default_template.j2 +0 -0
  68. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/_common/experimental/write_up_agent/services/template_handler/exceptions.py +0 -0
  69. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/_common/experimental/write_up_agent/services/template_handler/service.py +0 -0
  70. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/_common/experimental/write_up_agent/services/template_handler/utils.py +0 -0
  71. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/_common/experimental/write_up_agent/utils.py +0 -0
  72. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/_common/feature_flags/schema.py +0 -0
  73. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/_common/metadata_filter_scope.py +0 -0
  74. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/_common/pydantic/rjsf_tags.py +0 -0
  75. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/_common/pydantic_helpers.py +0 -0
  76. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/_common/referencing.py +0 -0
  77. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/_common/string_utilities.py +0 -0
  78. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/_common/tests/test_referencing.py +0 -0
  79. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/_common/tests/test_string_utilities.py +0 -0
  80. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/_common/token/__init__.py +0 -0
  81. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/_common/token/image_token_counting.py +0 -0
  82. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/_common/token/token_counting.py +0 -0
  83. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/_common/token/tokenizers/deepseek/tokenizer.json +0 -0
  84. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/_common/token/tokenizers/qwen/tokenizer.json +0 -0
  85. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/_common/utils/__init__.py +0 -0
  86. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/_common/utils/files.py +0 -0
  87. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/_common/utils/image/encode.py +0 -0
  88. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/_common/utils/jinja/helpers.py +0 -0
  89. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/_common/utils/jinja/render.py +0 -0
  90. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/_common/utils/jinja/schema.py +0 -0
  91. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/_common/utils/jinja/utils.py +0 -0
  92. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/_common/utils/structured_output/__init__.py +0 -0
  93. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/_common/utils/structured_output/schema.py +0 -0
  94. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/_common/utils/write_configuration.py +0 -0
  95. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/_common/validate_required_values.py +0 -0
  96. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/_common/validators.py +0 -0
  97. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/agentic/__init__.py +0 -0
  98. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/agentic/debug_info_manager/debug_info_manager.py +0 -0
  99. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/agentic/debug_info_manager/test/test_debug_info_manager.py +0 -0
  100. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/agentic/evaluation/config.py +0 -0
  101. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/agentic/evaluation/context_relevancy/prompts/__init__.py +0 -0
  102. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/agentic/evaluation/context_relevancy/prompts/system_prompt.j2 +0 -0
  103. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/agentic/evaluation/context_relevancy/prompts/user_prompt.j2 +0 -0
  104. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/agentic/evaluation/context_relevancy/schema.py +0 -0
  105. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/agentic/evaluation/context_relevancy/service.py +0 -0
  106. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/agentic/evaluation/evaluation_manager.py +0 -0
  107. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/agentic/evaluation/exception.py +0 -0
  108. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/agentic/evaluation/hallucination/constants.py +0 -0
  109. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/agentic/evaluation/hallucination/hallucination_evaluation.py +0 -0
  110. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/agentic/evaluation/hallucination/prompts/__init__.py +0 -0
  111. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/agentic/evaluation/hallucination/prompts/system_prompt.j2 +0 -0
  112. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/agentic/evaluation/hallucination/prompts/user_prompt.j2 +0 -0
  113. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/agentic/evaluation/hallucination/service.py +0 -0
  114. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/agentic/evaluation/hallucination/utils.py +0 -0
  115. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/agentic/evaluation/output_parser.py +0 -0
  116. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/agentic/evaluation/schemas.py +0 -0
  117. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/agentic/evaluation/tests/fixtures.py +0 -0
  118. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/agentic/evaluation/tests/test_config.py +0 -0
  119. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/agentic/evaluation/tests/test_context_relevancy_service.py +0 -0
  120. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/agentic/evaluation/tests/test_hallucination_constants.py +0 -0
  121. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/agentic/evaluation/tests/test_hallucination_external_context.py +0 -0
  122. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/agentic/evaluation/tests/test_hallucination_utils.py +0 -0
  123. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/agentic/evaluation/tests/test_output_parser.py +0 -0
  124. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/agentic/evaluation/tests/test_prompt_loaders.py +0 -0
  125. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/agentic/evaluation/utils.py +0 -0
  126. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/agentic/feature_flags/__init__.py +0 -0
  127. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/agentic/feature_flags/feature_flags.py +0 -0
  128. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/agentic/history_manager/history_construction_with_contents.py +0 -0
  129. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/agentic/history_manager/history_manager.py +0 -0
  130. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/agentic/history_manager/loop_token_reducer.py +0 -0
  131. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/agentic/history_manager/settings.py +0 -0
  132. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/agentic/history_manager/utils.py +0 -0
  133. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/agentic/loop_runner/__init__.py +0 -0
  134. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/agentic/loop_runner/_iteration_handler_utils.py +0 -0
  135. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/agentic/loop_runner/_responses_iteration_handler_utils.py +0 -0
  136. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/agentic/loop_runner/_responses_stream_handler_utils.py +0 -0
  137. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/agentic/loop_runner/_stream_handler_utils.py +0 -0
  138. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/agentic/loop_runner/base.py +0 -0
  139. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/agentic/loop_runner/middleware/__init__.py +0 -0
  140. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/agentic/loop_runner/middleware/planning/__init__.py +0 -0
  141. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/agentic/loop_runner/middleware/planning/planning.py +0 -0
  142. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/agentic/loop_runner/middleware/planning/schema.py +0 -0
  143. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/agentic/loop_runner/runners/__init__.py +0 -0
  144. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/agentic/loop_runner/runners/basic.py +0 -0
  145. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/agentic/loop_runner/runners/mistral/__init__.py +0 -0
  146. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/agentic/loop_runner/runners/mistral/mistral_runner.py +0 -0
  147. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/agentic/loop_runner/runners/qwen/__init__.py +0 -0
  148. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/agentic/loop_runner/runners/qwen/helpers.py +0 -0
  149. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/agentic/loop_runner/runners/qwen/qwen_runner.py +0 -0
  150. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/agentic/message_log_manager/__init__.py +0 -0
  151. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/agentic/message_log_manager/service.py +0 -0
  152. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/agentic/message_log_order.py +0 -0
  153. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/agentic/postprocessor/postprocessor_manager.py +0 -0
  154. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/agentic/reference_manager/reference_manager.py +0 -0
  155. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/agentic/reference_manager/tests/test_external_context.py +0 -0
  156. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/agentic/responses_api/__init__.py +0 -0
  157. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/agentic/responses_api/postprocessors/code_display.py +0 -0
  158. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/agentic/responses_api/postprocessors/generated_files.py +0 -0
  159. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/agentic/responses_api/stream_handler.py +0 -0
  160. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/agentic/short_term_memory_manager/persistent_short_term_memory_manager.py +0 -0
  161. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/agentic/thinking_manager/thinking_manager.py +0 -0
  162. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/agentic/tools/__init__.py +0 -0
  163. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/agentic/tools/a2a/__init__.py +0 -0
  164. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/agentic/tools/a2a/config.py +0 -0
  165. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/agentic/tools/a2a/evaluation/__init__.py +0 -0
  166. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/agentic/tools/a2a/evaluation/_utils.py +0 -0
  167. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/agentic/tools/a2a/evaluation/config.py +0 -0
  168. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/agentic/tools/a2a/evaluation/evaluator.py +0 -0
  169. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/agentic/tools/a2a/evaluation/summarization_user_message.j2 +0 -0
  170. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/agentic/tools/a2a/postprocessing/__init__.py +0 -0
  171. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/agentic/tools/a2a/postprocessing/_display_utils.py +0 -0
  172. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/agentic/tools/a2a/postprocessing/_ref_utils.py +0 -0
  173. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/agentic/tools/a2a/postprocessing/config.py +0 -0
  174. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/agentic/tools/a2a/postprocessing/display.py +0 -0
  175. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/agentic/tools/a2a/postprocessing/references.py +0 -0
  176. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/agentic/tools/a2a/postprocessing/test/test_display.py +0 -0
  177. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/agentic/tools/a2a/postprocessing/test/test_display_utils.py +0 -0
  178. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/agentic/tools/a2a/postprocessing/test/test_ref_utils.py +0 -0
  179. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/agentic/tools/a2a/postprocessing/test/test_references.py +0 -0
  180. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/agentic/tools/a2a/prompts.py +0 -0
  181. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/agentic/tools/a2a/response_watcher/__init__.py +0 -0
  182. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/agentic/tools/a2a/response_watcher/service.py +0 -0
  183. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/agentic/tools/a2a/tool/__init__.py +0 -0
  184. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/agentic/tools/a2a/tool/_memory.py +0 -0
  185. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/agentic/tools/a2a/tool/_schema.py +0 -0
  186. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/agentic/tools/a2a/tool/config.py +0 -0
  187. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/agentic/tools/a2a/tool/test/test_service_utils.py +0 -0
  188. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/agentic/tools/agent_chunks_hanlder.py +0 -0
  189. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/agentic/tools/config.py +0 -0
  190. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/agentic/tools/experimental/__init__.py +0 -0
  191. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/agentic/tools/experimental/ask_user_tool/__init__.py +0 -0
  192. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/agentic/tools/experimental/ask_user_tool/config.py +0 -0
  193. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/agentic/tools/experimental/open_file_tool/__init__.py +0 -0
  194. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/agentic/tools/experimental/open_file_tool/config.py +0 -0
  195. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/agentic/tools/experimental/open_file_tool/runtime.py +0 -0
  196. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/agentic/tools/experimental/open_file_tool/tool.py +0 -0
  197. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/agentic/tools/experimental/retrieve_search_scope_tool/__init__.py +0 -0
  198. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/agentic/tools/experimental/retrieve_search_scope_tool/config.py +0 -0
  199. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/agentic/tools/experimental/retrieve_search_scope_tool/tool.py +0 -0
  200. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/agentic/tools/experimental/todo/__init__.py +0 -0
  201. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/agentic/tools/experimental/todo/config.py +0 -0
  202. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/agentic/tools/experimental/todo/prompts/__init__.py +0 -0
  203. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/agentic/tools/experimental/todo/prompts/execution_reminder.j2 +0 -0
  204. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/agentic/tools/experimental/todo/prompts/system_prompt.j2 +0 -0
  205. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/agentic/tools/experimental/todo/prompts/tool_description.j2 +0 -0
  206. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/agentic/tools/experimental/todo/prompts/verification_nudge.j2 +0 -0
  207. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/agentic/tools/experimental/todo/schemas.py +0 -0
  208. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/agentic/tools/factory.py +0 -0
  209. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/agentic/tools/mcp/__init__.py +0 -0
  210. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/agentic/tools/mcp/models.py +0 -0
  211. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/agentic/tools/names.py +0 -0
  212. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/agentic/tools/openai_builtin/__init__.py +0 -0
  213. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/agentic/tools/openai_builtin/base.py +0 -0
  214. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/__init__.py +0 -0
  215. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/config.py +0 -0
  216. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/postprocessors/__init__.py +0 -0
  217. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/postprocessors/artifacts.py +0 -0
  218. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/postprocessors/code_display.py +0 -0
  219. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/postprocessors/generated_files.py +0 -0
  220. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/schemas.py +0 -0
  221. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/service.py +0 -0
  222. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/agentic/tools/openai_builtin/manager.py +0 -0
  223. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/agentic/tools/run_context.py +0 -0
  224. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/agentic/tools/schemas.py +0 -0
  225. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/agentic/tools/test/test_mcp_manager.py +0 -0
  226. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/agentic/tools/test/test_tool_progress_reporter.py +0 -0
  227. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/agentic/tools/tool_progress_reporter.py +0 -0
  228. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/agentic/tools/utils/__init__.py +0 -0
  229. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/agentic/tools/utils/source_handling/__init__.py +0 -0
  230. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/agentic/tools/utils/source_handling/schema.py +0 -0
  231. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/agentic/tools/utils/source_handling/source_formatting.py +0 -0
  232. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/agentic/tools/utils/source_handling/tests/test_source_formatting.py +0 -0
  233. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/agentic_table/__init__.py +0 -0
  234. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/agentic_table/schemas.py +0 -0
  235. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/agentic_table/service.py +0 -0
  236. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/agentic_table/synthetic_chat_event.py +0 -0
  237. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/app/__init__.py +0 -0
  238. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/app/chat_event_filter_options_settings.py +0 -0
  239. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/app/dev_util.py +0 -0
  240. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/app/fast_api_factory.py +0 -0
  241. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/app/feature_flags.py +0 -0
  242. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/app/find_env_file.py +0 -0
  243. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/app/init_logging.py +0 -0
  244. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/app/init_sdk.py +0 -0
  245. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/app/performance/async_tasks.py +0 -0
  246. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/app/performance/async_wrapper.py +0 -0
  247. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/app/schemas.py +0 -0
  248. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/app/verification.py +0 -0
  249. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/app/webhook.py +0 -0
  250. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/chat/__init__.py +0 -0
  251. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/chat/cancellation.py +0 -0
  252. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/chat/constants.py +0 -0
  253. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/chat/deprecated/service.py +0 -0
  254. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/chat/functions.py +0 -0
  255. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/chat/rendering.py +0 -0
  256. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/chat/responses_api.py +0 -0
  257. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/chat/schemas.py +0 -0
  258. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/chat/service.py +0 -0
  259. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/chat/state.py +0 -0
  260. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/chat/utils.py +0 -0
  261. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/content/__init__.py +0 -0
  262. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/content/constants.py +0 -0
  263. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/content/functions.py +0 -0
  264. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/content/schemas.py +0 -0
  265. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/content/service.py +0 -0
  266. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/content/smart_rules.py +0 -0
  267. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/content/utils.py +0 -0
  268. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/data_extraction/README.md +0 -0
  269. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/data_extraction/__init__.py +0 -0
  270. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/data_extraction/augmented/__init__.py +0 -0
  271. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/data_extraction/augmented/service.py +0 -0
  272. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/data_extraction/base.py +0 -0
  273. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/data_extraction/basic/__init__.py +0 -0
  274. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/data_extraction/basic/config.py +0 -0
  275. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/data_extraction/basic/prompt.py +0 -0
  276. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/data_extraction/basic/service.py +0 -0
  277. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/elicitation/__init__.py +0 -0
  278. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/elicitation/constants.py +0 -0
  279. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/elicitation/exceptions.py +0 -0
  280. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/elicitation/functions.py +0 -0
  281. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/elicitation/schemas.py +0 -0
  282. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/elicitation/service.py +0 -0
  283. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/embedding/__init__.py +0 -0
  284. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/embedding/constants.py +0 -0
  285. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/embedding/functions.py +0 -0
  286. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/embedding/schemas.py +0 -0
  287. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/embedding/service.py +0 -0
  288. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/embedding/utils.py +0 -0
  289. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/experimental/README.md +0 -0
  290. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/experimental/__init__.py +0 -0
  291. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/experimental/_internal/__init__.py +0 -0
  292. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/experimental/_internal/streaming/__init__.py +0 -0
  293. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/experimental/_internal/streaming/common.py +0 -0
  294. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/experimental/_internal/streaming/pattern_replacer.py +0 -0
  295. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/experimental/components/__init__.py +0 -0
  296. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/experimental/components/_base.py +0 -0
  297. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/experimental/components/content_tree/__init__.py +0 -0
  298. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/experimental/components/content_tree/functions.py +0 -0
  299. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/experimental/components/content_tree/schemas.py +0 -0
  300. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/experimental/components/content_tree/service.py +0 -0
  301. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/experimental/components/internal_search/__init__.py +0 -0
  302. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/experimental/components/internal_search/base/__init__.py +0 -0
  303. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/experimental/components/internal_search/base/config.py +0 -0
  304. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/experimental/components/internal_search/base/schemas.py +0 -0
  305. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/experimental/components/internal_search/base/service.py +0 -0
  306. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/experimental/components/internal_search/base/utils.py +0 -0
  307. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/experimental/components/internal_search/chat/__init__.py +0 -0
  308. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/experimental/components/internal_search/chat/config.py +0 -0
  309. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/experimental/components/internal_search/chat/schemas.py +0 -0
  310. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/experimental/components/internal_search/chat/service.py +0 -0
  311. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/experimental/components/internal_search/knowledge_base/__init__.py +0 -0
  312. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/experimental/components/internal_search/knowledge_base/config.py +0 -0
  313. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/experimental/components/internal_search/knowledge_base/schemas.py +0 -0
  314. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/experimental/components/internal_search/knowledge_base/service.py +0 -0
  315. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/experimental/components/internal_search/post_processing/__init__.py +0 -0
  316. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/experimental/components/internal_search/post_processing/config.py +0 -0
  317. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/experimental/components/internal_search/post_processing/service.py +0 -0
  318. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/experimental/content_tree/__init__.py +0 -0
  319. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/experimental/identity/__init__.py +0 -0
  320. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/experimental/integrations/__init__.py +0 -0
  321. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/experimental/integrations/openai/__init__.py +0 -0
  322. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/experimental/integrations/openai/streaming/__init__.py +0 -0
  323. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/__init__.py +0 -0
  324. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/_async_bridge.py +0 -0
  325. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/chat_completions/__init__.py +0 -0
  326. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/chat_completions/complete_with_references.py +0 -0
  327. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/chat_completions/stream_event_router.py +0 -0
  328. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/chat_completions/text_event_handler.py +0 -0
  329. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/chat_completions/tool_call_event_handler.py +0 -0
  330. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/events.py +0 -0
  331. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/protocols/__init__.py +0 -0
  332. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/protocols/chat_completions.py +0 -0
  333. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/protocols/responses.py +0 -0
  334. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/responses/__init__.py +0 -0
  335. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/responses/code_interpreter_event_handler.py +0 -0
  336. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/responses/complete_with_references.py +0 -0
  337. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/responses/completed_event_handler.py +0 -0
  338. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/responses/stream_event_router.py +0 -0
  339. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/responses/text_delta_event_handler.py +0 -0
  340. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/responses/tool_call_event_handler.py +0 -0
  341. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/subscribers/__init__.py +0 -0
  342. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/subscribers/message_persister.py +0 -0
  343. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/subscribers/progress_log_persister.py +0 -0
  344. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/experimental/resources/__init__.py +0 -0
  345. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/experimental/resources/content_folder/__init__.py +0 -0
  346. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/experimental/resources/content_folder/functions.py +0 -0
  347. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/experimental/resources/content_folder/schemas.py +0 -0
  348. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/experimental/resources/content_folder/service.py +0 -0
  349. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/experimental/resources/facades/__init__.py +0 -0
  350. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/experimental/resources/facades/identity/__init__.py +0 -0
  351. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/experimental/resources/facades/identity/service.py +0 -0
  352. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/experimental/resources/feature_flags/README.md +0 -0
  353. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/experimental/resources/feature_flags/__init__.py +0 -0
  354. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/experimental/resources/feature_flags/_graphql_client.py +0 -0
  355. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/experimental/resources/feature_flags/_ttl_cache.py +0 -0
  356. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/experimental/resources/feature_flags/client.py +0 -0
  357. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/experimental/resources/feature_flags/schemas.py +0 -0
  358. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/experimental/resources/feature_flags/settings.py +0 -0
  359. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/experimental/resources/group/__init__.py +0 -0
  360. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/experimental/resources/group/functions.py +0 -0
  361. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/experimental/resources/group/schemas.py +0 -0
  362. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/experimental/resources/group/service.py +0 -0
  363. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/experimental/resources/scheduled_task/__init__.py +0 -0
  364. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/experimental/resources/scheduled_task/cron.py +0 -0
  365. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/experimental/resources/scheduled_task/functions.py +0 -0
  366. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/experimental/resources/scheduled_task/schemas.py +0 -0
  367. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/experimental/resources/scheduled_task/service.py +0 -0
  368. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/experimental/resources/user/__init__.py +0 -0
  369. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/experimental/resources/user/functions.py +0 -0
  370. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/experimental/resources/user/schemas.py +0 -0
  371. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/experimental/resources/user/service.py +0 -0
  372. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/experimental/testing/__init__.py +0 -0
  373. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/framework_utilities/__init__.py +0 -0
  374. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/framework_utilities/langchain/__init__.py +0 -0
  375. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/framework_utilities/langchain/client.py +0 -0
  376. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/framework_utilities/langchain/history.py +0 -0
  377. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/framework_utilities/openai/__init__.py +0 -0
  378. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/framework_utilities/openai/client.py +0 -0
  379. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/framework_utilities/openai/message_builder.py +0 -0
  380. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/framework_utilities/utils.py +0 -0
  381. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/language_model/__init__.py +0 -0
  382. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/language_model/_responses_api_utils.py +0 -0
  383. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/language_model/builder.py +0 -0
  384. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/language_model/constants.py +0 -0
  385. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/language_model/default_language_model.py +0 -0
  386. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/language_model/functions.py +0 -0
  387. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/language_model/infos.py +0 -0
  388. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/language_model/prompt.py +0 -0
  389. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/language_model/reference.py +0 -0
  390. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/language_model/schemas.py +0 -0
  391. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/language_model/service.py +0 -0
  392. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/language_model/settings.py +0 -0
  393. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/language_model/stream_transform.py +0 -0
  394. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/language_model/utils.py +0 -0
  395. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/monitoring/__init__.py +0 -0
  396. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/monitoring/gunicorn.py +0 -0
  397. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/monitoring/middleware.py +0 -0
  398. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/monitoring/registry.py +0 -0
  399. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/protocols/support.py +0 -0
  400. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/services/__init__.py +0 -0
  401. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/services/chat_service.py +0 -0
  402. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/services/factory.py +0 -0
  403. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/services/knowledge_base.py +0 -0
  404. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/short_term_memory/__init__.py +0 -0
  405. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/short_term_memory/constants.py +0 -0
  406. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/short_term_memory/functions.py +0 -0
  407. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/short_term_memory/schemas.py +0 -0
  408. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/short_term_memory/service.py +0 -0
  409. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/smart_rules/__init__.py +0 -0
  410. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/unique_toolkit/smart_rules/compile.py +0 -0
  411. {unique_toolkit-2026.28.0.dev16 → unique_toolkit-2026.28.0.dev18}/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.28.0.dev16
3
+ Version: 2026.28.0.dev18
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.28.0.dev18,<2026.28.0rc0
19
+ Requires-Dist: unique-sdk>=2026.28.0.dev19,<2026.28.0rc0
20
20
  Requires-Dist: jambo>=0.1.2,<0.2
21
21
  Requires-Dist: jinja2>=3.1.6,<4
22
22
  Requires-Dist: docxtpl>=0.20.1,<0.21
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "unique_toolkit"
3
- version = "2026.28.0.dev16"
3
+ version = "2026.28.0.dev18"
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.28.0.dev18,<2026.28.0rc0",
31
+ "unique-sdk>=2026.28.0.dev19,<2026.28.0rc0",
32
32
  "jambo>=0.1.2,<0.2",
33
33
  "jinja2>=3.1.6,<4",
34
34
  "docxtpl>=0.20.1,<0.21",
@@ -5,6 +5,8 @@ from unique_toolkit.agentic.tools.a2a.tool import SubAgentTool, SubAgentToolConf
5
5
  from unique_toolkit.agentic.tools.config import ToolBuildConfig
6
6
  from unique_toolkit.agentic.tools.tool_progress_reporter import ToolProgressReporter
7
7
  from unique_toolkit.app.schemas import ChatEvent
8
+ from unique_toolkit.chat.service import ChatService
9
+ from unique_toolkit.language_model import LanguageModelService
8
10
 
9
11
 
10
12
  class A2AManager:
@@ -13,10 +15,15 @@ class A2AManager:
13
15
  logger: Logger,
14
16
  tool_progress_reporter: ToolProgressReporter,
15
17
  response_watcher: SubAgentResponseWatcher,
18
+ *,
19
+ chat_service: ChatService | None = None,
20
+ language_model_service: LanguageModelService | None = None,
16
21
  ):
17
22
  self._logger = logger
18
23
  self._tool_progress_reporter = tool_progress_reporter
19
24
  self._response_watcher = response_watcher
25
+ self._chat_service = chat_service
26
+ self._language_model_service = language_model_service
20
27
 
21
28
  def get_all_sub_agents(
22
29
  self,
@@ -45,16 +52,33 @@ class A2AManager:
45
52
  sub_agent_tool_config = tool_config.configuration
46
53
 
47
54
  try:
48
- sub_agents.append(
49
- SubAgentTool(
50
- configuration=sub_agent_tool_config,
51
- event=event,
52
- tool_progress_reporter=self._tool_progress_reporter,
53
- name=tool_config.name,
54
- display_name=tool_config.display_name,
55
- response_watcher=self._response_watcher,
55
+ if (
56
+ self._chat_service is not None
57
+ and self._language_model_service is not None
58
+ ):
59
+ sub_agents.append(
60
+ SubAgentTool(
61
+ configuration=sub_agent_tool_config,
62
+ event=event,
63
+ tool_progress_reporter=self._tool_progress_reporter,
64
+ name=tool_config.name,
65
+ display_name=tool_config.display_name,
66
+ response_watcher=self._response_watcher,
67
+ chat_service=self._chat_service,
68
+ language_model_service=self._language_model_service,
69
+ )
70
+ )
71
+ else:
72
+ sub_agents.append(
73
+ SubAgentTool(
74
+ configuration=sub_agent_tool_config,
75
+ event=event,
76
+ tool_progress_reporter=self._tool_progress_reporter,
77
+ name=tool_config.name,
78
+ display_name=tool_config.display_name,
79
+ response_watcher=self._response_watcher,
80
+ )
56
81
  )
57
- )
58
82
  except Exception:
59
83
  self._logger.warning(
60
84
  "Skipping sub-agent '%s' due to initialization failure.",
@@ -20,7 +20,6 @@ from unique_toolkit._common.referencing import (
20
20
  from unique_toolkit._common.utils.jinja.render import render_template
21
21
  from unique_toolkit.agentic.evaluation.schemas import EvaluationMetricName
22
22
  from unique_toolkit.agentic.feature_flags import feature_flags
23
- from unique_toolkit.agentic.message_log_manager.service import MessageStepLogger
24
23
  from unique_toolkit.agentic.tools.a2a.response_watcher import SubAgentResponseWatcher
25
24
  from unique_toolkit.agentic.tools.a2a.tool._memory import (
26
25
  get_sub_agent_short_term_memory_manager,
@@ -53,6 +52,7 @@ from unique_toolkit.chat.service import ChatService
53
52
  from unique_toolkit.content import ContentChunk, ContentReference
54
53
  from unique_toolkit.language_model import (
55
54
  LanguageModelFunction,
55
+ LanguageModelService,
56
56
  LanguageModelToolDescription,
57
57
  )
58
58
 
@@ -72,12 +72,20 @@ class SubAgentTool(Tool[SubAgentToolConfig]):
72
72
  name: str = "SubAgentTool",
73
73
  display_name: str = "SubAgentTool",
74
74
  response_watcher: SubAgentResponseWatcher | None = None,
75
+ *,
76
+ chat_service: ChatService | None = None,
77
+ language_model_service: LanguageModelService | None = None,
75
78
  ) -> None:
76
- super().__init__(configuration)
77
- self._event = event
78
- self._tool_progress_reporter = tool_progress_reporter
79
- self._chat_service = ChatService(event)
80
- self._message_step_logger = MessageStepLogger(chat_service=self._chat_service)
79
+ if chat_service is not None and language_model_service is not None:
80
+ super().__init__(
81
+ configuration,
82
+ event,
83
+ tool_progress_reporter=tool_progress_reporter,
84
+ chat_service=chat_service,
85
+ language_model_service=language_model_service,
86
+ )
87
+ else:
88
+ super().__init__(configuration, event, tool_progress_reporter)
81
89
  self._user_id = event.user_id
82
90
  self._company_id = event.company_id
83
91
 
@@ -13,12 +13,14 @@ from unique_toolkit.agentic.tools.schemas import ToolCallResponse
13
13
  from unique_toolkit.agentic.tools.tool import Tool
14
14
  from unique_toolkit.agentic.tools.tool_progress_reporter import ToolProgressReporter
15
15
  from unique_toolkit.app.schemas import ChatEvent
16
+ from unique_toolkit.chat.service import ChatService
16
17
  from unique_toolkit.elicitation import (
17
18
  ElicitationCancelledException,
18
19
  ElicitationDeclinedException,
19
20
  ElicitationExpiredException,
20
21
  ElicitationMode,
21
22
  )
23
+ from unique_toolkit.language_model import LanguageModelService
22
24
  from unique_toolkit.language_model.schemas import (
23
25
  LanguageModelFunction,
24
26
  LanguageModelToolDescription,
@@ -44,10 +46,24 @@ class AskUserTool(Tool[AskUserToolConfig]):
44
46
  config: AskUserToolConfig,
45
47
  event: ChatEvent,
46
48
  tool_progress_reporter: ToolProgressReporter | None = None,
49
+ *,
50
+ chat_service: ChatService | None = None,
51
+ language_model_service: LanguageModelService | None = None,
47
52
  ) -> None:
48
- super().__init__(
49
- config=config, event=event, tool_progress_reporter=tool_progress_reporter
50
- )
53
+ if chat_service is not None and language_model_service is not None:
54
+ super().__init__(
55
+ config=config,
56
+ event=event,
57
+ tool_progress_reporter=tool_progress_reporter,
58
+ chat_service=chat_service,
59
+ language_model_service=language_model_service,
60
+ )
61
+ else:
62
+ super().__init__(
63
+ config=config,
64
+ event=event,
65
+ tool_progress_reporter=tool_progress_reporter,
66
+ )
51
67
  self._lock = asyncio.Lock()
52
68
 
53
69
  @override
@@ -20,7 +20,11 @@ from unique_toolkit.agentic.tools.tool import Tool
20
20
  from unique_toolkit.agentic.tools.tool_progress_reporter import ToolProgressReporter
21
21
  from unique_toolkit.app.schemas import ChatEvent
22
22
  from unique_toolkit.chat.schemas import MessageLog, MessageLogStatus
23
- from unique_toolkit.language_model import LanguageModelToolDescription
23
+ from unique_toolkit.chat.service import ChatService
24
+ from unique_toolkit.language_model import (
25
+ LanguageModelService,
26
+ LanguageModelToolDescription,
27
+ )
24
28
  from unique_toolkit.language_model.schemas import LanguageModelFunction
25
29
  from unique_toolkit.short_term_memory.service import ShortTermMemoryService
26
30
 
@@ -45,8 +49,20 @@ class TodoWriteTool(Tool[TodoConfig]):
45
49
  config: TodoConfig,
46
50
  event: ChatEvent,
47
51
  tool_progress_reporter: ToolProgressReporter | None = None,
52
+ *,
53
+ chat_service: ChatService | None = None,
54
+ language_model_service: LanguageModelService | None = None,
48
55
  ) -> None:
49
- super().__init__(config, event, tool_progress_reporter)
56
+ if chat_service is not None and language_model_service is not None:
57
+ super().__init__(
58
+ config,
59
+ event,
60
+ tool_progress_reporter,
61
+ chat_service=chat_service,
62
+ language_model_service=language_model_service,
63
+ )
64
+ else:
65
+ super().__init__(config, event, tool_progress_reporter)
50
66
  stm_service = ShortTermMemoryService(
51
67
  company_id=event.company_id,
52
68
  user_id=event.user_id,
@@ -11,6 +11,8 @@ from unique_toolkit.agentic.tools.schemas import BaseToolConfig
11
11
  from unique_toolkit.agentic.tools.tool import Tool
12
12
  from unique_toolkit.agentic.tools.tool_progress_reporter import ToolProgressReporter
13
13
  from unique_toolkit.app.schemas import ChatEvent, McpServer
14
+ from unique_toolkit.chat.service import ChatService
15
+ from unique_toolkit.language_model import LanguageModelService
14
16
 
15
17
 
16
18
  class MCPManager:
@@ -19,10 +21,15 @@ class MCPManager:
19
21
  mcp_servers: list[McpServer],
20
22
  event: ChatEvent,
21
23
  tool_progress_reporter: ToolProgressReporter,
22
- ):
24
+ *,
25
+ chat_service: ChatService | None = None,
26
+ language_model_service: LanguageModelService | None = None,
27
+ ) -> None:
23
28
  self._mcp_servers = mcp_servers
24
29
  self._event = event
25
30
  self._tool_progress_reporter = tool_progress_reporter
31
+ self._chat_service = chat_service
32
+ self._language_model_service = language_model_service
26
33
 
27
34
  def get_mcp_servers(self):
28
35
  return self._mcp_servers
@@ -47,13 +54,27 @@ class MCPManager:
47
54
  server_user_prompt=server.user_prompt,
48
55
  mcp_source_id=server.id,
49
56
  )
50
- wrapper = MCPToolWrapper(
51
- mcp_server=server,
52
- mcp_tool=tool,
53
- config=config,
54
- event=self._event,
55
- tool_progress_reporter=self._tool_progress_reporter,
56
- )
57
+ if (
58
+ self._chat_service is not None
59
+ and self._language_model_service is not None
60
+ ):
61
+ wrapper = MCPToolWrapper(
62
+ mcp_server=server,
63
+ mcp_tool=tool,
64
+ config=config,
65
+ event=self._event,
66
+ tool_progress_reporter=self._tool_progress_reporter,
67
+ chat_service=self._chat_service,
68
+ language_model_service=self._language_model_service,
69
+ )
70
+ else:
71
+ wrapper = MCPToolWrapper(
72
+ mcp_server=server,
73
+ mcp_tool=tool,
74
+ config=config,
75
+ event=self._event,
76
+ tool_progress_reporter=self._tool_progress_reporter,
77
+ )
57
78
  wrapper.settings = ToolBuildConfig( # TODO: this must be refactored to behave like the other tools.
58
79
  name=tool.name,
59
80
  configuration=config,
@@ -10,7 +10,6 @@ import unique_sdk
10
10
 
11
11
  from unique_toolkit.agentic.evaluation.schemas import EvaluationMetricName
12
12
  from unique_toolkit.agentic.feature_flags import feature_flags
13
- from unique_toolkit.agentic.message_log_manager.service import MessageStepLogger
14
13
  from unique_toolkit.agentic.tools.mcp.models import MCPToolConfig
15
14
  from unique_toolkit.agentic.tools.schemas import ToolCallResponse
16
15
  from unique_toolkit.agentic.tools.tool import Tool
@@ -22,6 +21,7 @@ from unique_toolkit.app.schemas import ChatEvent, McpServer, McpTool
22
21
  from unique_toolkit.chat.schemas import MessageLog, MessageLogStatus
23
22
  from unique_toolkit.chat.service import ChatService
24
23
  from unique_toolkit.content.functions import upload_content_from_bytes
24
+ from unique_toolkit.language_model import LanguageModelService
25
25
  from unique_toolkit.language_model.schemas import (
26
26
  LanguageModelFunction,
27
27
  LanguageModelToolDescription,
@@ -40,13 +40,21 @@ class MCPToolWrapper(Tool[MCPToolConfig]):
40
40
  config: MCPToolConfig,
41
41
  event: ChatEvent,
42
42
  tool_progress_reporter: ToolProgressReporter | None = None,
43
+ *,
44
+ chat_service: ChatService | None = None,
45
+ language_model_service: LanguageModelService | None = None,
43
46
  ) -> None:
44
47
  self.name = mcp_tool.name
45
- super().__init__(config)
46
- self._event = event
47
- self._tool_progress_reporter = tool_progress_reporter
48
- self._chat_service = ChatService(event)
49
- self._message_step_logger = MessageStepLogger(chat_service=self._chat_service)
48
+ if chat_service is not None and language_model_service is not None:
49
+ super().__init__(
50
+ config,
51
+ event,
52
+ tool_progress_reporter=tool_progress_reporter,
53
+ chat_service=chat_service,
54
+ language_model_service=language_model_service,
55
+ )
56
+ else:
57
+ super().__init__(config, event, tool_progress_reporter)
50
58
  self._mcp_tool = mcp_tool
51
59
  self._mcp_server = mcp_server
52
60
 
@@ -384,7 +392,7 @@ class MCPToolWrapper(Tool[MCPToolConfig]):
384
392
  user_id=self._event.user_id,
385
393
  company_id=self._event.company_id,
386
394
  name=self.name,
387
- messageId=self._event.payload.assistant_message.id,
395
+ messageId=self._chat_service.assistant_message_id,
388
396
  chatId=self._event.payload.chat_id,
389
397
  arguments=arguments,
390
398
  )
@@ -180,6 +180,17 @@ class Tool(ABC, Generic[ConfigType]):
180
180
  tool_progress_reporter: ToolProgressReporter | None = ...,
181
181
  ) -> None: ...
182
182
 
183
+ @overload
184
+ def __init__(
185
+ self,
186
+ config: ConfigType,
187
+ event: ChatEvent,
188
+ tool_progress_reporter: ToolProgressReporter | None = ...,
189
+ *,
190
+ chat_service: ChatService,
191
+ language_model_service: LanguageModelService,
192
+ ) -> None: ...
193
+
183
194
  @overload
184
195
  def __init__(
185
196
  self,
@@ -230,6 +241,8 @@ class Tool(ABC, Generic[ConfigType]):
230
241
  MessageStepLogger,
231
242
  )
232
243
 
244
+ if event is not None:
245
+ self._event = event
233
246
  self._tool_progress_reporter = tool_progress_reporter
234
247
  self._chat_service = chat_service
235
248
  self._language_model_service = language_model_service
@@ -37,6 +37,8 @@ from unique_toolkit.agentic.tools.schemas import ToolCallResponse, ToolPrompts
37
37
  from unique_toolkit.agentic.tools.tool import Tool
38
38
  from unique_toolkit.agentic.tools.tool_progress_reporter import ToolProgressReporter
39
39
  from unique_toolkit.app.schemas import ChatEvent
40
+ from unique_toolkit.chat.service import ChatService
41
+ from unique_toolkit.language_model import LanguageModelService
40
42
  from unique_toolkit.language_model.schemas import (
41
43
  LanguageModelFunction,
42
44
  LanguageModelToolDescription,
@@ -90,6 +92,8 @@ class _ToolManager(Generic[_ApiMode]):
90
92
  a2a_manager: A2AManager,
91
93
  api_mode: _ApiMode,
92
94
  builtin_tool_manager: OpenAIBuiltInToolManager | None = None,
95
+ chat_service: ChatService | None = None,
96
+ language_model_service: LanguageModelService | None = None,
93
97
  ) -> None:
94
98
  self._setup(
95
99
  logger=logger,
@@ -100,6 +104,8 @@ class _ToolManager(Generic[_ApiMode]):
100
104
  a2a_manager=a2a_manager,
101
105
  api_mode=api_mode,
102
106
  builtin_tool_manager=builtin_tool_manager,
107
+ chat_service=chat_service,
108
+ language_model_service=language_model_service,
103
109
  )
104
110
 
105
111
  @classmethod
@@ -114,6 +120,8 @@ class _ToolManager(Generic[_ApiMode]):
114
120
  a2a_manager: A2AManager,
115
121
  api_mode: _ApiMode,
116
122
  builtin_tool_manager: OpenAIBuiltInToolManager | None = None,
123
+ chat_service: ChatService | None = None,
124
+ language_model_service: LanguageModelService | None = None,
117
125
  ) -> Self:
118
126
  instance = cls.__new__(cls)
119
127
  instance._setup(
@@ -125,6 +133,8 @@ class _ToolManager(Generic[_ApiMode]):
125
133
  a2a_manager=a2a_manager,
126
134
  api_mode=api_mode,
127
135
  builtin_tool_manager=builtin_tool_manager,
136
+ chat_service=chat_service,
137
+ language_model_service=language_model_service,
128
138
  )
129
139
  return instance
130
140
 
@@ -139,10 +149,14 @@ class _ToolManager(Generic[_ApiMode]):
139
149
  a2a_manager: A2AManager,
140
150
  api_mode: _ApiMode,
141
151
  builtin_tool_manager: OpenAIBuiltInToolManager | None,
152
+ chat_service: ChatService | None = None,
153
+ language_model_service: LanguageModelService | None = None,
142
154
  ) -> None:
143
155
  self._logger = logger
144
156
  self._config = config
145
157
  self._tool_progress_reporter = tool_progress_reporter
158
+ self._chat_service = chat_service
159
+ self._language_model_service = language_model_service
146
160
  self._tools: list[Tool[Any] | OpenAIBuiltInTool[Any]] = []
147
161
  self._tool_choices = run_context.tool_choices
148
162
  self._disabled_tools = run_context.disabled_tools
@@ -218,14 +232,29 @@ class _ToolManager(Generic[_ApiMode]):
218
232
  t.name,
219
233
  )
220
234
  continue
221
- result = safe_executor.execute(
222
- ToolFactory.build_tool_with_settings,
223
- t.name,
224
- t,
225
- t.configuration,
226
- tool_init_event,
227
- tool_progress_reporter=self._tool_progress_reporter,
228
- )
235
+ if (
236
+ self._chat_service is not None
237
+ and self._language_model_service is not None
238
+ ):
239
+ result = safe_executor.execute(
240
+ ToolFactory.build_tool_with_settings,
241
+ t.name,
242
+ t,
243
+ t.configuration,
244
+ tool_init_event,
245
+ tool_progress_reporter=self._tool_progress_reporter,
246
+ chat_service=self._chat_service,
247
+ language_model_service=self._language_model_service,
248
+ )
249
+ else:
250
+ result = safe_executor.execute(
251
+ ToolFactory.build_tool_with_settings,
252
+ t.name,
253
+ t,
254
+ t.configuration,
255
+ tool_init_event,
256
+ tool_progress_reporter=self._tool_progress_reporter,
257
+ )
229
258
  if result.success:
230
259
  self._internal_tools.append(result.unpack())
231
260
  else:
@@ -684,6 +713,8 @@ class ToolManager(_ToolManager[Literal["completions"]]):
684
713
  tool_progress_reporter: ToolProgressReporter,
685
714
  mcp_manager: MCPManager,
686
715
  a2a_manager: A2AManager,
716
+ chat_service: ChatService | None = None,
717
+ language_model_service: LanguageModelService | None = None,
687
718
  ) -> None:
688
719
  super().__init__(
689
720
  logger=logger,
@@ -694,6 +725,8 @@ class ToolManager(_ToolManager[Literal["completions"]]):
694
725
  a2a_manager=a2a_manager,
695
726
  api_mode="completions",
696
727
  builtin_tool_manager=None,
728
+ chat_service=chat_service,
729
+ language_model_service=language_model_service,
697
730
  )
698
731
 
699
732
  @classmethod
@@ -708,6 +741,8 @@ class ToolManager(_ToolManager[Literal["completions"]]):
708
741
  a2a_manager: A2AManager,
709
742
  api_mode: Literal["completions"] = "completions",
710
743
  builtin_tool_manager: OpenAIBuiltInToolManager | None = None,
744
+ chat_service: ChatService | None = None,
745
+ language_model_service: LanguageModelService | None = None,
711
746
  ) -> Self:
712
747
  return super().from_run_context(
713
748
  logger=logger,
@@ -718,6 +753,8 @@ class ToolManager(_ToolManager[Literal["completions"]]):
718
753
  a2a_manager=a2a_manager,
719
754
  api_mode=api_mode,
720
755
  builtin_tool_manager=builtin_tool_manager,
756
+ chat_service=chat_service,
757
+ language_model_service=language_model_service,
721
758
  )
722
759
 
723
760
 
@@ -731,6 +768,8 @@ class ResponsesApiToolManager(_ToolManager[Literal["responses"]]):
731
768
  mcp_manager: MCPManager,
732
769
  a2a_manager: A2AManager,
733
770
  builtin_tool_manager: OpenAIBuiltInToolManager,
771
+ chat_service: ChatService | None = None,
772
+ language_model_service: LanguageModelService | None = None,
734
773
  ) -> None:
735
774
  self._builtin_tool_manager = builtin_tool_manager
736
775
  super().__init__(
@@ -742,6 +781,8 @@ class ResponsesApiToolManager(_ToolManager[Literal["responses"]]):
742
781
  a2a_manager=a2a_manager,
743
782
  api_mode="responses",
744
783
  builtin_tool_manager=builtin_tool_manager,
784
+ chat_service=chat_service,
785
+ language_model_service=language_model_service,
745
786
  )
746
787
 
747
788
  @classmethod
@@ -756,6 +797,8 @@ class ResponsesApiToolManager(_ToolManager[Literal["responses"]]):
756
797
  a2a_manager: A2AManager,
757
798
  api_mode: Literal["responses"] = "responses",
758
799
  builtin_tool_manager: OpenAIBuiltInToolManager | None = None,
800
+ chat_service: ChatService | None = None,
801
+ language_model_service: LanguageModelService | None = None,
759
802
  ) -> Self:
760
803
  if builtin_tool_manager is None:
761
804
  msg = "builtin_tool_manager is required for ResponsesApiToolManager"
@@ -769,6 +812,8 @@ class ResponsesApiToolManager(_ToolManager[Literal["responses"]]):
769
812
  a2a_manager=a2a_manager,
770
813
  api_mode=api_mode,
771
814
  builtin_tool_manager=builtin_tool_manager,
815
+ chat_service=chat_service,
816
+ language_model_service=language_model_service,
772
817
  )
773
818
 
774
819
  def get_required_include_params(self) -> list[ResponseIncludable]:
@@ -17,6 +17,7 @@ from pydantic import (
17
17
  )
18
18
  from pydantic_settings import BaseSettings, SettingsConfigDict
19
19
  from typing_extensions import Protocol, deprecated
20
+ from unique_sdk.api_resources._llm_models import LLMModels
20
21
 
21
22
  from unique_toolkit._common.config_checker import register_config
22
23
  from unique_toolkit.app.chat_event_filter_options_settings import (
@@ -321,6 +322,14 @@ class ApiType(StrEnum):
321
322
  LEGACY = "legacy"
322
323
 
323
324
 
325
+ class UniqueApiConnectionError(Exception):
326
+ """Raised when the API connection check fails."""
327
+
328
+ def __init__(self, base_url: str, message: str) -> None:
329
+ self.base_url = base_url
330
+ super().__init__(f"{message} (base URL: {base_url})")
331
+
332
+
324
333
  @register_config()
325
334
  class UniqueApi(BaseSettings):
326
335
  base_url: str = Field(
@@ -337,6 +346,8 @@ class UniqueApi(BaseSettings):
337
346
 
338
347
  api_type: ApiType = Field(default=ApiType.LEGACY)
339
348
 
349
+ _probe_check_failed: bool = PrivateAttr(default=False)
350
+
340
351
  version: str = Field(
341
352
  default="2023-12-06",
342
353
  validation_alias=AliasChoices(
@@ -403,6 +414,8 @@ class UniqueApi(BaseSettings):
403
414
  return parsed, base_path
404
415
 
405
416
  def sdk_url(self) -> str:
417
+ if self._probe_check_failed:
418
+ return self.base_url
406
419
  parsed, base_path = self.base_path()
407
420
  return urlunparse(parsed._replace(path=base_path, query=None, fragment=None))
408
421
 
@@ -411,6 +424,15 @@ class UniqueApi(BaseSettings):
411
424
  path = base_path + "/openai-proxy"
412
425
  return urlunparse(parsed._replace(path=path, query=None, fragment=None))
413
426
 
427
+ async def check_connection(self, user_id: str, company_id: str) -> bool:
428
+ try:
429
+ model_list = await LLMModels.get_models_async(user_id, company_id)
430
+ self._probe_check_failed = False
431
+ return len(model_list["models"]) > 0
432
+ except Exception as exc:
433
+ self._probe_check_failed = True
434
+ raise UniqueApiConnectionError(self.base_url, str(exc)) from exc
435
+
414
436
 
415
437
  # EventFilterOptions
416
438
  # Settings only as only obtained from the environment.
@@ -612,7 +634,6 @@ class UniqueSettings:
612
634
  logger.warning(
613
635
  f"Environment file '{filename}' not found. Falling back to environment variables only."
614
636
  )
615
- # Fall back to environment variables only
616
637
  return cls.from_env()
617
638
 
618
639
  def init_sdk(self) -> None:
@@ -643,6 +664,29 @@ class UniqueSettings:
643
664
  settings.init_sdk()
644
665
  return settings
645
666
 
667
+ async def check_connection(self) -> bool:
668
+ """Verify the API is reachable by listing available models via the SDK.
669
+
670
+ Returns:
671
+ True if the API is reachable and at least one model is available.
672
+ False if the API is reachable but no models are configured.
673
+
674
+ Raises:
675
+ UniqueApiConnectionError: If the SDK call fails due to a network or auth error.
676
+ """
677
+ # Reset before init_sdk so each retry always probes the canonical computed
678
+ # sdk_url(), not a stale base_url left over from a previous failure.
679
+ self.api._probe_check_failed = False
680
+ self.init_sdk()
681
+ try:
682
+ return await self.api.check_connection(
683
+ self.authcontext.get_confidential_user_id(),
684
+ self.authcontext.get_confidential_company_id(),
685
+ )
686
+ finally:
687
+ # Re-sync api_base with sdk_url() which may have just fallen back.
688
+ self.init_sdk()
689
+
646
690
  @classmethod
647
691
  def from_chat_event(cls, event: ChatEvent) -> UniqueSettings:
648
692
  """Build a :class:`UniqueSettings` from a :class:`ChatEvent`.