unique-toolkit 2026.28.0.dev1__tar.gz → 2026.28.0.dev2__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.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/PKG-INFO +2 -2
  2. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/pyproject.toml +2 -2
  3. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/agentic/tools/experimental/__init__.py +6 -0
  4. unique_toolkit-2026.28.0.dev2/unique_toolkit/agentic/tools/experimental/ask_user_tool/__init__.py +14 -0
  5. unique_toolkit-2026.28.0.dev2/unique_toolkit/agentic/tools/experimental/ask_user_tool/config.py +138 -0
  6. unique_toolkit-2026.28.0.dev2/unique_toolkit/agentic/tools/experimental/ask_user_tool/tool.py +149 -0
  7. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/elicitation/service.py +46 -0
  8. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/README.md +0 -0
  9. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/__init__.py +0 -0
  10. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/_common/__init__.py +0 -0
  11. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/_common/_base_service.py +0 -0
  12. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/_common/_time_utils.py +0 -0
  13. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/_common/api_calling/human_verification_manager.py +0 -0
  14. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/_common/base_model_type_attribute.py +0 -0
  15. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/_common/chunk_relevancy_sorter/config.py +0 -0
  16. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/_common/chunk_relevancy_sorter/exception.py +0 -0
  17. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/_common/chunk_relevancy_sorter/schemas.py +0 -0
  18. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/_common/chunk_relevancy_sorter/service.py +0 -0
  19. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/_common/chunk_relevancy_sorter/tests/test_service.py +0 -0
  20. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/_common/config_checker/README.md +0 -0
  21. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/_common/config_checker/__init__.py +0 -0
  22. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/_common/config_checker/__main__.py +0 -0
  23. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/_common/config_checker/cli.py +0 -0
  24. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/_common/config_checker/differ.py +0 -0
  25. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/_common/config_checker/exporter.py +0 -0
  26. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/_common/config_checker/models.py +0 -0
  27. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/_common/config_checker/registry.py +0 -0
  28. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/_common/config_checker/validator.py +0 -0
  29. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/_common/default_language_model.py +0 -0
  30. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/_common/docx_generator/__init__.py +0 -0
  31. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/_common/docx_generator/config.py +0 -0
  32. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/_common/docx_generator/pandoc_converter.py +0 -0
  33. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/_common/docx_generator/schemas.py +0 -0
  34. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/_common/docx_generator/service.py +0 -0
  35. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/_common/docx_generator/template/Doc Template.docx +0 -0
  36. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/_common/endpoint_builder.py +0 -0
  37. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/_common/endpoint_requestor.py +0 -0
  38. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/_common/event_bus.py +0 -0
  39. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/_common/exception.py +0 -0
  40. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/_common/execution.py +0 -0
  41. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/_common/experimental/endpoint_builder.py +0 -0
  42. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/_common/experimental/endpoint_requestor.py +0 -0
  43. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/_common/experimental/write_up_agent/README.md +0 -0
  44. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/_common/experimental/write_up_agent/__init__.py +0 -0
  45. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/_common/experimental/write_up_agent/agent.py +0 -0
  46. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/_common/experimental/write_up_agent/config.py +0 -0
  47. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/_common/experimental/write_up_agent/examples/data.csv +0 -0
  48. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/_common/experimental/write_up_agent/examples/example_usage.py +0 -0
  49. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/_common/experimental/write_up_agent/schemas.py +0 -0
  50. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/_common/experimental/write_up_agent/services/__init__.py +0 -0
  51. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/_common/experimental/write_up_agent/services/dataframe_handler/__init__.py +0 -0
  52. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/_common/experimental/write_up_agent/services/dataframe_handler/exceptions.py +0 -0
  53. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/_common/experimental/write_up_agent/services/dataframe_handler/service.py +0 -0
  54. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/_common/experimental/write_up_agent/services/dataframe_handler/utils.py +0 -0
  55. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/__init__.py +0 -0
  56. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/config.py +0 -0
  57. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/exceptions.py +0 -0
  58. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/prompts/config.py +0 -0
  59. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/prompts/system_prompt.j2 +0 -0
  60. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/prompts/user_prompt.j2 +0 -0
  61. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/service.py +0 -0
  62. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/_common/experimental/write_up_agent/services/template_handler/__init__.py +0 -0
  63. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/_common/experimental/write_up_agent/services/template_handler/default_template.j2 +0 -0
  64. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/_common/experimental/write_up_agent/services/template_handler/exceptions.py +0 -0
  65. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/_common/experimental/write_up_agent/services/template_handler/service.py +0 -0
  66. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/_common/experimental/write_up_agent/services/template_handler/utils.py +0 -0
  67. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/_common/experimental/write_up_agent/utils.py +0 -0
  68. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/_common/feature_flags/schema.py +0 -0
  69. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/_common/metadata_filter_scope.py +0 -0
  70. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/_common/pydantic/rjsf_tags.py +0 -0
  71. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/_common/pydantic_helpers.py +0 -0
  72. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/_common/referencing.py +0 -0
  73. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/_common/string_utilities.py +0 -0
  74. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/_common/tests/test_referencing.py +0 -0
  75. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/_common/tests/test_string_utilities.py +0 -0
  76. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/_common/token/__init__.py +0 -0
  77. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/_common/token/image_token_counting.py +0 -0
  78. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/_common/token/token_counting.py +0 -0
  79. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/_common/token/tokenizers/deepseek/tokenizer.json +0 -0
  80. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/_common/token/tokenizers/qwen/tokenizer.json +0 -0
  81. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/_common/utils/__init__.py +0 -0
  82. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/_common/utils/files.py +0 -0
  83. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/_common/utils/image/encode.py +0 -0
  84. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/_common/utils/jinja/helpers.py +0 -0
  85. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/_common/utils/jinja/render.py +0 -0
  86. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/_common/utils/jinja/schema.py +0 -0
  87. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/_common/utils/jinja/utils.py +0 -0
  88. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/_common/utils/structured_output/__init__.py +0 -0
  89. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/_common/utils/structured_output/schema.py +0 -0
  90. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/_common/utils/write_configuration.py +0 -0
  91. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/_common/validate_required_values.py +0 -0
  92. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/_common/validators.py +0 -0
  93. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/agentic/__init__.py +0 -0
  94. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/agentic/debug_info_manager/debug_info_manager.py +0 -0
  95. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/agentic/debug_info_manager/test/test_debug_info_manager.py +0 -0
  96. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/agentic/evaluation/config.py +0 -0
  97. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/agentic/evaluation/context_relevancy/prompts/__init__.py +0 -0
  98. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/agentic/evaluation/context_relevancy/prompts/system_prompt.j2 +0 -0
  99. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/agentic/evaluation/context_relevancy/prompts/user_prompt.j2 +0 -0
  100. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/agentic/evaluation/context_relevancy/schema.py +0 -0
  101. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/agentic/evaluation/context_relevancy/service.py +0 -0
  102. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/agentic/evaluation/evaluation_manager.py +0 -0
  103. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/agentic/evaluation/exception.py +0 -0
  104. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/agentic/evaluation/hallucination/constants.py +0 -0
  105. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/agentic/evaluation/hallucination/hallucination_evaluation.py +0 -0
  106. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/agentic/evaluation/hallucination/prompts/__init__.py +0 -0
  107. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/agentic/evaluation/hallucination/prompts/system_prompt.j2 +0 -0
  108. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/agentic/evaluation/hallucination/prompts/user_prompt.j2 +0 -0
  109. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/agentic/evaluation/hallucination/service.py +0 -0
  110. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/agentic/evaluation/hallucination/utils.py +0 -0
  111. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/agentic/evaluation/output_parser.py +0 -0
  112. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/agentic/evaluation/schemas.py +0 -0
  113. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/agentic/evaluation/tests/fixtures.py +0 -0
  114. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/agentic/evaluation/tests/test_config.py +0 -0
  115. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/agentic/evaluation/tests/test_context_relevancy_service.py +0 -0
  116. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/agentic/evaluation/tests/test_hallucination_constants.py +0 -0
  117. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/agentic/evaluation/tests/test_hallucination_utils.py +0 -0
  118. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/agentic/evaluation/tests/test_output_parser.py +0 -0
  119. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/agentic/evaluation/tests/test_prompt_loaders.py +0 -0
  120. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/agentic/evaluation/utils.py +0 -0
  121. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/agentic/feature_flags/__init__.py +0 -0
  122. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/agentic/feature_flags/feature_flags.py +0 -0
  123. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/agentic/history_manager/history_construction_with_contents.py +0 -0
  124. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/agentic/history_manager/history_manager.py +0 -0
  125. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/agentic/history_manager/loop_token_reducer.py +0 -0
  126. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/agentic/history_manager/settings.py +0 -0
  127. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/agentic/history_manager/utils.py +0 -0
  128. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/agentic/loop_runner/__init__.py +0 -0
  129. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/agentic/loop_runner/_iteration_handler_utils.py +0 -0
  130. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/agentic/loop_runner/_responses_iteration_handler_utils.py +0 -0
  131. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/agentic/loop_runner/_responses_stream_handler_utils.py +0 -0
  132. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/agentic/loop_runner/_stream_handler_utils.py +0 -0
  133. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/agentic/loop_runner/base.py +0 -0
  134. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/agentic/loop_runner/middleware/__init__.py +0 -0
  135. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/agentic/loop_runner/middleware/planning/__init__.py +0 -0
  136. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/agentic/loop_runner/middleware/planning/planning.py +0 -0
  137. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/agentic/loop_runner/middleware/planning/schema.py +0 -0
  138. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/agentic/loop_runner/runners/__init__.py +0 -0
  139. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/agentic/loop_runner/runners/basic.py +0 -0
  140. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/agentic/loop_runner/runners/mistral/__init__.py +0 -0
  141. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/agentic/loop_runner/runners/mistral/mistral_runner.py +0 -0
  142. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/agentic/loop_runner/runners/qwen/__init__.py +0 -0
  143. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/agentic/loop_runner/runners/qwen/helpers.py +0 -0
  144. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/agentic/loop_runner/runners/qwen/qwen_runner.py +0 -0
  145. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/agentic/message_log_manager/__init__.py +0 -0
  146. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/agentic/message_log_manager/service.py +0 -0
  147. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/agentic/message_log_order.py +0 -0
  148. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/agentic/postprocessor/postprocessor_manager.py +0 -0
  149. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/agentic/reference_manager/reference_manager.py +0 -0
  150. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/agentic/responses_api/__init__.py +0 -0
  151. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/agentic/responses_api/postprocessors/code_display.py +0 -0
  152. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/agentic/responses_api/postprocessors/generated_files.py +0 -0
  153. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/agentic/responses_api/stream_handler.py +0 -0
  154. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/agentic/short_term_memory_manager/persistent_short_term_memory_manager.py +0 -0
  155. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/agentic/thinking_manager/thinking_manager.py +0 -0
  156. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/agentic/tools/__init__.py +0 -0
  157. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/agentic/tools/a2a/__init__.py +0 -0
  158. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/agentic/tools/a2a/config.py +0 -0
  159. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/agentic/tools/a2a/evaluation/__init__.py +0 -0
  160. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/agentic/tools/a2a/evaluation/_utils.py +0 -0
  161. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/agentic/tools/a2a/evaluation/config.py +0 -0
  162. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/agentic/tools/a2a/evaluation/evaluator.py +0 -0
  163. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/agentic/tools/a2a/evaluation/summarization_user_message.j2 +0 -0
  164. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/agentic/tools/a2a/manager.py +0 -0
  165. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/agentic/tools/a2a/postprocessing/__init__.py +0 -0
  166. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/agentic/tools/a2a/postprocessing/_display_utils.py +0 -0
  167. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/agentic/tools/a2a/postprocessing/_ref_utils.py +0 -0
  168. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/agentic/tools/a2a/postprocessing/config.py +0 -0
  169. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/agentic/tools/a2a/postprocessing/display.py +0 -0
  170. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/agentic/tools/a2a/postprocessing/references.py +0 -0
  171. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/agentic/tools/a2a/postprocessing/test/test_display.py +0 -0
  172. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/agentic/tools/a2a/postprocessing/test/test_display_utils.py +0 -0
  173. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/agentic/tools/a2a/postprocessing/test/test_ref_utils.py +0 -0
  174. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/agentic/tools/a2a/postprocessing/test/test_references.py +0 -0
  175. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/agentic/tools/a2a/prompts.py +0 -0
  176. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/agentic/tools/a2a/response_watcher/__init__.py +0 -0
  177. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/agentic/tools/a2a/response_watcher/service.py +0 -0
  178. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/agentic/tools/a2a/tool/__init__.py +0 -0
  179. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/agentic/tools/a2a/tool/_memory.py +0 -0
  180. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/agentic/tools/a2a/tool/_schema.py +0 -0
  181. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/agentic/tools/a2a/tool/config.py +0 -0
  182. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/agentic/tools/a2a/tool/service.py +0 -0
  183. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/agentic/tools/a2a/tool/test/test_service_utils.py +0 -0
  184. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/agentic/tools/agent_chunks_hanlder.py +0 -0
  185. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/agentic/tools/config.py +0 -0
  186. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/agentic/tools/experimental/open_file_tool/__init__.py +0 -0
  187. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/agentic/tools/experimental/open_file_tool/config.py +0 -0
  188. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/agentic/tools/experimental/open_file_tool/runtime.py +0 -0
  189. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/agentic/tools/experimental/open_file_tool/tool.py +0 -0
  190. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/agentic/tools/experimental/retrieve_search_scope_tool/__init__.py +0 -0
  191. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/agentic/tools/experimental/retrieve_search_scope_tool/config.py +0 -0
  192. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/agentic/tools/experimental/retrieve_search_scope_tool/tool.py +0 -0
  193. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/agentic/tools/experimental/todo/__init__.py +0 -0
  194. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/agentic/tools/experimental/todo/config.py +0 -0
  195. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/agentic/tools/experimental/todo/prompts/__init__.py +0 -0
  196. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/agentic/tools/experimental/todo/prompts/execution_reminder.j2 +0 -0
  197. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/agentic/tools/experimental/todo/prompts/system_prompt.j2 +0 -0
  198. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/agentic/tools/experimental/todo/prompts/tool_description.j2 +0 -0
  199. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/agentic/tools/experimental/todo/prompts/verification_nudge.j2 +0 -0
  200. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/agentic/tools/experimental/todo/schemas.py +0 -0
  201. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/agentic/tools/experimental/todo/service.py +0 -0
  202. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/agentic/tools/factory.py +0 -0
  203. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/agentic/tools/mcp/__init__.py +0 -0
  204. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/agentic/tools/mcp/manager.py +0 -0
  205. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/agentic/tools/mcp/models.py +0 -0
  206. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/agentic/tools/mcp/tool_wrapper.py +0 -0
  207. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/agentic/tools/names.py +0 -0
  208. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/agentic/tools/openai_builtin/__init__.py +0 -0
  209. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/agentic/tools/openai_builtin/base.py +0 -0
  210. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/__init__.py +0 -0
  211. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/config.py +0 -0
  212. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/postprocessors/__init__.py +0 -0
  213. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/postprocessors/artifacts.py +0 -0
  214. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/postprocessors/code_display.py +0 -0
  215. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/postprocessors/generated_files.py +0 -0
  216. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/schemas.py +0 -0
  217. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/service.py +0 -0
  218. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/agentic/tools/openai_builtin/manager.py +0 -0
  219. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/agentic/tools/schemas.py +0 -0
  220. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/agentic/tools/test/test_mcp_manager.py +0 -0
  221. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/agentic/tools/test/test_tool_progress_reporter.py +0 -0
  222. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/agentic/tools/tool.py +0 -0
  223. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/agentic/tools/tool_manager.py +0 -0
  224. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/agentic/tools/tool_progress_reporter.py +0 -0
  225. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/agentic/tools/utils/__init__.py +0 -0
  226. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/agentic/tools/utils/source_handling/__init__.py +0 -0
  227. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/agentic/tools/utils/source_handling/schema.py +0 -0
  228. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/agentic/tools/utils/source_handling/source_formatting.py +0 -0
  229. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/agentic/tools/utils/source_handling/tests/test_source_formatting.py +0 -0
  230. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/agentic_table/__init__.py +0 -0
  231. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/agentic_table/schemas.py +0 -0
  232. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/agentic_table/service.py +0 -0
  233. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/app/__init__.py +0 -0
  234. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/app/chat_event_filter_options_settings.py +0 -0
  235. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/app/dev_util.py +0 -0
  236. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/app/fast_api_factory.py +0 -0
  237. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/app/feature_flags.py +0 -0
  238. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/app/find_env_file.py +0 -0
  239. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/app/init_logging.py +0 -0
  240. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/app/init_sdk.py +0 -0
  241. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/app/performance/async_tasks.py +0 -0
  242. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/app/performance/async_wrapper.py +0 -0
  243. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/app/schemas.py +0 -0
  244. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/app/unique_settings.py +0 -0
  245. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/app/verification.py +0 -0
  246. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/app/webhook.py +0 -0
  247. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/chat/__init__.py +0 -0
  248. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/chat/cancellation.py +0 -0
  249. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/chat/constants.py +0 -0
  250. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/chat/deprecated/service.py +0 -0
  251. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/chat/functions.py +0 -0
  252. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/chat/rendering.py +0 -0
  253. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/chat/responses_api.py +0 -0
  254. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/chat/schemas.py +0 -0
  255. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/chat/service.py +0 -0
  256. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/chat/state.py +0 -0
  257. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/chat/utils.py +0 -0
  258. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/content/__init__.py +0 -0
  259. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/content/constants.py +0 -0
  260. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/content/functions.py +0 -0
  261. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/content/schemas.py +0 -0
  262. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/content/service.py +0 -0
  263. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/content/smart_rules.py +0 -0
  264. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/content/utils.py +0 -0
  265. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/data_extraction/README.md +0 -0
  266. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/data_extraction/__init__.py +0 -0
  267. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/data_extraction/augmented/__init__.py +0 -0
  268. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/data_extraction/augmented/service.py +0 -0
  269. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/data_extraction/base.py +0 -0
  270. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/data_extraction/basic/__init__.py +0 -0
  271. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/data_extraction/basic/config.py +0 -0
  272. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/data_extraction/basic/prompt.py +0 -0
  273. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/data_extraction/basic/service.py +0 -0
  274. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/elicitation/__init__.py +0 -0
  275. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/elicitation/constants.py +0 -0
  276. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/elicitation/exceptions.py +0 -0
  277. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/elicitation/functions.py +0 -0
  278. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/elicitation/schemas.py +0 -0
  279. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/embedding/__init__.py +0 -0
  280. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/embedding/constants.py +0 -0
  281. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/embedding/functions.py +0 -0
  282. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/embedding/schemas.py +0 -0
  283. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/embedding/service.py +0 -0
  284. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/embedding/utils.py +0 -0
  285. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/experimental/README.md +0 -0
  286. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/experimental/__init__.py +0 -0
  287. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/experimental/_internal/__init__.py +0 -0
  288. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/experimental/_internal/streaming/__init__.py +0 -0
  289. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/experimental/_internal/streaming/common.py +0 -0
  290. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/experimental/_internal/streaming/pattern_replacer.py +0 -0
  291. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/experimental/components/__init__.py +0 -0
  292. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/experimental/components/_base.py +0 -0
  293. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/experimental/components/content_tree/__init__.py +0 -0
  294. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/experimental/components/content_tree/functions.py +0 -0
  295. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/experimental/components/content_tree/schemas.py +0 -0
  296. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/experimental/components/content_tree/service.py +0 -0
  297. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/experimental/components/internal_search/__init__.py +0 -0
  298. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/experimental/components/internal_search/base/__init__.py +0 -0
  299. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/experimental/components/internal_search/base/config.py +0 -0
  300. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/experimental/components/internal_search/base/schemas.py +0 -0
  301. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/experimental/components/internal_search/base/service.py +0 -0
  302. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/experimental/components/internal_search/base/utils.py +0 -0
  303. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/experimental/components/internal_search/chat/__init__.py +0 -0
  304. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/experimental/components/internal_search/chat/config.py +0 -0
  305. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/experimental/components/internal_search/chat/schemas.py +0 -0
  306. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/experimental/components/internal_search/chat/service.py +0 -0
  307. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/experimental/components/internal_search/knowledge_base/__init__.py +0 -0
  308. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/experimental/components/internal_search/knowledge_base/config.py +0 -0
  309. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/experimental/components/internal_search/knowledge_base/schemas.py +0 -0
  310. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/experimental/components/internal_search/knowledge_base/service.py +0 -0
  311. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/experimental/components/internal_search/post_processing/__init__.py +0 -0
  312. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/experimental/components/internal_search/post_processing/config.py +0 -0
  313. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/experimental/components/internal_search/post_processing/service.py +0 -0
  314. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/experimental/content_tree/__init__.py +0 -0
  315. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/experimental/identity/__init__.py +0 -0
  316. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/experimental/integrations/__init__.py +0 -0
  317. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/experimental/integrations/openai/__init__.py +0 -0
  318. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/experimental/integrations/openai/streaming/__init__.py +0 -0
  319. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/__init__.py +0 -0
  320. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/_async_bridge.py +0 -0
  321. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/chat_completions/__init__.py +0 -0
  322. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/chat_completions/complete_with_references.py +0 -0
  323. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/chat_completions/stream_event_router.py +0 -0
  324. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/chat_completions/text_event_handler.py +0 -0
  325. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/chat_completions/tool_call_event_handler.py +0 -0
  326. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/events.py +0 -0
  327. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/protocols/__init__.py +0 -0
  328. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/protocols/chat_completions.py +0 -0
  329. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/protocols/responses.py +0 -0
  330. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/responses/__init__.py +0 -0
  331. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/responses/code_interpreter_event_handler.py +0 -0
  332. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/responses/complete_with_references.py +0 -0
  333. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/responses/completed_event_handler.py +0 -0
  334. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/responses/stream_event_router.py +0 -0
  335. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/responses/text_delta_event_handler.py +0 -0
  336. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/responses/tool_call_event_handler.py +0 -0
  337. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/subscribers/__init__.py +0 -0
  338. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/subscribers/message_persister.py +0 -0
  339. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/subscribers/progress_log_persister.py +0 -0
  340. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/experimental/resources/__init__.py +0 -0
  341. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/experimental/resources/content_folder/__init__.py +0 -0
  342. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/experimental/resources/content_folder/functions.py +0 -0
  343. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/experimental/resources/content_folder/schemas.py +0 -0
  344. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/experimental/resources/content_folder/service.py +0 -0
  345. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/experimental/resources/facades/__init__.py +0 -0
  346. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/experimental/resources/facades/identity/__init__.py +0 -0
  347. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/experimental/resources/facades/identity/service.py +0 -0
  348. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/experimental/resources/feature_flags/README.md +0 -0
  349. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/experimental/resources/feature_flags/__init__.py +0 -0
  350. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/experimental/resources/feature_flags/_graphql_client.py +0 -0
  351. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/experimental/resources/feature_flags/_ttl_cache.py +0 -0
  352. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/experimental/resources/feature_flags/client.py +0 -0
  353. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/experimental/resources/feature_flags/schemas.py +0 -0
  354. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/experimental/resources/feature_flags/settings.py +0 -0
  355. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/experimental/resources/group/__init__.py +0 -0
  356. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/experimental/resources/group/functions.py +0 -0
  357. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/experimental/resources/group/schemas.py +0 -0
  358. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/experimental/resources/group/service.py +0 -0
  359. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/experimental/resources/scheduled_task/__init__.py +0 -0
  360. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/experimental/resources/scheduled_task/cron.py +0 -0
  361. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/experimental/resources/scheduled_task/functions.py +0 -0
  362. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/experimental/resources/scheduled_task/schemas.py +0 -0
  363. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/experimental/resources/scheduled_task/service.py +0 -0
  364. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/experimental/resources/user/__init__.py +0 -0
  365. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/experimental/resources/user/functions.py +0 -0
  366. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/experimental/resources/user/schemas.py +0 -0
  367. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/experimental/resources/user/service.py +0 -0
  368. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/experimental/testing/__init__.py +0 -0
  369. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/framework_utilities/__init__.py +0 -0
  370. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/framework_utilities/langchain/__init__.py +0 -0
  371. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/framework_utilities/langchain/client.py +0 -0
  372. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/framework_utilities/langchain/history.py +0 -0
  373. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/framework_utilities/openai/__init__.py +0 -0
  374. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/framework_utilities/openai/client.py +0 -0
  375. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/framework_utilities/openai/message_builder.py +0 -0
  376. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/framework_utilities/utils.py +0 -0
  377. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/language_model/__init__.py +0 -0
  378. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/language_model/_responses_api_utils.py +0 -0
  379. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/language_model/builder.py +0 -0
  380. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/language_model/constants.py +0 -0
  381. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/language_model/default_language_model.py +0 -0
  382. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/language_model/functions.py +0 -0
  383. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/language_model/infos.py +0 -0
  384. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/language_model/prompt.py +0 -0
  385. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/language_model/reference.py +0 -0
  386. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/language_model/schemas.py +0 -0
  387. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/language_model/service.py +0 -0
  388. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/language_model/settings.py +0 -0
  389. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/language_model/stream_transform.py +0 -0
  390. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/language_model/utils.py +0 -0
  391. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/monitoring/__init__.py +0 -0
  392. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/monitoring/gunicorn.py +0 -0
  393. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/monitoring/middleware.py +0 -0
  394. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/monitoring/registry.py +0 -0
  395. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/protocols/support.py +0 -0
  396. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/services/__init__.py +0 -0
  397. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/services/chat_service.py +0 -0
  398. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/services/factory.py +0 -0
  399. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/services/knowledge_base.py +0 -0
  400. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/short_term_memory/__init__.py +0 -0
  401. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/short_term_memory/constants.py +0 -0
  402. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/short_term_memory/functions.py +0 -0
  403. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/short_term_memory/schemas.py +0 -0
  404. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/short_term_memory/service.py +0 -0
  405. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/smart_rules/__init__.py +0 -0
  406. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/unique_toolkit/smart_rules/compile.py +0 -0
  407. {unique_toolkit-2026.28.0.dev1 → unique_toolkit-2026.28.0.dev2}/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.dev1
3
+ Version: 2026.28.0.dev2
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.dev2,<2026.28.0rc0
19
+ Requires-Dist: unique-sdk>=2026.28.0.dev3,<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.dev1"
3
+ version = "2026.28.0.dev2"
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.dev2,<2026.28.0rc0",
31
+ "unique-sdk>=2026.28.0.dev3,<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",
@@ -1,3 +1,7 @@
1
+ from unique_toolkit.agentic.tools.experimental.ask_user_tool import (
2
+ AskUserTool,
3
+ AskUserToolConfig,
4
+ )
1
5
  from unique_toolkit.agentic.tools.experimental.open_file_tool import (
2
6
  OpenFileTool,
3
7
  OpenFileToolRuntime,
@@ -19,6 +23,8 @@ from unique_toolkit.agentic.tools.experimental.todo import (
19
23
  )
20
24
 
21
25
  __all__ = [
26
+ "AskUserTool",
27
+ "AskUserToolConfig",
22
28
  "DisplayMode",
23
29
  "OpenFileTool",
24
30
  "OpenFileToolRuntime",
@@ -0,0 +1,14 @@
1
+ from unique_toolkit.agentic.tools.experimental.ask_user_tool.config import (
2
+ AskUserToolConfig,
3
+ )
4
+ from unique_toolkit.agentic.tools.experimental.ask_user_tool.tool import (
5
+ AskUserTool,
6
+ )
7
+ from unique_toolkit.agentic.tools.factory import ToolFactory
8
+
9
+ ToolFactory.register_tool(AskUserTool, AskUserToolConfig)
10
+
11
+ __all__ = [
12
+ "AskUserTool",
13
+ "AskUserToolConfig",
14
+ ]
@@ -0,0 +1,138 @@
1
+ from typing import Annotated
2
+
3
+ from pydantic import Field
4
+
5
+ from unique_toolkit._common.pydantic.rjsf_tags import RJSFMetaTag
6
+ from unique_toolkit.agentic.tools.schemas import BaseToolConfig
7
+ from unique_toolkit.elicitation import (
8
+ ElicitationCancelledException,
9
+ ElicitationDeclinedException,
10
+ ElicitationExpiredException,
11
+ )
12
+
13
+ _DEFAULT_TOOL_DESCRIPTION = """
14
+ Ask the user a question through a structured form and block until they answer. Use whenever you need information, a decision, or confirmation before continuing correctly: clarifying questions, confirmation before destructive or irreversible work, missing parameters, or choosing among plausible options. Do not ask the user in normal chat text while this tool is available—call AskUser, wait for the result, then continue. If unsure which interpretation, scope, or value applies, call AskUser instead of guessing. Destructive actions must include an explicit confirmation field. Form and chat anchoring are handled for you; the call blocks until the user responds, declines, cancels, or times out.
15
+ """.strip()
16
+
17
+ _DEFAULT_TOOL_DESCRIPTION_FOR_SYSTEM_PROMPT = """
18
+ - If your next message would ask the user for information, a decision, or confirmation, call AskUser instead of writing the question in chat.
19
+ - If more than one reasonable reading of the request exists, call AskUser before acting—do not silently pick a default.
20
+ - Destructive or irreversible actions require an explicit confirmation field (e.g. boolean `confirm`) in `response_schema`.
21
+ """.strip()
22
+
23
+ _DEFAULT_MESSAGE_DESCRIPTION = "The question or prompt shown to the user"
24
+
25
+ _DEFAULT_RESPONSE_SCHEMA_DESCRIPTION = """
26
+ JSON Schema object (root type "object") for the form shown to the user; you construct it. Single string property for free-text; boolean for a confirmation; string + enum for one choice (dropdown); array with items.enum for choose-many. Mark needed fields required and add short property descriptions (shown as help text). Prefer one small form over many calls.
27
+ Examples:
28
+ - free-text: {"type":"object","properties":{"answer":{"type":"string"}},"required":["answer"]};
29
+ - confirm: {"type":"object","properties":{"confirm":{"type":"boolean"}},"required":["confirm"]};
30
+ - choice: {"type":"object","properties":{"region":{"type":"string","enum":["EU","US"]}},"required":["region"]};
31
+ - multi: {"type":"object","properties":{"topics":{"type":"array","items":{"type":"string","enum":["a","b"]}}}}.
32
+ """.strip()
33
+
34
+ _TIMEOUT_SECONDS_MIN = 1
35
+ _TIMOUT_SECONDS_MAX = 3600
36
+
37
+ _POLLING_SECONDS_MIN = 0.5
38
+ _POLLING_SECONDS_MAX = 60
39
+
40
+
41
+ class AskUserToolConfig(BaseToolConfig):
42
+ tool_description: Annotated[
43
+ str,
44
+ RJSFMetaTag.StringWidget.textarea(
45
+ rows=len(_DEFAULT_TOOL_DESCRIPTION.splitlines())
46
+ ),
47
+ ] = Field(
48
+ default=_DEFAULT_TOOL_DESCRIPTION,
49
+ description="Description shown to the model for this tool.",
50
+ )
51
+
52
+ tool_description_for_system_prompt: Annotated[
53
+ str,
54
+ RJSFMetaTag.StringWidget.textarea(
55
+ rows=len(_DEFAULT_TOOL_DESCRIPTION_FOR_SYSTEM_PROMPT.splitlines())
56
+ ),
57
+ ] = Field(
58
+ default=_DEFAULT_TOOL_DESCRIPTION_FOR_SYSTEM_PROMPT,
59
+ description="Extra system guidance about when and how to use AskUser.",
60
+ )
61
+
62
+ message_description: Annotated[
63
+ str,
64
+ RJSFMetaTag.StringWidget.textarea(
65
+ rows=len(_DEFAULT_MESSAGE_DESCRIPTION.splitlines())
66
+ ),
67
+ ] = Field(
68
+ default=_DEFAULT_MESSAGE_DESCRIPTION,
69
+ description="Description of the `message` parameter shown to the model.",
70
+ title="`message` tool input field description",
71
+ )
72
+
73
+ response_schema_description: Annotated[
74
+ str,
75
+ RJSFMetaTag.StringWidget.textarea(
76
+ rows=len(_DEFAULT_MESSAGE_DESCRIPTION.splitlines())
77
+ ),
78
+ ] = Field(
79
+ default=_DEFAULT_RESPONSE_SCHEMA_DESCRIPTION,
80
+ description="Description of the `response_schema` parameter shown to the model.",
81
+ title="`response_schema` tool input field description",
82
+ )
83
+
84
+ declined_message: Annotated[
85
+ str,
86
+ RJSFMetaTag.StringWidget.textarea(
87
+ rows=len(ElicitationDeclinedException.INSTRUCTION.splitlines())
88
+ ),
89
+ ] = Field(
90
+ default=ElicitationDeclinedException.INSTRUCTION,
91
+ description="Message returned to the model when the user declines the request.",
92
+ title="Declined response",
93
+ )
94
+
95
+ cancelled_message: Annotated[
96
+ str,
97
+ RJSFMetaTag.StringWidget.textarea(
98
+ rows=len(ElicitationCancelledException.INSTRUCTION.splitlines())
99
+ ),
100
+ ] = Field(
101
+ default=ElicitationCancelledException.INSTRUCTION,
102
+ description="Message returned to the model when the user cancels the request.",
103
+ title="Cancelled response",
104
+ )
105
+
106
+ expired_message: Annotated[
107
+ str,
108
+ RJSFMetaTag.StringWidget.textarea(
109
+ rows=len(ElicitationExpiredException.INSTRUCTION.splitlines())
110
+ ),
111
+ ] = Field(
112
+ default=ElicitationExpiredException.INSTRUCTION,
113
+ description="Message returned to the model when the request expires before the user responds.",
114
+ title="Expired response",
115
+ )
116
+
117
+ timeout_seconds: Annotated[
118
+ int,
119
+ RJSFMetaTag.NumberWidget.updown(
120
+ min=_TIMEOUT_SECONDS_MIN, max=_TIMOUT_SECONDS_MAX
121
+ ),
122
+ ] = Field(
123
+ default=300,
124
+ ge=_TIMEOUT_SECONDS_MIN,
125
+ le=_TIMOUT_SECONDS_MAX,
126
+ description="Maximum seconds to wait for the user to respond.",
127
+ )
128
+ poll_interval_seconds: Annotated[
129
+ float,
130
+ RJSFMetaTag.NumberWidget.updown(
131
+ min=_POLLING_SECONDS_MIN, max=_POLLING_SECONDS_MAX, step=0.5
132
+ ),
133
+ ] = Field(
134
+ default=1.0,
135
+ ge=_POLLING_SECONDS_MIN,
136
+ le=_POLLING_SECONDS_MAX,
137
+ description="Seconds to wait between attempts when checking whether user has responded.",
138
+ )
@@ -0,0 +1,149 @@
1
+ import asyncio
2
+ import json
3
+ import logging
4
+ from typing import Annotated, override
5
+
6
+ from pydantic import BaseModel, Field, JsonValue, StringConstraints
7
+
8
+ from unique_toolkit.agentic.evaluation.schemas import EvaluationMetricName
9
+ from unique_toolkit.agentic.tools.experimental.ask_user_tool.config import (
10
+ AskUserToolConfig,
11
+ )
12
+ from unique_toolkit.agentic.tools.schemas import ToolCallResponse
13
+ from unique_toolkit.agentic.tools.tool import Tool
14
+ from unique_toolkit.agentic.tools.tool_progress_reporter import ToolProgressReporter
15
+ from unique_toolkit.app.schemas import ChatEvent
16
+ from unique_toolkit.elicitation import (
17
+ ElicitationCancelledException,
18
+ ElicitationDeclinedException,
19
+ ElicitationExpiredException,
20
+ ElicitationMode,
21
+ )
22
+ from unique_toolkit.language_model.schemas import (
23
+ LanguageModelFunction,
24
+ LanguageModelToolDescription,
25
+ )
26
+
27
+ _LOGGER = logging.getLogger(__name__)
28
+
29
+ MessageType = Annotated[str, StringConstraints(strip_whitespace=True, min_length=1)]
30
+ ResponseSchemaType = dict[str, JsonValue]
31
+
32
+
33
+ class AskUserToolInput(BaseModel):
34
+ message: MessageType
35
+ response_schema: ResponseSchemaType
36
+
37
+
38
+ class AskUserTool(Tool[AskUserToolConfig]):
39
+ name = "AskUser"
40
+ DISPLAY_NAME = "Ask User"
41
+
42
+ def __init__(
43
+ self,
44
+ config: AskUserToolConfig,
45
+ event: ChatEvent,
46
+ tool_progress_reporter: ToolProgressReporter | None = None,
47
+ ) -> None:
48
+ super().__init__(
49
+ config=config, event=event, tool_progress_reporter=tool_progress_reporter
50
+ )
51
+ self._lock = asyncio.Lock()
52
+
53
+ @override
54
+ def display_name(self) -> str:
55
+ return self.DISPLAY_NAME
56
+
57
+ @override
58
+ def tool_description(self) -> LanguageModelToolDescription:
59
+ class AskUserToolInputWithDescriptions(AskUserToolInput):
60
+ message: MessageType = Field(description=self.config.message_description)
61
+ response_schema: ResponseSchemaType = Field(
62
+ description=self.config.response_schema_description
63
+ )
64
+
65
+ return LanguageModelToolDescription(
66
+ name=self.name,
67
+ description=self.config.tool_description,
68
+ parameters=AskUserToolInputWithDescriptions,
69
+ )
70
+
71
+ @override
72
+ def tool_description_for_system_prompt(self) -> str:
73
+ return self.config.tool_description_for_system_prompt
74
+
75
+ @override
76
+ def is_capability(self) -> bool:
77
+ return True
78
+
79
+ @override
80
+ def evaluation_check_list(self) -> list[EvaluationMetricName]:
81
+ return []
82
+
83
+ @override
84
+ def get_evaluation_checks_based_on_tool_response(
85
+ self,
86
+ tool_response: ToolCallResponse,
87
+ ) -> list[EvaluationMetricName]:
88
+ return []
89
+
90
+ @override
91
+ async def run(self, tool_call: LanguageModelFunction) -> ToolCallResponse:
92
+ # When multiple elicitation calls are created, the frontend will render them one by one
93
+ # We need to lock the execution of the tool so that the timeout starts when the user
94
+ # actually sees the elicitation call
95
+ async with self._lock:
96
+ return await self._run(tool_call)
97
+
98
+ async def _run(self, tool_call: LanguageModelFunction) -> ToolCallResponse:
99
+ params = AskUserToolInput.model_validate(tool_call.arguments)
100
+
101
+ service = self.chat_service.elicitation
102
+
103
+ _LOGGER.info("Creating elicitation request")
104
+
105
+ created = await service.create_async(
106
+ mode=ElicitationMode.FORM,
107
+ message=params.message,
108
+ tool_name=self.display_name(),
109
+ json_schema=params.response_schema,
110
+ expires_in_seconds=self.config.timeout_seconds,
111
+ )
112
+
113
+ _LOGGER.info("Elicitation request (id %s) successfully created", created.id)
114
+
115
+ try:
116
+ elicitation = await service.wait_for_response_async(
117
+ elicitation_id=created.id,
118
+ timeout_seconds=self.config.timeout_seconds,
119
+ poll_interval_seconds=self.config.poll_interval_seconds,
120
+ )
121
+ except ElicitationDeclinedException:
122
+ _LOGGER.info("Elicitation with id %s was declined", created.id)
123
+ return ToolCallResponse(
124
+ id=tool_call.id,
125
+ name=self.name,
126
+ content=self.config.declined_message,
127
+ )
128
+ except ElicitationCancelledException:
129
+ _LOGGER.info("Elicitation with id %s was cancelled", created.id)
130
+ return ToolCallResponse(
131
+ id=tool_call.id,
132
+ name=self.name,
133
+ content=self.config.cancelled_message,
134
+ )
135
+ except ElicitationExpiredException:
136
+ _LOGGER.info("Elicitation with id %s has expired", created.id)
137
+ return ToolCallResponse(
138
+ id=tool_call.id,
139
+ name=self.name,
140
+ content=self.config.expired_message,
141
+ )
142
+
143
+ _LOGGER.info("User responded to elicitation request")
144
+
145
+ return ToolCallResponse(
146
+ id=tool_call.id,
147
+ name=self.name,
148
+ content=json.dumps(elicitation.response_content, ensure_ascii=False),
149
+ )
@@ -1,7 +1,13 @@
1
+ import asyncio
1
2
  from typing import Any
2
3
 
3
4
  from unique_toolkit._common.validate_required_values import validate_required_values
4
5
  from unique_toolkit.app.schemas import ChatEvent, Correlation
6
+ from unique_toolkit.elicitation.exceptions import (
7
+ ElicitationCancelledException,
8
+ ElicitationDeclinedException,
9
+ ElicitationExpiredException,
10
+ )
5
11
  from unique_toolkit.elicitation.functions import (
6
12
  create_elicitation,
7
13
  create_elicitation_async,
@@ -18,6 +24,7 @@ from unique_toolkit.elicitation.schemas import (
18
24
  ElicitationList,
19
25
  ElicitationMode,
20
26
  ElicitationResponseResult,
27
+ ElicitationStatus,
21
28
  )
22
29
 
23
30
 
@@ -235,6 +242,45 @@ class ElicitationService:
235
242
  elicitation_id=elicitation_id,
236
243
  )
237
244
 
245
+ async def wait_for_response_async(
246
+ self,
247
+ *,
248
+ elicitation_id: str,
249
+ timeout_seconds: int,
250
+ poll_interval_seconds: float = 1.0,
251
+ ) -> Elicitation:
252
+ """
253
+ Poll an elicitation until the user accepts it.
254
+
255
+ Args:
256
+ elicitation_id (str): The elicitation ID to poll.
257
+ timeout_seconds (int): How long to wait before giving up.
258
+ poll_interval_seconds (float): Seconds between polls.
259
+
260
+ Returns:
261
+ Elicitation: The accepted elicitation.
262
+
263
+ Raises:
264
+ ElicitationDeclinedException: If the user declined.
265
+ ElicitationCancelledException: If the user cancelled.
266
+ ElicitationExpiredException: If the request expired or timed out.
267
+ """
268
+ num_trials = int(timeout_seconds / poll_interval_seconds) + 1
269
+ for _ in range(num_trials):
270
+ elicitation = await self.get_async(elicitation_id)
271
+ match elicitation.status:
272
+ case ElicitationStatus.ACCEPTED:
273
+ return elicitation
274
+ case ElicitationStatus.DECLINED:
275
+ raise ElicitationDeclinedException()
276
+ case ElicitationStatus.CANCELLED:
277
+ raise ElicitationCancelledException()
278
+ case ElicitationStatus.EXPIRED:
279
+ raise ElicitationExpiredException()
280
+ case _:
281
+ await asyncio.sleep(poll_interval_seconds)
282
+ raise ElicitationExpiredException()
283
+
238
284
  # List Pending Methods
239
285
  ############################################################################
240
286