unique-toolkit 2026.28.0.dev6__tar.gz → 2026.28.0.dev8__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.dev6 → unique_toolkit-2026.28.0.dev8}/PKG-INFO +2 -2
  2. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/pyproject.toml +2 -2
  3. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/_common/chunk_relevancy_sorter/service.py +1 -1
  4. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/agentic/evaluation/context_relevancy/service.py +1 -1
  5. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/agentic/tools/experimental/retrieve_search_scope_tool/tool.py +1 -1
  6. unique_toolkit-2026.28.0.dev8/unique_toolkit/agentic/tools/run_context.py +24 -0
  7. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/agentic/tools/tool.py +44 -5
  8. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/agentic/tools/tool_manager.py +147 -20
  9. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/agentic_table/schemas.py +62 -24
  10. unique_toolkit-2026.28.0.dev8/unique_toolkit/agentic_table/synthetic_chat_event.py +67 -0
  11. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/app/schemas.py +54 -15
  12. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/app/unique_settings.py +38 -0
  13. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/chat/functions.py +2 -0
  14. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/content/schemas.py +13 -0
  15. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/content/service.py +79 -40
  16. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/language_model/service.py +21 -21
  17. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/services/factory.py +10 -2
  18. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/services/knowledge_base.py +2 -2
  19. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/short_term_memory/service.py +27 -17
  20. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/README.md +0 -0
  21. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/__init__.py +0 -0
  22. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/_common/__init__.py +0 -0
  23. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/_common/_base_service.py +0 -0
  24. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/_common/_time_utils.py +0 -0
  25. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/_common/api_calling/human_verification_manager.py +0 -0
  26. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/_common/base_model_type_attribute.py +0 -0
  27. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/_common/chunk_relevancy_sorter/config.py +0 -0
  28. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/_common/chunk_relevancy_sorter/exception.py +0 -0
  29. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/_common/chunk_relevancy_sorter/schemas.py +0 -0
  30. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/_common/chunk_relevancy_sorter/tests/test_service.py +0 -0
  31. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/_common/config_checker/README.md +0 -0
  32. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/_common/config_checker/__init__.py +0 -0
  33. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/_common/config_checker/__main__.py +0 -0
  34. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/_common/config_checker/cli.py +0 -0
  35. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/_common/config_checker/differ.py +0 -0
  36. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/_common/config_checker/exporter.py +0 -0
  37. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/_common/config_checker/models.py +0 -0
  38. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/_common/config_checker/registry.py +0 -0
  39. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/_common/config_checker/validator.py +0 -0
  40. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/_common/default_language_model.py +0 -0
  41. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/_common/docx_generator/__init__.py +0 -0
  42. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/_common/docx_generator/config.py +0 -0
  43. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/_common/docx_generator/pandoc_converter.py +0 -0
  44. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/_common/docx_generator/schemas.py +0 -0
  45. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/_common/docx_generator/service.py +0 -0
  46. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/_common/docx_generator/template/Doc Template.docx +0 -0
  47. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/_common/endpoint_builder.py +0 -0
  48. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/_common/endpoint_requestor.py +0 -0
  49. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/_common/event_bus.py +0 -0
  50. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/_common/exception.py +0 -0
  51. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/_common/execution.py +0 -0
  52. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/_common/experimental/endpoint_builder.py +0 -0
  53. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/_common/experimental/endpoint_requestor.py +0 -0
  54. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/_common/experimental/write_up_agent/README.md +0 -0
  55. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/_common/experimental/write_up_agent/__init__.py +0 -0
  56. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/_common/experimental/write_up_agent/agent.py +0 -0
  57. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/_common/experimental/write_up_agent/config.py +0 -0
  58. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/_common/experimental/write_up_agent/examples/data.csv +0 -0
  59. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/_common/experimental/write_up_agent/examples/example_usage.py +0 -0
  60. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/_common/experimental/write_up_agent/schemas.py +0 -0
  61. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/_common/experimental/write_up_agent/services/__init__.py +0 -0
  62. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/_common/experimental/write_up_agent/services/dataframe_handler/__init__.py +0 -0
  63. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/_common/experimental/write_up_agent/services/dataframe_handler/exceptions.py +0 -0
  64. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/_common/experimental/write_up_agent/services/dataframe_handler/service.py +0 -0
  65. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/_common/experimental/write_up_agent/services/dataframe_handler/utils.py +0 -0
  66. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/__init__.py +0 -0
  67. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/config.py +0 -0
  68. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/exceptions.py +0 -0
  69. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/prompts/config.py +0 -0
  70. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/prompts/system_prompt.j2 +0 -0
  71. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/prompts/user_prompt.j2 +0 -0
  72. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/service.py +0 -0
  73. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/_common/experimental/write_up_agent/services/template_handler/__init__.py +0 -0
  74. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/_common/experimental/write_up_agent/services/template_handler/default_template.j2 +0 -0
  75. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/_common/experimental/write_up_agent/services/template_handler/exceptions.py +0 -0
  76. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/_common/experimental/write_up_agent/services/template_handler/service.py +0 -0
  77. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/_common/experimental/write_up_agent/services/template_handler/utils.py +0 -0
  78. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/_common/experimental/write_up_agent/utils.py +0 -0
  79. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/_common/feature_flags/schema.py +0 -0
  80. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/_common/metadata_filter_scope.py +0 -0
  81. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/_common/pydantic/rjsf_tags.py +0 -0
  82. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/_common/pydantic_helpers.py +0 -0
  83. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/_common/referencing.py +0 -0
  84. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/_common/string_utilities.py +0 -0
  85. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/_common/tests/test_referencing.py +0 -0
  86. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/_common/tests/test_string_utilities.py +0 -0
  87. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/_common/token/__init__.py +0 -0
  88. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/_common/token/image_token_counting.py +0 -0
  89. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/_common/token/token_counting.py +0 -0
  90. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/_common/token/tokenizers/deepseek/tokenizer.json +0 -0
  91. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/_common/token/tokenizers/qwen/tokenizer.json +0 -0
  92. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/_common/utils/__init__.py +0 -0
  93. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/_common/utils/files.py +0 -0
  94. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/_common/utils/image/encode.py +0 -0
  95. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/_common/utils/jinja/helpers.py +0 -0
  96. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/_common/utils/jinja/render.py +0 -0
  97. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/_common/utils/jinja/schema.py +0 -0
  98. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/_common/utils/jinja/utils.py +0 -0
  99. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/_common/utils/structured_output/__init__.py +0 -0
  100. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/_common/utils/structured_output/schema.py +0 -0
  101. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/_common/utils/write_configuration.py +0 -0
  102. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/_common/validate_required_values.py +0 -0
  103. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/_common/validators.py +0 -0
  104. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/agentic/__init__.py +0 -0
  105. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/agentic/debug_info_manager/debug_info_manager.py +0 -0
  106. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/agentic/debug_info_manager/test/test_debug_info_manager.py +0 -0
  107. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/agentic/evaluation/config.py +0 -0
  108. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/agentic/evaluation/context_relevancy/prompts/__init__.py +0 -0
  109. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/agentic/evaluation/context_relevancy/prompts/system_prompt.j2 +0 -0
  110. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/agentic/evaluation/context_relevancy/prompts/user_prompt.j2 +0 -0
  111. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/agentic/evaluation/context_relevancy/schema.py +0 -0
  112. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/agentic/evaluation/evaluation_manager.py +0 -0
  113. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/agentic/evaluation/exception.py +0 -0
  114. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/agentic/evaluation/hallucination/constants.py +0 -0
  115. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/agentic/evaluation/hallucination/hallucination_evaluation.py +0 -0
  116. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/agentic/evaluation/hallucination/prompts/__init__.py +0 -0
  117. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/agentic/evaluation/hallucination/prompts/system_prompt.j2 +0 -0
  118. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/agentic/evaluation/hallucination/prompts/user_prompt.j2 +0 -0
  119. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/agentic/evaluation/hallucination/service.py +0 -0
  120. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/agentic/evaluation/hallucination/utils.py +0 -0
  121. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/agentic/evaluation/output_parser.py +0 -0
  122. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/agentic/evaluation/schemas.py +0 -0
  123. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/agentic/evaluation/tests/fixtures.py +0 -0
  124. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/agentic/evaluation/tests/test_config.py +0 -0
  125. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/agentic/evaluation/tests/test_context_relevancy_service.py +0 -0
  126. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/agentic/evaluation/tests/test_hallucination_constants.py +0 -0
  127. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/agentic/evaluation/tests/test_hallucination_external_context.py +0 -0
  128. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/agentic/evaluation/tests/test_hallucination_utils.py +0 -0
  129. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/agentic/evaluation/tests/test_output_parser.py +0 -0
  130. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/agentic/evaluation/tests/test_prompt_loaders.py +0 -0
  131. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/agentic/evaluation/utils.py +0 -0
  132. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/agentic/feature_flags/__init__.py +0 -0
  133. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/agentic/feature_flags/feature_flags.py +0 -0
  134. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/agentic/history_manager/history_construction_with_contents.py +0 -0
  135. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/agentic/history_manager/history_manager.py +0 -0
  136. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/agentic/history_manager/loop_token_reducer.py +0 -0
  137. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/agentic/history_manager/settings.py +0 -0
  138. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/agentic/history_manager/utils.py +0 -0
  139. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/agentic/loop_runner/__init__.py +0 -0
  140. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/agentic/loop_runner/_iteration_handler_utils.py +0 -0
  141. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/agentic/loop_runner/_responses_iteration_handler_utils.py +0 -0
  142. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/agentic/loop_runner/_responses_stream_handler_utils.py +0 -0
  143. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/agentic/loop_runner/_stream_handler_utils.py +0 -0
  144. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/agentic/loop_runner/base.py +0 -0
  145. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/agentic/loop_runner/middleware/__init__.py +0 -0
  146. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/agentic/loop_runner/middleware/planning/__init__.py +0 -0
  147. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/agentic/loop_runner/middleware/planning/planning.py +0 -0
  148. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/agentic/loop_runner/middleware/planning/schema.py +0 -0
  149. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/agentic/loop_runner/runners/__init__.py +0 -0
  150. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/agentic/loop_runner/runners/basic.py +0 -0
  151. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/agentic/loop_runner/runners/mistral/__init__.py +0 -0
  152. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/agentic/loop_runner/runners/mistral/mistral_runner.py +0 -0
  153. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/agentic/loop_runner/runners/qwen/__init__.py +0 -0
  154. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/agentic/loop_runner/runners/qwen/helpers.py +0 -0
  155. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/agentic/loop_runner/runners/qwen/qwen_runner.py +0 -0
  156. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/agentic/message_log_manager/__init__.py +0 -0
  157. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/agentic/message_log_manager/service.py +0 -0
  158. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/agentic/message_log_order.py +0 -0
  159. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/agentic/postprocessor/postprocessor_manager.py +0 -0
  160. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/agentic/reference_manager/reference_manager.py +0 -0
  161. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/agentic/reference_manager/tests/test_external_context.py +0 -0
  162. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/agentic/responses_api/__init__.py +0 -0
  163. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/agentic/responses_api/postprocessors/code_display.py +0 -0
  164. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/agentic/responses_api/postprocessors/generated_files.py +0 -0
  165. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/agentic/responses_api/stream_handler.py +0 -0
  166. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/agentic/short_term_memory_manager/persistent_short_term_memory_manager.py +0 -0
  167. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/agentic/thinking_manager/thinking_manager.py +0 -0
  168. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/agentic/tools/__init__.py +0 -0
  169. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/agentic/tools/a2a/__init__.py +0 -0
  170. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/agentic/tools/a2a/config.py +0 -0
  171. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/agentic/tools/a2a/evaluation/__init__.py +0 -0
  172. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/agentic/tools/a2a/evaluation/_utils.py +0 -0
  173. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/agentic/tools/a2a/evaluation/config.py +0 -0
  174. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/agentic/tools/a2a/evaluation/evaluator.py +0 -0
  175. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/agentic/tools/a2a/evaluation/summarization_user_message.j2 +0 -0
  176. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/agentic/tools/a2a/manager.py +0 -0
  177. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/agentic/tools/a2a/postprocessing/__init__.py +0 -0
  178. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/agentic/tools/a2a/postprocessing/_display_utils.py +0 -0
  179. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/agentic/tools/a2a/postprocessing/_ref_utils.py +0 -0
  180. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/agentic/tools/a2a/postprocessing/config.py +0 -0
  181. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/agentic/tools/a2a/postprocessing/display.py +0 -0
  182. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/agentic/tools/a2a/postprocessing/references.py +0 -0
  183. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/agentic/tools/a2a/postprocessing/test/test_display.py +0 -0
  184. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/agentic/tools/a2a/postprocessing/test/test_display_utils.py +0 -0
  185. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/agentic/tools/a2a/postprocessing/test/test_ref_utils.py +0 -0
  186. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/agentic/tools/a2a/postprocessing/test/test_references.py +0 -0
  187. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/agentic/tools/a2a/prompts.py +0 -0
  188. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/agentic/tools/a2a/response_watcher/__init__.py +0 -0
  189. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/agentic/tools/a2a/response_watcher/service.py +0 -0
  190. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/agentic/tools/a2a/tool/__init__.py +0 -0
  191. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/agentic/tools/a2a/tool/_memory.py +0 -0
  192. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/agentic/tools/a2a/tool/_schema.py +0 -0
  193. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/agentic/tools/a2a/tool/config.py +0 -0
  194. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/agentic/tools/a2a/tool/service.py +0 -0
  195. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/agentic/tools/a2a/tool/test/test_service_utils.py +0 -0
  196. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/agentic/tools/agent_chunks_hanlder.py +0 -0
  197. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/agentic/tools/config.py +0 -0
  198. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/agentic/tools/experimental/__init__.py +0 -0
  199. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/agentic/tools/experimental/ask_user_tool/__init__.py +0 -0
  200. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/agentic/tools/experimental/ask_user_tool/config.py +0 -0
  201. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/agentic/tools/experimental/ask_user_tool/tool.py +0 -0
  202. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/agentic/tools/experimental/open_file_tool/__init__.py +0 -0
  203. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/agentic/tools/experimental/open_file_tool/config.py +0 -0
  204. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/agentic/tools/experimental/open_file_tool/runtime.py +0 -0
  205. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/agentic/tools/experimental/open_file_tool/tool.py +0 -0
  206. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/agentic/tools/experimental/retrieve_search_scope_tool/__init__.py +0 -0
  207. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/agentic/tools/experimental/retrieve_search_scope_tool/config.py +0 -0
  208. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/agentic/tools/experimental/todo/__init__.py +0 -0
  209. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/agentic/tools/experimental/todo/config.py +0 -0
  210. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/agentic/tools/experimental/todo/prompts/__init__.py +0 -0
  211. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/agentic/tools/experimental/todo/prompts/execution_reminder.j2 +0 -0
  212. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/agentic/tools/experimental/todo/prompts/system_prompt.j2 +0 -0
  213. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/agentic/tools/experimental/todo/prompts/tool_description.j2 +0 -0
  214. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/agentic/tools/experimental/todo/prompts/verification_nudge.j2 +0 -0
  215. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/agentic/tools/experimental/todo/schemas.py +0 -0
  216. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/agentic/tools/experimental/todo/service.py +0 -0
  217. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/agentic/tools/factory.py +0 -0
  218. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/agentic/tools/mcp/__init__.py +0 -0
  219. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/agentic/tools/mcp/manager.py +0 -0
  220. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/agentic/tools/mcp/models.py +0 -0
  221. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/agentic/tools/mcp/tool_wrapper.py +0 -0
  222. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/agentic/tools/names.py +0 -0
  223. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/agentic/tools/openai_builtin/__init__.py +0 -0
  224. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/agentic/tools/openai_builtin/base.py +0 -0
  225. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/__init__.py +0 -0
  226. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/config.py +0 -0
  227. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/postprocessors/__init__.py +0 -0
  228. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/postprocessors/artifacts.py +0 -0
  229. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/postprocessors/code_display.py +0 -0
  230. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/postprocessors/generated_files.py +0 -0
  231. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/schemas.py +0 -0
  232. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/service.py +0 -0
  233. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/agentic/tools/openai_builtin/manager.py +0 -0
  234. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/agentic/tools/schemas.py +0 -0
  235. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/agentic/tools/test/test_mcp_manager.py +0 -0
  236. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/agentic/tools/test/test_tool_progress_reporter.py +0 -0
  237. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/agentic/tools/tool_progress_reporter.py +0 -0
  238. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/agentic/tools/utils/__init__.py +0 -0
  239. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/agentic/tools/utils/source_handling/__init__.py +0 -0
  240. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/agentic/tools/utils/source_handling/schema.py +0 -0
  241. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/agentic/tools/utils/source_handling/source_formatting.py +0 -0
  242. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/agentic/tools/utils/source_handling/tests/test_source_formatting.py +0 -0
  243. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/agentic_table/__init__.py +0 -0
  244. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/agentic_table/service.py +0 -0
  245. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/app/__init__.py +0 -0
  246. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/app/chat_event_filter_options_settings.py +0 -0
  247. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/app/dev_util.py +0 -0
  248. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/app/fast_api_factory.py +0 -0
  249. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/app/feature_flags.py +0 -0
  250. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/app/find_env_file.py +0 -0
  251. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/app/init_logging.py +0 -0
  252. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/app/init_sdk.py +0 -0
  253. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/app/performance/async_tasks.py +0 -0
  254. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/app/performance/async_wrapper.py +0 -0
  255. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/app/verification.py +0 -0
  256. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/app/webhook.py +0 -0
  257. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/chat/__init__.py +0 -0
  258. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/chat/cancellation.py +0 -0
  259. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/chat/constants.py +0 -0
  260. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/chat/deprecated/service.py +0 -0
  261. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/chat/rendering.py +0 -0
  262. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/chat/responses_api.py +0 -0
  263. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/chat/schemas.py +0 -0
  264. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/chat/service.py +0 -0
  265. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/chat/state.py +0 -0
  266. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/chat/utils.py +0 -0
  267. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/content/__init__.py +0 -0
  268. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/content/constants.py +0 -0
  269. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/content/functions.py +0 -0
  270. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/content/smart_rules.py +0 -0
  271. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/content/utils.py +0 -0
  272. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/data_extraction/README.md +0 -0
  273. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/data_extraction/__init__.py +0 -0
  274. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/data_extraction/augmented/__init__.py +0 -0
  275. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/data_extraction/augmented/service.py +0 -0
  276. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/data_extraction/base.py +0 -0
  277. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/data_extraction/basic/__init__.py +0 -0
  278. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/data_extraction/basic/config.py +0 -0
  279. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/data_extraction/basic/prompt.py +0 -0
  280. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/data_extraction/basic/service.py +0 -0
  281. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/elicitation/__init__.py +0 -0
  282. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/elicitation/constants.py +0 -0
  283. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/elicitation/exceptions.py +0 -0
  284. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/elicitation/functions.py +0 -0
  285. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/elicitation/schemas.py +0 -0
  286. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/elicitation/service.py +0 -0
  287. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/embedding/__init__.py +0 -0
  288. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/embedding/constants.py +0 -0
  289. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/embedding/functions.py +0 -0
  290. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/embedding/schemas.py +0 -0
  291. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/embedding/service.py +0 -0
  292. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/embedding/utils.py +0 -0
  293. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/experimental/README.md +0 -0
  294. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/experimental/__init__.py +0 -0
  295. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/experimental/_internal/__init__.py +0 -0
  296. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/experimental/_internal/streaming/__init__.py +0 -0
  297. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/experimental/_internal/streaming/common.py +0 -0
  298. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/experimental/_internal/streaming/pattern_replacer.py +0 -0
  299. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/experimental/components/__init__.py +0 -0
  300. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/experimental/components/_base.py +0 -0
  301. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/experimental/components/content_tree/__init__.py +0 -0
  302. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/experimental/components/content_tree/functions.py +0 -0
  303. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/experimental/components/content_tree/schemas.py +0 -0
  304. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/experimental/components/content_tree/service.py +0 -0
  305. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/experimental/components/internal_search/__init__.py +0 -0
  306. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/experimental/components/internal_search/base/__init__.py +0 -0
  307. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/experimental/components/internal_search/base/config.py +0 -0
  308. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/experimental/components/internal_search/base/schemas.py +0 -0
  309. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/experimental/components/internal_search/base/service.py +0 -0
  310. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/experimental/components/internal_search/base/utils.py +0 -0
  311. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/experimental/components/internal_search/chat/__init__.py +0 -0
  312. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/experimental/components/internal_search/chat/config.py +0 -0
  313. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/experimental/components/internal_search/chat/schemas.py +0 -0
  314. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/experimental/components/internal_search/chat/service.py +0 -0
  315. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/experimental/components/internal_search/knowledge_base/__init__.py +0 -0
  316. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/experimental/components/internal_search/knowledge_base/config.py +0 -0
  317. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/experimental/components/internal_search/knowledge_base/schemas.py +0 -0
  318. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/experimental/components/internal_search/knowledge_base/service.py +0 -0
  319. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/experimental/components/internal_search/post_processing/__init__.py +0 -0
  320. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/experimental/components/internal_search/post_processing/config.py +0 -0
  321. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/experimental/components/internal_search/post_processing/service.py +0 -0
  322. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/experimental/content_tree/__init__.py +0 -0
  323. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/experimental/identity/__init__.py +0 -0
  324. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/experimental/integrations/__init__.py +0 -0
  325. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/experimental/integrations/openai/__init__.py +0 -0
  326. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/experimental/integrations/openai/streaming/__init__.py +0 -0
  327. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/__init__.py +0 -0
  328. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/_async_bridge.py +0 -0
  329. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/chat_completions/__init__.py +0 -0
  330. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/chat_completions/complete_with_references.py +0 -0
  331. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/chat_completions/stream_event_router.py +0 -0
  332. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/chat_completions/text_event_handler.py +0 -0
  333. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/chat_completions/tool_call_event_handler.py +0 -0
  334. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/events.py +0 -0
  335. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/protocols/__init__.py +0 -0
  336. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/protocols/chat_completions.py +0 -0
  337. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/protocols/responses.py +0 -0
  338. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/responses/__init__.py +0 -0
  339. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/responses/code_interpreter_event_handler.py +0 -0
  340. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/responses/complete_with_references.py +0 -0
  341. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/responses/completed_event_handler.py +0 -0
  342. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/responses/stream_event_router.py +0 -0
  343. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/responses/text_delta_event_handler.py +0 -0
  344. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/responses/tool_call_event_handler.py +0 -0
  345. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/subscribers/__init__.py +0 -0
  346. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/subscribers/message_persister.py +0 -0
  347. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/subscribers/progress_log_persister.py +0 -0
  348. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/experimental/resources/__init__.py +0 -0
  349. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/experimental/resources/content_folder/__init__.py +0 -0
  350. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/experimental/resources/content_folder/functions.py +0 -0
  351. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/experimental/resources/content_folder/schemas.py +0 -0
  352. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/experimental/resources/content_folder/service.py +0 -0
  353. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/experimental/resources/facades/__init__.py +0 -0
  354. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/experimental/resources/facades/identity/__init__.py +0 -0
  355. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/experimental/resources/facades/identity/service.py +0 -0
  356. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/experimental/resources/feature_flags/README.md +0 -0
  357. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/experimental/resources/feature_flags/__init__.py +0 -0
  358. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/experimental/resources/feature_flags/_graphql_client.py +0 -0
  359. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/experimental/resources/feature_flags/_ttl_cache.py +0 -0
  360. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/experimental/resources/feature_flags/client.py +0 -0
  361. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/experimental/resources/feature_flags/schemas.py +0 -0
  362. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/experimental/resources/feature_flags/settings.py +0 -0
  363. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/experimental/resources/group/__init__.py +0 -0
  364. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/experimental/resources/group/functions.py +0 -0
  365. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/experimental/resources/group/schemas.py +0 -0
  366. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/experimental/resources/group/service.py +0 -0
  367. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/experimental/resources/scheduled_task/__init__.py +0 -0
  368. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/experimental/resources/scheduled_task/cron.py +0 -0
  369. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/experimental/resources/scheduled_task/functions.py +0 -0
  370. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/experimental/resources/scheduled_task/schemas.py +0 -0
  371. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/experimental/resources/scheduled_task/service.py +0 -0
  372. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/experimental/resources/user/__init__.py +0 -0
  373. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/experimental/resources/user/functions.py +0 -0
  374. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/experimental/resources/user/schemas.py +0 -0
  375. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/experimental/resources/user/service.py +0 -0
  376. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/experimental/testing/__init__.py +0 -0
  377. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/framework_utilities/__init__.py +0 -0
  378. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/framework_utilities/langchain/__init__.py +0 -0
  379. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/framework_utilities/langchain/client.py +0 -0
  380. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/framework_utilities/langchain/history.py +0 -0
  381. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/framework_utilities/openai/__init__.py +0 -0
  382. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/framework_utilities/openai/client.py +0 -0
  383. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/framework_utilities/openai/message_builder.py +0 -0
  384. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/framework_utilities/utils.py +0 -0
  385. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/language_model/__init__.py +0 -0
  386. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/language_model/_responses_api_utils.py +0 -0
  387. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/language_model/builder.py +0 -0
  388. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/language_model/constants.py +0 -0
  389. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/language_model/default_language_model.py +0 -0
  390. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/language_model/functions.py +0 -0
  391. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/language_model/infos.py +0 -0
  392. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/language_model/prompt.py +0 -0
  393. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/language_model/reference.py +0 -0
  394. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/language_model/schemas.py +0 -0
  395. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/language_model/settings.py +0 -0
  396. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/language_model/stream_transform.py +0 -0
  397. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/language_model/utils.py +0 -0
  398. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/monitoring/__init__.py +0 -0
  399. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/monitoring/gunicorn.py +0 -0
  400. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/monitoring/middleware.py +0 -0
  401. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/monitoring/registry.py +0 -0
  402. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/protocols/support.py +0 -0
  403. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/services/__init__.py +0 -0
  404. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/services/chat_service.py +0 -0
  405. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/short_term_memory/__init__.py +0 -0
  406. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/short_term_memory/constants.py +0 -0
  407. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/short_term_memory/functions.py +0 -0
  408. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/short_term_memory/schemas.py +0 -0
  409. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/smart_rules/__init__.py +0 -0
  410. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/unique_toolkit/smart_rules/compile.py +0 -0
  411. {unique_toolkit-2026.28.0.dev6 → unique_toolkit-2026.28.0.dev8}/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.dev6
3
+ Version: 2026.28.0.dev8
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.dev8,<2026.28.0rc0
19
+ Requires-Dist: unique-sdk>=2026.28.0.dev11,<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.dev6"
3
+ version = "2026.28.0.dev8"
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.dev8,<2026.28.0rc0",
31
+ "unique-sdk>=2026.28.0.dev11,<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",
@@ -71,7 +71,7 @@ class ChunkRelevancySorter:
71
71
  company_id: str | None = None,
72
72
  user_id: str | None = None,
73
73
  ):
74
- if isinstance(event, (ChatEvent, BaseEvent)):
74
+ if isinstance(event, BaseEvent):
75
75
  self.chunk_relevancy_evaluator = ContextRelevancyEvaluator.from_event(event)
76
76
  else:
77
77
  [company_id, user_id] = validate_required_values([company_id, user_id])
@@ -81,7 +81,7 @@ class ContextRelevancyEvaluator:
81
81
  company_id: str | None = None,
82
82
  user_id: str | None = None,
83
83
  ):
84
- if isinstance(event, (ChatEvent, BaseEvent)):
84
+ if isinstance(event, BaseEvent):
85
85
  self.language_model_service = LanguageModelService.from_event(event)
86
86
  else:
87
87
  [company_id, user_id] = validate_required_values([company_id, user_id])
@@ -116,7 +116,7 @@ class RetrieveSearchScopeTool(Tool[RetrieveSearchScopeConfig]):
116
116
  )
117
117
 
118
118
  try:
119
- settings = UniqueSettings.from_chat_event(self._event)
119
+ settings = UniqueSettings.from_chat_event(self.event)
120
120
  kb_service = UniqueServiceFactory(
121
121
  settings=settings
122
122
  ).knowledge_base_service()
@@ -0,0 +1,24 @@
1
+ from __future__ import annotations
2
+
3
+ from pydantic import BaseModel, ConfigDict, Field
4
+ from typing_extensions import Self
5
+
6
+ from unique_toolkit.app.schemas import ChatEvent
7
+
8
+
9
+ class ToolRunContext(BaseModel):
10
+ """Tool-manager runtime state decoupled from a raw :class:`ChatEvent`."""
11
+
12
+ model_config = ConfigDict(frozen=True, arbitrary_types_allowed=True)
13
+
14
+ tool_choices: list[str] = Field(default_factory=list)
15
+ disabled_tools: list[str] = Field(default_factory=list)
16
+ tool_init_event: ChatEvent | None = None
17
+
18
+ @classmethod
19
+ def from_chat_event(cls, event: ChatEvent) -> Self:
20
+ return cls(
21
+ tool_choices=list(event.payload.tool_choices),
22
+ disabled_tools=list(event.payload.disabled_tools),
23
+ tool_init_event=event,
24
+ )
@@ -18,7 +18,8 @@ from unique_toolkit.app.schemas import ChatEvent
18
18
  from unique_toolkit.language_model import LanguageModelToolDescription
19
19
 
20
20
  if TYPE_CHECKING:
21
- pass
21
+ from unique_toolkit.language_model.service import LanguageModelService
22
+ from unique_toolkit.services.chat_service import ChatService
22
23
  from unique_toolkit.language_model.schemas import (
23
24
  LanguageModelFunction,
24
25
  )
@@ -169,6 +170,9 @@ class Tool(ABC, Generic[ConfigType]):
169
170
  def __init__(self, config: ConfigType) -> None: ...
170
171
 
171
172
  @overload
173
+ @deprecated(
174
+ "Passing event is deprecated. Use Tool(config) and inject context in run()."
175
+ )
172
176
  def __init__(
173
177
  self,
174
178
  config: ConfigType,
@@ -176,17 +180,32 @@ class Tool(ABC, Generic[ConfigType]):
176
180
  tool_progress_reporter: ToolProgressReporter | None = ...,
177
181
  ) -> None: ...
178
182
 
183
+ @overload
184
+ def __init__(
185
+ self,
186
+ config: ConfigType,
187
+ *,
188
+ chat_service: ChatService,
189
+ language_model_service: LanguageModelService,
190
+ tool_progress_reporter: ToolProgressReporter | None = ...,
191
+ ) -> None: ...
192
+
179
193
  def __init__(
180
194
  self,
181
195
  config: ConfigType,
182
196
  event: ChatEvent | None = None,
183
197
  tool_progress_reporter: ToolProgressReporter | None = None,
198
+ *,
199
+ chat_service: ChatService | None = None,
200
+ language_model_service: LanguageModelService | None = None,
184
201
  ) -> None:
185
202
  """Initialize the tool.
186
203
 
187
- Preferred (decoupled): `Tool(config)` — configuration only.
204
+ Preferred (decoupled): ``Tool(config)`` — configuration only.
188
205
 
189
- Backward compatible: `Tool(config, event, tool_progress_reporter)` — creates
206
+ Service injection: ``Tool(config, chat_service=..., language_model_service=...)``.
207
+
208
+ Backward compatible: ``Tool(config, event, tool_progress_reporter)`` — creates
190
209
  deprecated chat_service, language_model_service, message_step_logger for
191
210
  legacy subclasses.
192
211
  """
@@ -200,6 +219,25 @@ class Tool(ABC, Generic[ConfigType]):
200
219
  self.logger = getLogger(f"{module_name}.{__name__}")
201
220
  self.debug_info: dict[str, Any] = {}
202
221
 
222
+ if (chat_service is None) != (language_model_service is None):
223
+ raise ValueError(
224
+ "chat_service and language_model_service must be injected together; "
225
+ "supplying only one is not supported."
226
+ )
227
+
228
+ if chat_service is not None and language_model_service is not None:
229
+ from unique_toolkit.agentic.message_log_manager.service import (
230
+ MessageStepLogger,
231
+ )
232
+
233
+ self._tool_progress_reporter = tool_progress_reporter
234
+ self._chat_service = chat_service
235
+ self._language_model_service = language_model_service
236
+ self._message_step_logger = MessageStepLogger(
237
+ chat_service=self._chat_service,
238
+ )
239
+ return
240
+
203
241
  if event is not None:
204
242
  from unique_toolkit.agentic.message_log_manager.service import (
205
243
  MessageStepLogger,
@@ -220,11 +258,12 @@ class Tool(ABC, Generic[ConfigType]):
220
258
  "Never reuse event. Dangerous. Prefer Tool(config) and inject context in run()."
221
259
  )
222
260
  def event(self) -> ChatEvent:
223
- if not hasattr(self, "_event"):
261
+ chat_event = getattr(self, "_event", None)
262
+ if chat_event is None:
224
263
  raise AttributeError(
225
264
  "event not available (tool was initialized with config only). "
226
265
  )
227
- return self._event
266
+ return chat_event
228
267
 
229
268
  @property
230
269
  @deprecated(
@@ -12,6 +12,7 @@ from openai.types.responses import (
12
12
  response_create_params,
13
13
  )
14
14
  from pydantic import BaseModel, Field
15
+ from typing_extensions import Self
15
16
 
16
17
  from unique_toolkit._common.execution import (
17
18
  Result,
@@ -31,6 +32,7 @@ from unique_toolkit.agentic.tools.openai_builtin.base import (
31
32
  OpenAIBuiltInToolName,
32
33
  )
33
34
  from unique_toolkit.agentic.tools.openai_builtin.manager import OpenAIBuiltInToolManager
35
+ from unique_toolkit.agentic.tools.run_context import ToolRunContext
34
36
  from unique_toolkit.agentic.tools.schemas import ToolCallResponse, ToolPrompts
35
37
  from unique_toolkit.agentic.tools.tool import Tool
36
38
  from unique_toolkit.agentic.tools.tool_progress_reporter import ToolProgressReporter
@@ -88,13 +90,62 @@ class _ToolManager(Generic[_ApiMode]):
88
90
  a2a_manager: A2AManager,
89
91
  api_mode: _ApiMode,
90
92
  builtin_tool_manager: OpenAIBuiltInToolManager | None = None,
93
+ ) -> None:
94
+ self._setup(
95
+ logger=logger,
96
+ config=config,
97
+ run_context=ToolRunContext.from_chat_event(event),
98
+ tool_progress_reporter=tool_progress_reporter,
99
+ mcp_manager=mcp_manager,
100
+ a2a_manager=a2a_manager,
101
+ api_mode=api_mode,
102
+ builtin_tool_manager=builtin_tool_manager,
103
+ )
104
+
105
+ @classmethod
106
+ def from_run_context(
107
+ cls,
108
+ logger: Logger,
109
+ config: ToolManagerConfig,
110
+ *,
111
+ run_context: ToolRunContext,
112
+ tool_progress_reporter: ToolProgressReporter,
113
+ mcp_manager: MCPManager,
114
+ a2a_manager: A2AManager,
115
+ api_mode: _ApiMode,
116
+ builtin_tool_manager: OpenAIBuiltInToolManager | None = None,
117
+ ) -> Self:
118
+ instance = cls.__new__(cls)
119
+ instance._setup(
120
+ logger=logger,
121
+ config=config,
122
+ run_context=run_context,
123
+ tool_progress_reporter=tool_progress_reporter,
124
+ mcp_manager=mcp_manager,
125
+ a2a_manager=a2a_manager,
126
+ api_mode=api_mode,
127
+ builtin_tool_manager=builtin_tool_manager,
128
+ )
129
+ return instance
130
+
131
+ def _setup(
132
+ self,
133
+ *,
134
+ logger: Logger,
135
+ config: ToolManagerConfig,
136
+ run_context: ToolRunContext,
137
+ tool_progress_reporter: ToolProgressReporter,
138
+ mcp_manager: MCPManager,
139
+ a2a_manager: A2AManager,
140
+ api_mode: _ApiMode,
141
+ builtin_tool_manager: OpenAIBuiltInToolManager | None,
91
142
  ) -> None:
92
143
  self._logger = logger
93
144
  self._config = config
94
145
  self._tool_progress_reporter = tool_progress_reporter
95
146
  self._tools: list[Tool[Any] | OpenAIBuiltInTool[Any]] = []
96
- self._tool_choices = event.payload.tool_choices
97
- self._disabled_tools = event.payload.disabled_tools
147
+ self._tool_choices = run_context.tool_choices
148
+ self._disabled_tools = run_context.disabled_tools
98
149
  self._exclusive_tools = [
99
150
  tool.name for tool in self._config.tools if tool.is_exclusive
100
151
  ]
@@ -104,17 +155,33 @@ class _ToolManager(Generic[_ApiMode]):
104
155
  self._a2a_manager = a2a_manager
105
156
  self._builtin_tool_manager = builtin_tool_manager
106
157
  self._api_mode = api_mode
107
- self._init__tools(event)
108
-
109
- def _init__tools(self, event: ChatEvent) -> None:
158
+ self._sub_agents: list[SubAgentTool] = []
159
+ self._builtin_tools: list[OpenAIBuiltInTool[Any]] = []
160
+ self._mcp_tools: list[Tool[Any]] = []
161
+ self._internal_tools: list[Tool[Any]] = []
162
+ self.available_tools: list[
163
+ Tool[Any] | OpenAIBuiltInTool[Any] | SubAgentTool
164
+ ] = []
165
+ self._init__tools(run_context.tool_init_event)
166
+
167
+ def _init__tools(self, tool_init_event: ChatEvent | None) -> None:
110
168
  tool_choices = self._tool_choices
111
169
  tool_configs = self._config.tools
112
170
  self._logger.info("Initializing tool definitions...")
113
171
  self._logger.info(f"Tool choices: {tool_choices}")
114
172
 
115
- tool_configs, sub_agents = self._a2a_manager.get_all_sub_agents(
116
- tool_configs, event
117
- )
173
+ if tool_init_event is not None:
174
+ tool_configs, sub_agents = self._a2a_manager.get_all_sub_agents(
175
+ tool_configs,
176
+ tool_init_event,
177
+ )
178
+ else:
179
+ tool_configs = [
180
+ tool_config
181
+ for tool_config in tool_configs
182
+ if not tool_config.is_sub_agent
183
+ ]
184
+ sub_agents = []
118
185
  self._sub_agents = sub_agents
119
186
 
120
187
  registered_tool_names = set(t.name for t in self._sub_agents)
@@ -133,18 +200,27 @@ class _ToolManager(Generic[_ApiMode]):
133
200
  registered_tool_names.update(t.name for t in self._mcp_tools)
134
201
 
135
202
  # Build internal tools from configurations
136
- self._internal_tools = [
137
- ToolFactory.build_tool_with_settings(
138
- t.name,
139
- t,
140
- t.configuration,
141
- event,
142
- tool_progress_reporter=self._tool_progress_reporter,
143
- )
144
- for t in tool_configs
145
- if t.name not in registered_tool_names # Skip already handled tools
146
- and t.name not in OpenAIBuiltInToolName # Safeguard
147
- ]
203
+ self._internal_tools.clear()
204
+ for t in tool_configs:
205
+ if t.name in registered_tool_names:
206
+ continue
207
+ if t.name in OpenAIBuiltInToolName:
208
+ continue
209
+ if tool_init_event is not None:
210
+ built_tool = ToolFactory.build_tool_with_settings(
211
+ t.name,
212
+ t,
213
+ t.configuration,
214
+ tool_init_event,
215
+ tool_progress_reporter=self._tool_progress_reporter,
216
+ )
217
+ else:
218
+ self._logger.info(
219
+ "Skipping internal tool '%s' (requires chat event for initialization)",
220
+ t.name,
221
+ )
222
+ continue
223
+ self._internal_tools.append(built_tool)
148
224
 
149
225
  # Combine all types of tools
150
226
  self.available_tools = (
@@ -607,6 +683,30 @@ class ToolManager(_ToolManager[Literal["completions"]]):
607
683
  builtin_tool_manager=None,
608
684
  )
609
685
 
686
+ @classmethod
687
+ def from_run_context(
688
+ cls,
689
+ logger: Logger,
690
+ config: ToolManagerConfig,
691
+ *,
692
+ run_context: ToolRunContext,
693
+ tool_progress_reporter: ToolProgressReporter,
694
+ mcp_manager: MCPManager,
695
+ a2a_manager: A2AManager,
696
+ api_mode: Literal["completions"] = "completions",
697
+ builtin_tool_manager: OpenAIBuiltInToolManager | None = None,
698
+ ) -> Self:
699
+ return super().from_run_context(
700
+ logger=logger,
701
+ config=config,
702
+ run_context=run_context,
703
+ tool_progress_reporter=tool_progress_reporter,
704
+ mcp_manager=mcp_manager,
705
+ a2a_manager=a2a_manager,
706
+ api_mode=api_mode,
707
+ builtin_tool_manager=builtin_tool_manager,
708
+ )
709
+
610
710
 
611
711
  class ResponsesApiToolManager(_ToolManager[Literal["responses"]]):
612
712
  def __init__(
@@ -631,6 +731,33 @@ class ResponsesApiToolManager(_ToolManager[Literal["responses"]]):
631
731
  builtin_tool_manager=builtin_tool_manager,
632
732
  )
633
733
 
734
+ @classmethod
735
+ def from_run_context(
736
+ cls,
737
+ logger: Logger,
738
+ config: ToolManagerConfig,
739
+ *,
740
+ run_context: ToolRunContext,
741
+ tool_progress_reporter: ToolProgressReporter,
742
+ mcp_manager: MCPManager,
743
+ a2a_manager: A2AManager,
744
+ api_mode: Literal["responses"] = "responses",
745
+ builtin_tool_manager: OpenAIBuiltInToolManager | None = None,
746
+ ) -> Self:
747
+ if builtin_tool_manager is None:
748
+ msg = "builtin_tool_manager is required for ResponsesApiToolManager"
749
+ raise ValueError(msg)
750
+ return super().from_run_context(
751
+ logger=logger,
752
+ config=config,
753
+ run_context=run_context,
754
+ tool_progress_reporter=tool_progress_reporter,
755
+ mcp_manager=mcp_manager,
756
+ a2a_manager=a2a_manager,
757
+ api_mode=api_mode,
758
+ builtin_tool_manager=builtin_tool_manager,
759
+ )
760
+
634
761
  def get_required_include_params(self) -> list[ResponseIncludable]:
635
762
  """Return Responses API include params required by all active built-in tools."""
636
763
  return self._builtin_tool_manager.get_required_include_params()
@@ -1,5 +1,5 @@
1
1
  from enum import StrEnum
2
- from typing import Annotated, Any, Generic, Literal, TypeVar
2
+ from typing import Annotated, Any, Generic, Literal, TypeVar, override
3
3
 
4
4
  from pydantic import (
5
5
  AliasChoices,
@@ -20,13 +20,13 @@ from unique_sdk.api_resources._agentic_table import (
20
20
  SheetType,
21
21
  )
22
22
 
23
+ from unique_toolkit._common.exception import ConfigurationException
23
24
  from unique_toolkit._common.pydantic_helpers import get_configuration_dict
24
25
  from unique_toolkit.app.schemas import (
25
- ChatEvent,
26
- ChatEventAssistantMessage,
27
- ChatEventUserMessage,
28
- Correlation,
26
+ AssistantWebhookEvent,
27
+ BaseEventPayload,
29
28
  )
29
+ from unique_toolkit.app.unique_settings import UniqueChatEventFilterOptions
30
30
  from unique_toolkit.language_model.schemas import (
31
31
  LanguageModelMessageRole,
32
32
  LanguageModelMessages,
@@ -112,27 +112,27 @@ A = TypeVar("A", bound=MagicTableAction)
112
112
  T = TypeVar("T", bound=BaseMetadata)
113
113
 
114
114
 
115
- class MagicTableBasePayload(BaseModel, Generic[A, T]):
115
+ class MagicTableBasePayload(BaseEventPayload, Generic[A, T]):
116
+ """Magic-table-specific payload.
117
+
118
+ Inherits the common envelope fields (``name``, ``chat_id``, ``assistant_id``,
119
+ ``configuration``, ``metadata_filter``, ``correlation``) from
120
+ :class:`BaseEventPayload` and adds magic-table-only fields.
121
+
122
+ Note: previously this carried stub-empty ``user_message`` /
123
+ ``assistant_message`` defaults so that ``MagicTableEvent`` could pose as
124
+ a ``ChatEvent``. That coupling is gone; magic-table flows that need a
125
+ chat context should construct a :class:`UniqueContext` explicitly.
126
+ """
127
+
116
128
  model_config = get_configuration_dict()
117
- name: str = Field(description="The name of the module")
118
- sheet_name: str
119
129
 
130
+ # Optional on magic-table (BaseEventPayload requires it for chat).
131
+ configuration: dict[str, Any] = Field(default_factory=dict)
132
+ sheet_name: str
120
133
  action: A
121
- chat_id: str
122
- assistant_id: str
123
134
  table_id: str
124
- user_message: ChatEventUserMessage = Field(
125
- default=ChatEventUserMessage(
126
- id="", text="", original_text="", created_at="", language=""
127
- )
128
- )
129
- assistant_message: ChatEventAssistantMessage = Field(
130
- default=ChatEventAssistantMessage(id="", created_at="")
131
- )
132
- configuration: dict[str, Any] = {}
133
135
  metadata: T
134
- metadata_filter: dict[str, Any] | None = None
135
- correlation: Correlation | None = None
136
136
 
137
137
 
138
138
  ########### Specialized Payload definitions ###########
@@ -263,10 +263,48 @@ PayloadTypes = (
263
263
  MagicTablePayloadTypes = Annotated[PayloadTypes, Field(discriminator="action")]
264
264
 
265
265
 
266
- class MagicTableEvent(ChatEvent):
267
- # TODO(UN-19532): investigate making ChatEvent generic to avoid these overrides
266
+ class MagicTableEvent(
267
+ AssistantWebhookEvent[UniqueChatEventFilterOptions, MagicTablePayloadTypes]
268
+ ):
269
+ """Magic-table webhook event, sibling of :class:`ChatEvent`.
270
+
271
+ No longer extends ``ChatEvent``; both events are siblings under
272
+ :class:`AssistantWebhookEvent`. This makes ``isinstance(magic_table_event,
273
+ ChatEvent)`` correctly return ``False`` and prevents silently passing a
274
+ magic-table event to services that require chat-only fields.
275
+ """
276
+
268
277
  event: MagicTableEventTypes # pyright: ignore[reportIncompatibleVariableOverride]
269
- payload: MagicTablePayloadTypes # pyright: ignore[reportIncompatibleVariableOverride]
278
+
279
+ @override
280
+ def filter_event(
281
+ self, *, filter_options: UniqueChatEventFilterOptions | None = None
282
+ ) -> bool:
283
+ if filter_options is None:
284
+ return False
285
+
286
+ if not filter_options.assistant_ids and not filter_options.references_in_code:
287
+ raise ConfigurationException(
288
+ "No filter options provided, all events will be filtered! \n"
289
+ "Please define: \n"
290
+ " - 'UNIQUE_CHAT_EVENT_FILTER_OPTIONS_ASSISTANT_IDS' \n"
291
+ " - 'UNIQUE_CHAT_EVENT_FILTER_OPTIONS_REFERENCES_IN_CODE' \n"
292
+ "in your environment variables."
293
+ )
294
+
295
+ if (
296
+ filter_options.assistant_ids
297
+ and self.payload.assistant_id not in filter_options.assistant_ids
298
+ ):
299
+ return True
300
+
301
+ if (
302
+ filter_options.references_in_code
303
+ and self.payload.name not in filter_options.references_in_code
304
+ ):
305
+ return True
306
+
307
+ return super().filter_event(filter_options=filter_options)
270
308
 
271
309
 
272
310
  class LogDetail(BaseModel):
@@ -0,0 +1,67 @@
1
+ """Synthetic :class:`ChatEvent` for magic-table runs with chat-typed toolkit APIs."""
2
+
3
+ from unique_toolkit.agentic_table.schemas import MagicTableEvent
4
+ from unique_toolkit.app.schemas import (
5
+ ChatEvent,
6
+ ChatEventAssistantMessage,
7
+ ChatEventPayload,
8
+ ChatEventUserMessage,
9
+ EventName,
10
+ )
11
+ from unique_toolkit.app.unique_settings import (
12
+ MAGIC_TABLE_STREAMING_ASSISTANT_MESSAGE_ID,
13
+ MAGIC_TABLE_STREAMING_USER_MESSAGE_ID,
14
+ )
15
+
16
+ _MAGIC_TABLE_STREAMING_MESSAGE_CREATED_AT = "1970-01-01T00:00:00Z"
17
+
18
+
19
+ def build_synthetic_chat_event(
20
+ event: MagicTableEvent,
21
+ *,
22
+ event_id: str | None = None,
23
+ description: str = "magic-table",
24
+ ) -> ChatEvent:
25
+ """Build a :class:`ChatEvent` for evaluators/tools that still require chat typing.
26
+
27
+ Discouraged for new code: prefer :meth:`UniqueContext.from_magic_table_event`
28
+ and ``Service.from_context(...)`` / :meth:`ToolManager.from_run_context`
29
+ so callers do not depend on a fabricated chat envelope.
30
+
31
+ Magic-table runs create messages dynamically; placeholder message ids are
32
+ sufficient for search tooling and hallucination evaluation scoping.
33
+ """
34
+ payload = event.payload
35
+ chat_id = payload.chat_id
36
+ if not chat_id:
37
+ msg = (
38
+ "Magic-table event is missing chat_id; "
39
+ "chat-scoped services cannot be built."
40
+ )
41
+ raise ValueError(msg)
42
+ return ChatEvent(
43
+ id=event_id or event.id,
44
+ event=EventName.EXTERNAL_MODULE_CHOSEN,
45
+ user_id=event.user_id,
46
+ company_id=event.company_id,
47
+ payload=ChatEventPayload(
48
+ name=payload.name,
49
+ chat_id=chat_id,
50
+ assistant_id=payload.assistant_id,
51
+ description=description,
52
+ configuration=payload.configuration,
53
+ metadata_filter=payload.metadata_filter,
54
+ correlation=payload.correlation,
55
+ user_message=ChatEventUserMessage(
56
+ id=MAGIC_TABLE_STREAMING_USER_MESSAGE_ID,
57
+ text="",
58
+ original_text="",
59
+ created_at=_MAGIC_TABLE_STREAMING_MESSAGE_CREATED_AT,
60
+ language="EN",
61
+ ),
62
+ assistant_message=ChatEventAssistantMessage(
63
+ id=MAGIC_TABLE_STREAMING_ASSISTANT_MESSAGE_ID,
64
+ created_at=_MAGIC_TABLE_STREAMING_MESSAGE_CREATED_AT,
65
+ ),
66
+ ),
67
+ )