unique_toolkit 2026.36.0__tar.gz → 2026.36.0.dev1__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 (431) hide show
  1. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/PKG-INFO +2 -2
  2. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/pyproject.toml +2 -2
  3. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/_common/pydantic/rjsf_tags.py +0 -23
  4. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/feature_flags/feature_flags.py +5 -9
  5. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/history_manager/history_construction_with_contents.py +1 -3
  6. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/tools/a2a/tool/service.py +51 -1
  7. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/tools/mcp/tool_wrapper.py +42 -1
  8. unique_toolkit-2026.36.0.dev1/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/postprocessors/artifacts.py +103 -0
  9. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/postprocessors/generated_files.py +0 -10
  10. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic_table/__init__.py +0 -8
  11. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic_table/schemas.py +2 -102
  12. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic_table/service.py +31 -75
  13. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/chat/responses_api.py +1 -3
  14. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/content/functions.py +0 -34
  15. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/experimental/components/__init__.py +3 -6
  16. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/experimental/components/content_tree/__init__.py +18 -14
  17. unique_toolkit-2026.36.0.dev1/unique_toolkit/experimental/components/content_tree/functions.py +247 -0
  18. unique_toolkit-2026.36.0.dev1/unique_toolkit/experimental/components/content_tree/schemas.py +106 -0
  19. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/experimental/components/content_tree/service.py +83 -244
  20. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/experimental/content_tree/__init__.py +10 -4
  21. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/chat_completions/complete_with_references.py +4 -7
  22. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/responses/complete_with_references.py +8 -12
  23. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/language_model/functions.py +2 -11
  24. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/language_model/infos.py +0 -61
  25. unique_toolkit-2026.36.0.dev1/unique_toolkit/language_model/invocation_stats.py +77 -0
  26. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/language_model/service.py +1 -15
  27. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/services/chat_service.py +7 -0
  28. unique_toolkit-2026.36.0/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/postprocessors/artifacts.py +0 -213
  29. unique_toolkit-2026.36.0/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/postprocessors/office_preview.py +0 -154
  30. unique_toolkit-2026.36.0/unique_toolkit/experimental/components/content_tree/functions.py +0 -380
  31. unique_toolkit-2026.36.0/unique_toolkit/experimental/components/content_tree/schemas.py +0 -261
  32. unique_toolkit-2026.36.0/unique_toolkit/experimental/integrations/openai/streaming/event_routing/_model_params.py +0 -133
  33. unique_toolkit-2026.36.0/unique_toolkit/language_model/invocation_stats.py +0 -173
  34. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/README.md +0 -0
  35. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/__init__.py +0 -0
  36. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/_common/__init__.py +0 -0
  37. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/_common/_base_service.py +0 -0
  38. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/_common/_time_utils.py +0 -0
  39. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/_common/api_calling/human_verification_manager.py +0 -0
  40. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/_common/base_model_type_attribute.py +0 -0
  41. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/_common/chunk_relevancy_sorter/config.py +0 -0
  42. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/_common/chunk_relevancy_sorter/exception.py +0 -0
  43. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/_common/chunk_relevancy_sorter/schemas.py +0 -0
  44. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/_common/chunk_relevancy_sorter/service.py +0 -0
  45. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/_common/chunk_relevancy_sorter/tests/test_service.py +0 -0
  46. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/_common/config_checker/README.md +0 -0
  47. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/_common/config_checker/__init__.py +0 -0
  48. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/_common/config_checker/__main__.py +0 -0
  49. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/_common/config_checker/cli.py +0 -0
  50. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/_common/config_checker/differ.py +0 -0
  51. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/_common/config_checker/exporter.py +0 -0
  52. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/_common/config_checker/models.py +0 -0
  53. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/_common/config_checker/registry.py +0 -0
  54. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/_common/config_checker/validator.py +0 -0
  55. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/_common/default_language_model.py +0 -0
  56. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/_common/docx_generator/__init__.py +0 -0
  57. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/_common/docx_generator/config.py +0 -0
  58. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/_common/docx_generator/pandoc_converter.py +0 -0
  59. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/_common/docx_generator/schemas.py +0 -0
  60. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/_common/docx_generator/service.py +0 -0
  61. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/_common/docx_generator/template/Doc Template.docx +0 -0
  62. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/_common/endpoint_builder.py +0 -0
  63. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/_common/endpoint_requestor.py +0 -0
  64. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/_common/event_bus.py +0 -0
  65. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/_common/exception.py +0 -0
  66. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/_common/execution.py +0 -0
  67. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/_common/experimental/endpoint_builder.py +0 -0
  68. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/_common/experimental/endpoint_requestor.py +0 -0
  69. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/_common/experimental/write_up_agent/README.md +0 -0
  70. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/_common/experimental/write_up_agent/__init__.py +0 -0
  71. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/_common/experimental/write_up_agent/agent.py +0 -0
  72. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/_common/experimental/write_up_agent/config.py +0 -0
  73. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/_common/experimental/write_up_agent/examples/data.csv +0 -0
  74. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/_common/experimental/write_up_agent/examples/example_usage.py +0 -0
  75. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/_common/experimental/write_up_agent/schemas.py +0 -0
  76. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/_common/experimental/write_up_agent/services/__init__.py +0 -0
  77. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/_common/experimental/write_up_agent/services/dataframe_handler/__init__.py +0 -0
  78. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/_common/experimental/write_up_agent/services/dataframe_handler/exceptions.py +0 -0
  79. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/_common/experimental/write_up_agent/services/dataframe_handler/service.py +0 -0
  80. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/_common/experimental/write_up_agent/services/dataframe_handler/utils.py +0 -0
  81. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/__init__.py +0 -0
  82. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/config.py +0 -0
  83. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/exceptions.py +0 -0
  84. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/prompts/config.py +0 -0
  85. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/prompts/system_prompt.j2 +0 -0
  86. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/prompts/user_prompt.j2 +0 -0
  87. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/service.py +0 -0
  88. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/_common/experimental/write_up_agent/services/template_handler/__init__.py +0 -0
  89. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/_common/experimental/write_up_agent/services/template_handler/default_template.j2 +0 -0
  90. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/_common/experimental/write_up_agent/services/template_handler/exceptions.py +0 -0
  91. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/_common/experimental/write_up_agent/services/template_handler/service.py +0 -0
  92. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/_common/experimental/write_up_agent/services/template_handler/utils.py +0 -0
  93. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/_common/experimental/write_up_agent/utils.py +0 -0
  94. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/_common/feature_flags/schema.py +0 -0
  95. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/_common/metadata_filter_scope.py +0 -0
  96. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/_common/pydantic_helpers.py +0 -0
  97. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/_common/referencing.py +0 -0
  98. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/_common/string_utilities.py +0 -0
  99. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/_common/tests/test_referencing.py +0 -0
  100. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/_common/tests/test_string_utilities.py +0 -0
  101. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/_common/token/__init__.py +0 -0
  102. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/_common/token/image_token_counting.py +0 -0
  103. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/_common/token/token_counting.py +0 -0
  104. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/_common/token/tokenizers/deepseek/tokenizer.json +0 -0
  105. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/_common/token/tokenizers/qwen/tokenizer.json +0 -0
  106. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/_common/utils/__init__.py +0 -0
  107. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/_common/utils/files.py +0 -0
  108. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/_common/utils/image/encode.py +0 -0
  109. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/_common/utils/jinja/helpers.py +0 -0
  110. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/_common/utils/jinja/render.py +0 -0
  111. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/_common/utils/jinja/schema.py +0 -0
  112. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/_common/utils/jinja/utils.py +0 -0
  113. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/_common/utils/structured_output/__init__.py +0 -0
  114. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/_common/utils/structured_output/schema.py +0 -0
  115. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/_common/utils/write_configuration.py +0 -0
  116. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/_common/validate_required_values.py +0 -0
  117. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/_common/validators.py +0 -0
  118. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/__init__.py +0 -0
  119. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/debug_info_manager/debug_info_manager.py +0 -0
  120. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/debug_info_manager/test/test_debug_info_manager.py +0 -0
  121. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/evaluation/config.py +0 -0
  122. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/evaluation/context_relevancy/prompts/__init__.py +0 -0
  123. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/evaluation/context_relevancy/prompts/system_prompt.j2 +0 -0
  124. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/evaluation/context_relevancy/prompts/user_prompt.j2 +0 -0
  125. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/evaluation/context_relevancy/schema.py +0 -0
  126. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/evaluation/context_relevancy/service.py +0 -0
  127. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/evaluation/evaluation_manager.py +0 -0
  128. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/evaluation/exception.py +0 -0
  129. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/evaluation/hallucination/constants.py +0 -0
  130. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/evaluation/hallucination/hallucination_evaluation.py +0 -0
  131. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/evaluation/hallucination/prompts/__init__.py +0 -0
  132. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/evaluation/hallucination/prompts/system_prompt.j2 +0 -0
  133. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/evaluation/hallucination/prompts/user_prompt.j2 +0 -0
  134. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/evaluation/hallucination/service.py +0 -0
  135. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/evaluation/hallucination/utils.py +0 -0
  136. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/evaluation/output_parser.py +0 -0
  137. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/evaluation/schemas.py +0 -0
  138. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/evaluation/tests/fixtures.py +0 -0
  139. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/evaluation/tests/test_config.py +0 -0
  140. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/evaluation/tests/test_context_relevancy_service.py +0 -0
  141. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/evaluation/tests/test_hallucination_constants.py +0 -0
  142. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/evaluation/tests/test_hallucination_external_context.py +0 -0
  143. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/evaluation/tests/test_hallucination_utils.py +0 -0
  144. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/evaluation/tests/test_output_parser.py +0 -0
  145. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/evaluation/tests/test_prompt_loaders.py +0 -0
  146. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/evaluation/utils.py +0 -0
  147. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/feature_flags/__init__.py +0 -0
  148. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/history_manager/history_manager.py +0 -0
  149. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/history_manager/loop_token_reducer.py +0 -0
  150. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/history_manager/settings.py +0 -0
  151. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/history_manager/utils.py +0 -0
  152. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/loop_runner/__init__.py +0 -0
  153. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/loop_runner/_iteration_handler_utils.py +0 -0
  154. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/loop_runner/_responses_iteration_handler_utils.py +0 -0
  155. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/loop_runner/_responses_stream_handler_utils.py +0 -0
  156. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/loop_runner/_stream_handler_utils.py +0 -0
  157. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/loop_runner/base.py +0 -0
  158. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/loop_runner/middleware/__init__.py +0 -0
  159. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/loop_runner/middleware/planning/__init__.py +0 -0
  160. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/loop_runner/middleware/planning/planning.py +0 -0
  161. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/loop_runner/middleware/planning/schema.py +0 -0
  162. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/loop_runner/runners/__init__.py +0 -0
  163. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/loop_runner/runners/basic.py +0 -0
  164. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/loop_runner/runners/mistral/__init__.py +0 -0
  165. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/loop_runner/runners/mistral/mistral_runner.py +0 -0
  166. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/loop_runner/runners/qwen/__init__.py +0 -0
  167. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/loop_runner/runners/qwen/helpers.py +0 -0
  168. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/loop_runner/runners/qwen/qwen_runner.py +0 -0
  169. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/message_log_manager/__init__.py +0 -0
  170. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/message_log_manager/service.py +0 -0
  171. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/message_log_order.py +0 -0
  172. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/postprocessor/postprocessor_manager.py +0 -0
  173. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/reference_manager/reference_manager.py +0 -0
  174. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/reference_manager/tests/test_external_context.py +0 -0
  175. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/responses_api/__init__.py +0 -0
  176. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/responses_api/postprocessors/code_display.py +0 -0
  177. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/responses_api/postprocessors/generated_files.py +0 -0
  178. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/responses_api/stream_handler.py +0 -0
  179. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/short_term_memory_manager/persistent_short_term_memory_manager.py +0 -0
  180. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/thinking_manager/thinking_manager.py +0 -0
  181. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/tools/__init__.py +0 -0
  182. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/tools/a2a/__init__.py +0 -0
  183. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/tools/a2a/config.py +0 -0
  184. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/tools/a2a/evaluation/__init__.py +0 -0
  185. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/tools/a2a/evaluation/_utils.py +0 -0
  186. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/tools/a2a/evaluation/config.py +0 -0
  187. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/tools/a2a/evaluation/evaluator.py +0 -0
  188. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/tools/a2a/evaluation/summarization_user_message.j2 +0 -0
  189. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/tools/a2a/manager.py +0 -0
  190. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/tools/a2a/postprocessing/__init__.py +0 -0
  191. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/tools/a2a/postprocessing/_display_utils.py +0 -0
  192. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/tools/a2a/postprocessing/_ref_utils.py +0 -0
  193. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/tools/a2a/postprocessing/config.py +0 -0
  194. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/tools/a2a/postprocessing/display.py +0 -0
  195. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/tools/a2a/postprocessing/references.py +0 -0
  196. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/tools/a2a/postprocessing/test/test_display.py +0 -0
  197. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/tools/a2a/postprocessing/test/test_display_utils.py +0 -0
  198. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/tools/a2a/postprocessing/test/test_ref_utils.py +0 -0
  199. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/tools/a2a/postprocessing/test/test_references.py +0 -0
  200. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/tools/a2a/prompts.py +0 -0
  201. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/tools/a2a/response_watcher/__init__.py +0 -0
  202. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/tools/a2a/response_watcher/service.py +0 -0
  203. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/tools/a2a/tool/__init__.py +0 -0
  204. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/tools/a2a/tool/_memory.py +0 -0
  205. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/tools/a2a/tool/_schema.py +0 -0
  206. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/tools/a2a/tool/config.py +0 -0
  207. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/tools/a2a/tool/test/test_service_utils.py +0 -0
  208. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/tools/agent_chunks_hanlder.py +0 -0
  209. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/tools/config.py +0 -0
  210. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/tools/experimental/__init__.py +0 -0
  211. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/tools/experimental/ask_user_tool/__init__.py +0 -0
  212. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/tools/experimental/ask_user_tool/config.py +0 -0
  213. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/tools/experimental/ask_user_tool/tool.py +0 -0
  214. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/tools/experimental/open_file_tool/__init__.py +0 -0
  215. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/tools/experimental/open_file_tool/config.py +0 -0
  216. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/tools/experimental/open_file_tool/runtime.py +0 -0
  217. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/tools/experimental/open_file_tool/tool.py +0 -0
  218. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/tools/experimental/retrieve_search_scope_tool/__init__.py +0 -0
  219. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/tools/experimental/retrieve_search_scope_tool/config.py +0 -0
  220. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/tools/experimental/retrieve_search_scope_tool/tool.py +0 -0
  221. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/tools/experimental/todo/__init__.py +0 -0
  222. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/tools/experimental/todo/config.py +0 -0
  223. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/tools/experimental/todo/prompts/__init__.py +0 -0
  224. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/tools/experimental/todo/prompts/execution_reminder.j2 +0 -0
  225. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/tools/experimental/todo/prompts/system_prompt.j2 +0 -0
  226. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/tools/experimental/todo/prompts/tool_description.j2 +0 -0
  227. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/tools/experimental/todo/prompts/verification_nudge.j2 +0 -0
  228. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/tools/experimental/todo/schemas.py +0 -0
  229. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/tools/experimental/todo/service.py +0 -0
  230. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/tools/factory.py +0 -0
  231. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/tools/mcp/__init__.py +0 -0
  232. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/tools/mcp/manager.py +0 -0
  233. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/tools/mcp/models.py +0 -0
  234. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/tools/names.py +0 -0
  235. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/tools/openai_builtin/__init__.py +0 -0
  236. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/tools/openai_builtin/base.py +0 -0
  237. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/__init__.py +0 -0
  238. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/activator/__init__.py +0 -0
  239. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/activator/config.py +0 -0
  240. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/activator/service.py +0 -0
  241. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/builder/__init__.py +0 -0
  242. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/builder/_container.py +0 -0
  243. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/builder/_files.py +0 -0
  244. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/builder/_memory.py +0 -0
  245. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/builder/builder.py +0 -0
  246. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/config.py +0 -0
  247. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/postprocessors/__init__.py +0 -0
  248. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/postprocessors/code_display.py +0 -0
  249. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/schemas.py +0 -0
  250. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/tool/__init__.py +0 -0
  251. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/tool/config.py +0 -0
  252. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/tool/service.py +0 -0
  253. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/tools/openai_builtin/manager.py +0 -0
  254. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/tools/run_context.py +0 -0
  255. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/tools/schemas.py +0 -0
  256. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/tools/test/test_mcp_manager.py +0 -0
  257. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/tools/test/test_tool_progress_reporter.py +0 -0
  258. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/tools/tool.py +0 -0
  259. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/tools/tool_manager.py +0 -0
  260. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/tools/tool_progress_reporter.py +0 -0
  261. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/tools/utils/__init__.py +0 -0
  262. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/tools/utils/source_handling/__init__.py +0 -0
  263. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/tools/utils/source_handling/schema.py +0 -0
  264. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/tools/utils/source_handling/source_formatting.py +0 -0
  265. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/tools/utils/source_handling/tests/test_source_formatting.py +0 -0
  266. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic_table/synthetic_chat_event.py +0 -0
  267. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/app/__init__.py +0 -0
  268. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/app/chat_event_filter_options_settings.py +0 -0
  269. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/app/dev_util.py +0 -0
  270. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/app/fast_api_factory.py +0 -0
  271. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/app/feature_flags.py +0 -0
  272. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/app/find_env_file.py +0 -0
  273. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/app/init_logging.py +0 -0
  274. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/app/init_sdk.py +0 -0
  275. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/app/performance/async_tasks.py +0 -0
  276. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/app/performance/async_wrapper.py +0 -0
  277. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/app/schemas.py +0 -0
  278. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/app/unique_settings.py +0 -0
  279. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/app/verification.py +0 -0
  280. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/app/webhook.py +0 -0
  281. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/chat/__init__.py +0 -0
  282. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/chat/cancellation.py +0 -0
  283. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/chat/constants.py +0 -0
  284. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/chat/deprecated/__init__.py +0 -0
  285. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/chat/deprecated/service.py +0 -0
  286. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/chat/functions.py +0 -0
  287. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/chat/rendering.py +0 -0
  288. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/chat/schemas.py +0 -0
  289. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/chat/service.py +0 -0
  290. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/chat/state.py +0 -0
  291. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/chat/utils.py +0 -0
  292. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/content/__init__.py +0 -0
  293. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/content/constants.py +0 -0
  294. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/content/schemas.py +0 -0
  295. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/content/service.py +0 -0
  296. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/content/smart_rules.py +0 -0
  297. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/content/utils.py +0 -0
  298. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/data_extraction/README.md +0 -0
  299. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/data_extraction/__init__.py +0 -0
  300. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/data_extraction/augmented/__init__.py +0 -0
  301. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/data_extraction/augmented/service.py +0 -0
  302. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/data_extraction/base.py +0 -0
  303. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/data_extraction/basic/__init__.py +0 -0
  304. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/data_extraction/basic/config.py +0 -0
  305. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/data_extraction/basic/prompt.py +0 -0
  306. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/data_extraction/basic/service.py +0 -0
  307. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/elicitation/__init__.py +0 -0
  308. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/elicitation/constants.py +0 -0
  309. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/elicitation/exceptions.py +0 -0
  310. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/elicitation/functions.py +0 -0
  311. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/elicitation/schemas.py +0 -0
  312. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/elicitation/service.py +0 -0
  313. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/embedding/__init__.py +0 -0
  314. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/embedding/constants.py +0 -0
  315. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/embedding/functions.py +0 -0
  316. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/embedding/schemas.py +0 -0
  317. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/embedding/service.py +0 -0
  318. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/embedding/utils.py +0 -0
  319. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/experimental/README.md +0 -0
  320. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/experimental/__init__.py +0 -0
  321. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/experimental/_internal/__init__.py +0 -0
  322. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/experimental/_internal/streaming/__init__.py +0 -0
  323. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/experimental/_internal/streaming/common.py +0 -0
  324. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/experimental/_internal/streaming/pattern_replacer.py +0 -0
  325. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/experimental/components/_base.py +0 -0
  326. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/experimental/components/internal_search/__init__.py +0 -0
  327. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/experimental/components/internal_search/base/__init__.py +0 -0
  328. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/experimental/components/internal_search/base/config.py +0 -0
  329. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/experimental/components/internal_search/base/schemas.py +0 -0
  330. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/experimental/components/internal_search/base/service.py +0 -0
  331. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/experimental/components/internal_search/base/utils.py +0 -0
  332. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/experimental/components/internal_search/chat/__init__.py +0 -0
  333. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/experimental/components/internal_search/chat/config.py +0 -0
  334. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/experimental/components/internal_search/chat/schemas.py +0 -0
  335. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/experimental/components/internal_search/chat/service.py +0 -0
  336. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/experimental/components/internal_search/knowledge_base/__init__.py +0 -0
  337. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/experimental/components/internal_search/knowledge_base/config.py +0 -0
  338. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/experimental/components/internal_search/knowledge_base/schemas.py +0 -0
  339. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/experimental/components/internal_search/knowledge_base/service.py +0 -0
  340. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/experimental/components/internal_search/post_processing/__init__.py +0 -0
  341. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/experimental/components/internal_search/post_processing/config.py +0 -0
  342. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/experimental/components/internal_search/post_processing/service.py +0 -0
  343. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/experimental/identity/__init__.py +0 -0
  344. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/experimental/integrations/__init__.py +0 -0
  345. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/experimental/integrations/openai/__init__.py +0 -0
  346. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/experimental/integrations/openai/streaming/__init__.py +0 -0
  347. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/__init__.py +0 -0
  348. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/_async_bridge.py +0 -0
  349. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/chat_completions/__init__.py +0 -0
  350. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/chat_completions/stream_event_router.py +0 -0
  351. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/chat_completions/text_event_handler.py +0 -0
  352. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/chat_completions/tool_call_event_handler.py +0 -0
  353. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/events.py +0 -0
  354. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/protocols/__init__.py +0 -0
  355. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/protocols/chat_completions.py +0 -0
  356. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/protocols/responses.py +0 -0
  357. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/responses/__init__.py +0 -0
  358. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/responses/code_interpreter_event_handler.py +0 -0
  359. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/responses/completed_event_handler.py +0 -0
  360. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/responses/stream_event_router.py +0 -0
  361. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/responses/text_delta_event_handler.py +0 -0
  362. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/responses/tool_call_event_handler.py +0 -0
  363. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/subscribers/__init__.py +0 -0
  364. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/subscribers/message_persister.py +0 -0
  365. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/subscribers/progress_log_persister.py +0 -0
  366. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/experimental/resources/__init__.py +0 -0
  367. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/experimental/resources/content_folder/__init__.py +0 -0
  368. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/experimental/resources/content_folder/functions.py +0 -0
  369. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/experimental/resources/content_folder/schemas.py +0 -0
  370. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/experimental/resources/content_folder/service.py +0 -0
  371. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/experimental/resources/facades/__init__.py +0 -0
  372. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/experimental/resources/facades/identity/__init__.py +0 -0
  373. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/experimental/resources/facades/identity/service.py +0 -0
  374. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/experimental/resources/feature_flags/README.md +0 -0
  375. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/experimental/resources/feature_flags/__init__.py +0 -0
  376. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/experimental/resources/feature_flags/_graphql_client.py +0 -0
  377. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/experimental/resources/feature_flags/_ttl_cache.py +0 -0
  378. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/experimental/resources/feature_flags/client.py +0 -0
  379. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/experimental/resources/feature_flags/schemas.py +0 -0
  380. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/experimental/resources/feature_flags/settings.py +0 -0
  381. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/experimental/resources/group/__init__.py +0 -0
  382. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/experimental/resources/group/functions.py +0 -0
  383. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/experimental/resources/group/schemas.py +0 -0
  384. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/experimental/resources/group/service.py +0 -0
  385. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/experimental/resources/scheduled_task/__init__.py +0 -0
  386. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/experimental/resources/scheduled_task/cron.py +0 -0
  387. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/experimental/resources/scheduled_task/functions.py +0 -0
  388. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/experimental/resources/scheduled_task/schemas.py +0 -0
  389. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/experimental/resources/scheduled_task/service.py +0 -0
  390. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/experimental/resources/user/__init__.py +0 -0
  391. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/experimental/resources/user/functions.py +0 -0
  392. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/experimental/resources/user/schemas.py +0 -0
  393. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/experimental/resources/user/service.py +0 -0
  394. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/experimental/testing/__init__.py +0 -0
  395. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/framework_utilities/__init__.py +0 -0
  396. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/framework_utilities/langchain/__init__.py +0 -0
  397. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/framework_utilities/langchain/client.py +0 -0
  398. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/framework_utilities/langchain/history.py +0 -0
  399. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/framework_utilities/openai/__init__.py +0 -0
  400. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/framework_utilities/openai/client.py +0 -0
  401. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/framework_utilities/openai/message_builder.py +0 -0
  402. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/framework_utilities/utils.py +0 -0
  403. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/language_model/__init__.py +0 -0
  404. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/language_model/_responses_api_utils.py +0 -0
  405. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/language_model/builder.py +0 -0
  406. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/language_model/constants.py +0 -0
  407. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/language_model/default_language_model.py +0 -0
  408. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/language_model/model_costs.py +0 -0
  409. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/language_model/prompt.py +0 -0
  410. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/language_model/reference.py +0 -0
  411. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/language_model/schemas.py +0 -0
  412. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/language_model/settings.py +0 -0
  413. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/language_model/stream_transform.py +0 -0
  414. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/language_model/utils.py +0 -0
  415. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/monitoring/__init__.py +0 -0
  416. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/monitoring/gunicorn.py +0 -0
  417. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/monitoring/middleware.py +0 -0
  418. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/monitoring/registry.py +0 -0
  419. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/monitoring/tracing.py +0 -0
  420. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/protocols/support.py +0 -0
  421. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/services/__init__.py +0 -0
  422. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/services/factory.py +0 -0
  423. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/services/knowledge_base.py +0 -0
  424. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/short_term_memory/__init__.py +0 -0
  425. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/short_term_memory/constants.py +0 -0
  426. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/short_term_memory/functions.py +0 -0
  427. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/short_term_memory/schemas.py +0 -0
  428. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/short_term_memory/service.py +0 -0
  429. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/smart_rules/__init__.py +0 -0
  430. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/smart_rules/compile.py +0 -0
  431. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/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.36.0
3
+ Version: 2026.36.0.dev1
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.36.0
19
+ Requires-Dist: unique-sdk>=2026.36.0.dev0,<2026.36.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.36.0"
3
+ version = "2026.36.0.dev1"
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.36.0",
31
+ "unique-sdk>=2026.36.0.dev0,<2026.36.0rc0",
32
32
  "jambo>=0.1.2,<0.2",
33
33
  "jinja2>=3.1.6,<4",
34
34
  "docxtpl>=0.20.1,<0.21",
@@ -739,20 +739,6 @@ class RJSFMetaTag:
739
739
  return RJSFMetaTag({**union_attrs, "anyOf": any_of_branches})
740
740
 
741
741
 
742
- class DynamicRJSFTag:
743
- """Defer RJSF metadata until ``ui_schema_for_model`` runs.
744
-
745
- Use for env-driven admin locks (``ui:disabled``) that must reflect the
746
- deployment environment at schema-generation time, not at module import.
747
- """
748
-
749
- def __init__(self, factory: Callable[[], RJSFMetaTag]) -> None:
750
- self._factory = factory
751
-
752
- def resolve_rjsf_tag(self) -> RJSFMetaTag:
753
- return self._factory()
754
-
755
-
756
742
  # --------- Helpers ----------
757
743
  _NONE_TYPES = {type(None)}
758
744
  """
@@ -799,12 +785,6 @@ def _collect_metatags(extras: list[Any]) -> dict[str, Any]:
799
785
  """
800
786
  out: dict[str, Any] = {}
801
787
  for x in extras:
802
- resolve = getattr(x, "resolve_rjsf_tag", None)
803
- if callable(resolve):
804
- tag = resolve()
805
- if isinstance(tag, RJSFMetaTag):
806
- out.update(tag.attrs)
807
- continue
808
788
  if isinstance(x, RJSFMetaTag):
809
789
  out.update(x.attrs)
810
790
  return out
@@ -958,9 +938,6 @@ def ui_schema_for_model(
958
938
  # Re-process the unwrapped type to extract metadata from the Annotated branch.
959
939
  if not meta and get_origin(base) is Annotated:
960
940
  base, meta = _walk_annotated_chain(base)
961
- field_meta = _collect_metatags(list(field_info.metadata))
962
- if field_meta:
963
- meta = {**meta, **field_meta}
964
941
  # Start with field-level metadata (flat dict)
965
942
  if meta:
966
943
  node.update(meta)
@@ -30,6 +30,7 @@ class FeatureFlagNames(StrEnum):
30
30
  enable_web_search_argument_screening_un_18741 = (
31
31
  "FEATURE_FLAG_ENABLE_WEB_SEARCH_ARGUMENT_SCREENING_UN_18741"
32
32
  )
33
+ enable_new_answers_ui_un_14411 = "FEATURE_FLAG_ENABLE_NEW_ANSWERS_UI_UN_14411"
33
34
 
34
35
 
35
36
  @deprecated(
@@ -82,25 +83,20 @@ class FeatureFlags(BaseSettings):
82
83
  """Feature flags loaded from environment variables.
83
84
 
84
85
  Environment variables are automatically loaded based on field names.
85
- For example, `enable_html_rendering_un_15131` will be loaded from
86
- `FEATURE_FLAG_ENABLE_HTML_RENDERING_UN_15131` (with the env_prefix).
86
+ For example, `enable_new_answers_ui_un_14411` will be loaded from
87
+ `FEATURE_FLAG_ENABLE_NEW_ANSWERS_UI_UN_14411` (with the env_prefix).
87
88
 
88
89
  Usage:
89
90
  >>> flags = FeatureFlags()
90
91
  >>> # Check if feature is enabled for a company
91
- >>> flags.enable_html_rendering_un_15131.is_enabled("company123")
92
+ >>> flags.enable_new_answers_ui_un_14411.is_enabled("company123")
92
93
  >>> # Check global enablement
93
94
  >>> bool(flags.enable_elicitation_un_15809)
94
95
  """
95
96
 
96
97
  enable_new_answers_ui_un_14411: FeatureFlag = Field(
97
98
  default=FeatureFlag([]),
98
- description=(
99
- "Retired (UN-24507): the new answers UI is always on now, no code "
100
- "reads this field. Kept only so removing it doesn't trip the "
101
- "config-checker's breaking-change gate on this settings model; "
102
- "delete once that checker allows field removal."
103
- ),
99
+ description="Enable new answers UI (UN-14411)",
104
100
  )
105
101
 
106
102
  enable_html_rendering_un_15131: FeatureFlag = Field(
@@ -196,9 +196,7 @@ async def download_encoded_images_async(
196
196
  image_string = f"data:{mime_type};base64," + encoded_string
197
197
  base64_encoded_images.append(image_string)
198
198
  except Exception as e:
199
- _LOGGER.warning(
200
- "Failed to download image %s: %s", im.key, e, exc_info=True
201
- )
199
+ _LOGGER.warning("Failed to download image %s: %s", im.key, e)
202
200
  return base64_encoded_images
203
201
 
204
202
 
@@ -22,6 +22,7 @@ from unique_toolkit._common.referencing import (
22
22
  )
23
23
  from unique_toolkit._common.utils.jinja.render import render_template
24
24
  from unique_toolkit.agentic.evaluation.schemas import EvaluationMetricName
25
+ from unique_toolkit.agentic.feature_flags import FeatureFlagNames
25
26
  from unique_toolkit.agentic.tools.a2a.response_watcher import SubAgentResponseWatcher
26
27
  from unique_toolkit.agentic.tools.a2a.tool._memory import (
27
28
  get_sub_agent_short_term_memory_manager,
@@ -38,7 +39,10 @@ from unique_toolkit.agentic.tools.a2a.tool.config import (
38
39
  from unique_toolkit.agentic.tools.factory import ToolFactory
39
40
  from unique_toolkit.agentic.tools.schemas import ToolCallResponse
40
41
  from unique_toolkit.agentic.tools.tool import Tool
41
- from unique_toolkit.agentic.tools.tool_progress_reporter import ToolProgressReporter
42
+ from unique_toolkit.agentic.tools.tool_progress_reporter import (
43
+ ProgressState,
44
+ ToolProgressReporter,
45
+ )
42
46
  from unique_toolkit.app import ChatEvent
43
47
  from unique_toolkit.chat.schemas import (
44
48
  ChatMessageAssessmentLabel,
@@ -49,6 +53,7 @@ from unique_toolkit.chat.schemas import (
49
53
  )
50
54
  from unique_toolkit.chat.service import ChatService
51
55
  from unique_toolkit.content import ContentChunk, ContentReference
56
+ from unique_toolkit.experimental.resources.feature_flags import is_flag_enabled
52
57
  from unique_toolkit.language_model import (
53
58
  LanguageModelFunction,
54
59
  LanguageModelService,
@@ -191,6 +196,12 @@ class SubAgentTool(Tool[SubAgentToolConfig]):
191
196
  timestamp = datetime.now()
192
197
 
193
198
  if self._lock.locked():
199
+ await self._notify_progress(
200
+ tool_call=tool_call,
201
+ message=f"Waiting for another run of `{self.display_name()}` to finish",
202
+ state=ProgressState.STARTED,
203
+ )
204
+
194
205
  active_message_log = self._create_or_update_message_log(
195
206
  progress_message="_Waiting for another run of this sub agent to finish_",
196
207
  active_message_log=active_message_log,
@@ -204,6 +215,12 @@ class SubAgentTool(Tool[SubAgentToolConfig]):
204
215
  sequence_number = self._sequence_number
205
216
  self._sequence_number += 1
206
217
 
218
+ await self._notify_progress(
219
+ tool_call=tool_call,
220
+ message=tool_input,
221
+ state=ProgressState.RUNNING,
222
+ )
223
+
207
224
  active_message_log = self._create_or_update_message_log(
208
225
  progress_message=f"<em>Executing sub agent with input: {tool_input}</em>",
209
226
  active_message_log=active_message_log,
@@ -268,6 +285,12 @@ class SubAgentTool(Tool[SubAgentToolConfig]):
268
285
  has_refs=has_refs,
269
286
  )
270
287
 
288
+ await self._notify_progress(
289
+ tool_call=tool_call,
290
+ message=tool_input,
291
+ state=ProgressState.FINISHED,
292
+ )
293
+
271
294
  # Update message log entry to completed
272
295
  active_message_log = self._create_or_update_message_log(
273
296
  progress_message=f"<em>Completed sub agent with input: {tool_input}</em>",
@@ -306,6 +329,11 @@ class SubAgentTool(Tool[SubAgentToolConfig]):
306
329
  except TimeoutError as e:
307
330
  raise e
308
331
  except Exception as e:
332
+ await self._notify_progress(
333
+ tool_call=tool_call,
334
+ message="Error while running sub agent",
335
+ state=ProgressState.FAILED,
336
+ )
309
337
  active_message_log = self._create_or_update_message_log(
310
338
  progress_message="_Error while running sub agent_",
311
339
  status=MessageLogStatus.FAILED,
@@ -398,6 +426,23 @@ class SubAgentTool(Tool[SubAgentToolConfig]):
398
426
  SubAgentShortTermMemorySchema(chat_id=chat_id)
399
427
  )
400
428
 
429
+ async def _notify_progress(
430
+ self,
431
+ tool_call: LanguageModelFunction,
432
+ message: str,
433
+ state: ProgressState,
434
+ ) -> None:
435
+ if self._tool_progress_reporter is not None and not await is_flag_enabled(
436
+ FeatureFlagNames.enable_new_answers_ui_un_14411,
437
+ company_id=self._company_id or "",
438
+ ):
439
+ await self._tool_progress_reporter.notify_from_tool_call(
440
+ tool_call=tool_call,
441
+ name=self._display_name,
442
+ message=message,
443
+ state=state,
444
+ )
445
+
401
446
  def _create_or_update_message_log(
402
447
  self,
403
448
  *,
@@ -466,6 +511,11 @@ class SubAgentTool(Tool[SubAgentToolConfig]):
466
511
  wait_for_invocations=True,
467
512
  )
468
513
  except TimeoutError as e:
514
+ await self._notify_progress(
515
+ tool_call=tool_call,
516
+ message="Timeout while waiting for response from sub agent.",
517
+ state=ProgressState.FAILED,
518
+ )
469
519
  active_message_log = self._create_or_update_message_log(
470
520
  progress_message="_Timeout while waiting for response from sub agent_",
471
521
  status=MessageLogStatus.FAILED,
@@ -10,15 +10,20 @@ import unique_sdk
10
10
  from pydantic import ValidationError
11
11
 
12
12
  from unique_toolkit.agentic.evaluation.schemas import EvaluationMetricName
13
+ from unique_toolkit.agentic.feature_flags import FeatureFlagNames
13
14
  from unique_toolkit.agentic.tools.mcp.models import MCPToolConfig
14
15
  from unique_toolkit.agentic.tools.schemas import ToolCallResponse
15
16
  from unique_toolkit.agentic.tools.tool import Tool
16
- from unique_toolkit.agentic.tools.tool_progress_reporter import ToolProgressReporter
17
+ from unique_toolkit.agentic.tools.tool_progress_reporter import (
18
+ ProgressState,
19
+ ToolProgressReporter,
20
+ )
17
21
  from unique_toolkit.app.schemas import ChatEvent, McpServer, McpTool
18
22
  from unique_toolkit.chat.schemas import MessageLog, MessageLogStatus
19
23
  from unique_toolkit.chat.service import ChatService
20
24
  from unique_toolkit.content.functions import upload_content_from_bytes
21
25
  from unique_toolkit.content.schemas import ContentChunk, ContentReference
26
+ from unique_toolkit.experimental.resources.feature_flags import is_flag_enabled
22
27
  from unique_toolkit.language_model import LanguageModelService
23
28
  from unique_toolkit.language_model.schemas import (
24
29
  LanguageModelFunction,
@@ -132,6 +137,18 @@ class MCPToolWrapper(Tool[MCPToolConfig]):
132
137
  active_message_log=active_message_log,
133
138
  )
134
139
 
140
+ # Notify progress if reporter is available
141
+ if self._tool_progress_reporter and not await is_flag_enabled(
142
+ FeatureFlagNames.enable_new_answers_ui_un_14411,
143
+ company_id=self._event.company_id,
144
+ ):
145
+ await self._tool_progress_reporter.notify_from_tool_call(
146
+ tool_call=tool_call,
147
+ name=f"**{self.display_name()}**",
148
+ message=f"Executing MCP tool: {self.display_name()}",
149
+ state=ProgressState.RUNNING,
150
+ )
151
+
135
152
  try:
136
153
  # Robust argument extraction and validation
137
154
  arguments = self._extract_and_validate_arguments(tool_call)
@@ -163,6 +180,18 @@ class MCPToolWrapper(Tool[MCPToolConfig]):
163
180
  image_data_urls=image_data_urls,
164
181
  )
165
182
 
183
+ # Notify completion
184
+ if self._tool_progress_reporter and not await is_flag_enabled(
185
+ FeatureFlagNames.enable_new_answers_ui_un_14411,
186
+ company_id=self._event.company_id,
187
+ ):
188
+ await self._tool_progress_reporter.notify_from_tool_call(
189
+ tool_call=tool_call,
190
+ name=f"**{self.display_name()}**",
191
+ message=f"MCP tool completed: {self.display_name()}",
192
+ state=ProgressState.FINISHED,
193
+ )
194
+
166
195
  # Update message log entry to completed
167
196
  active_message_log = self._create_or_update_message_log(
168
197
  progress_message="_Completed MCP tool_",
@@ -176,6 +205,18 @@ class MCPToolWrapper(Tool[MCPToolConfig]):
176
205
  except Exception as e:
177
206
  self.logger.error(f"Error executing MCP tool {self.name}: {e}")
178
207
 
208
+ # Notify failure
209
+ if self._tool_progress_reporter and not await is_flag_enabled(
210
+ FeatureFlagNames.enable_new_answers_ui_un_14411,
211
+ company_id=self._event.company_id,
212
+ ):
213
+ await self._tool_progress_reporter.notify_from_tool_call(
214
+ tool_call=tool_call,
215
+ name=f"**{self.display_name()}**",
216
+ message=f"MCP tool failed: {str(e)}",
217
+ state=ProgressState.FAILED,
218
+ )
219
+
179
220
  # Update message log entry to failed
180
221
  active_message_log = self._create_or_update_message_log(
181
222
  progress_message="_Failed executing MCP tool_",
@@ -0,0 +1,103 @@
1
+ import logging
2
+ from mimetypes import guess_type
3
+
4
+ from openai.types.responses.response_output_text import AnnotationContainerFileCitation
5
+ from pydantic import BaseModel
6
+
7
+ from unique_toolkit import ChatService
8
+ from unique_toolkit._common.utils.files import FileMimeType, ImageMimeType
9
+ from unique_toolkit.content.schemas import Content
10
+
11
+ _CODE_EXECUTION_ARTIFACT_METADATA_KEY: str = "codeExecutionArtifactMetadata"
12
+
13
+ _LOGGER = logging.getLogger(__name__)
14
+
15
+
16
+ class CodeExecutionArtifactMetadata(BaseModel):
17
+ container_id: str
18
+ file_id: str
19
+ filepath: str
20
+
21
+
22
+ def _kb_safe_mime(mime: str) -> str:
23
+ """Return a MIME type the Unique KB will accept.
24
+
25
+ Membership is defined by ``FileMimeType`` and ``ImageMimeType`` in
26
+ ``unique_toolkit._common.utils.files`` (same catalog as path-based helpers
27
+ like ``FileMimeType.is_valid_mime``, but here we already have a resolved
28
+ MIME string from ``mimetypes.guess_type``, so we use StrEnum value lookup
29
+ instead of re-parsing a path).
30
+
31
+ The KB GraphQL API rejects many code-file MIME types (e.g. ``text/x-python``
32
+ for ``.py`` files). Anything not in those enums is coerced to
33
+ ``text/plain`` so the file can be stored and downloaded without changing
34
+ its bytes.
35
+
36
+ Other ``image/*`` subtypes (e.g. ``image/jpg``) still pass through unchanged.
37
+ """
38
+ try:
39
+ FileMimeType(mime)
40
+ return mime
41
+ except ValueError:
42
+ pass
43
+ try:
44
+ ImageMimeType(mime)
45
+ return mime
46
+ except ValueError:
47
+ pass
48
+ if mime.startswith("image/"):
49
+ return mime
50
+ return "text/plain"
51
+
52
+
53
+ async def save_code_execution_artifact(
54
+ chat_service: ChatService,
55
+ file: AnnotationContainerFileCitation,
56
+ file_bytes: bytes,
57
+ ) -> Content:
58
+ raw_mime = guess_type(file.filename)[0] or "text/plain"
59
+ mime = _kb_safe_mime(raw_mime)
60
+
61
+ if mime != raw_mime:
62
+ _LOGGER.info(
63
+ "MIME type '%s' is not supported by the Unique KB; "
64
+ "uploading '%s' as 'text/plain' so the file can be stored and downloaded.",
65
+ raw_mime,
66
+ file.filename,
67
+ )
68
+
69
+ _LOGGER.info(
70
+ "Uploading '%s' to knowledge base (%d bytes, mime type %s)",
71
+ file.filename,
72
+ len(file_bytes),
73
+ mime,
74
+ )
75
+
76
+ return await chat_service.upload_to_chat_from_bytes_async(
77
+ content=file_bytes,
78
+ content_name=file.filename,
79
+ mime_type=mime,
80
+ skip_ingestion=True,
81
+ hide_in_chat=True,
82
+ metadata={
83
+ _CODE_EXECUTION_ARTIFACT_METADATA_KEY: CodeExecutionArtifactMetadata(
84
+ container_id=file.container_id,
85
+ file_id=file.file_id,
86
+ filepath=f"/mnt/data/{file.filename}",
87
+ ).model_dump()
88
+ },
89
+ )
90
+
91
+
92
+ def load_code_execution_metadata(
93
+ content: Content,
94
+ ) -> CodeExecutionArtifactMetadata | None:
95
+ if (
96
+ content.metadata is None
97
+ or _CODE_EXECUTION_ARTIFACT_METADATA_KEY not in content.metadata
98
+ ):
99
+ return None
100
+
101
+ return CodeExecutionArtifactMetadata.model_validate(
102
+ content.metadata[_CODE_EXECUTION_ARTIFACT_METADATA_KEY]
103
+ )
@@ -117,15 +117,6 @@ class DisplayCodeInterpreterFilesPostProcessorConfig(BaseModel):
117
117
  "Applies per SDK attempt. The OpenAI SDK default of 600s is too generous "
118
118
  "for small generated files; a shorter timeout lets us retry sooner.",
119
119
  )
120
- attach_office_preview: SkipJsonSchema[bool] = Field(
121
- default=False,
122
- description=(
123
- "When True, convert Word/PowerPoint/Excel artifacts to a sibling "
124
- "PDF and attach it as the chat side-panel preview. Default False "
125
- "keeps the historical bytes-only upload. Conversion is best-effort "
126
- "and falls back to the original file."
127
- ),
128
- )
129
120
 
130
121
 
131
122
  class _ContentInfo(NamedTuple):
@@ -771,7 +762,6 @@ class DisplayCodeInterpreterFilesPostProcessor(
771
762
  chat_service=self._chat_service,
772
763
  file=container_file,
773
764
  file_bytes=file_bytes,
774
- attach_office_preview=self._config.attach_office_preview,
775
765
  )
776
766
  upload_ms = (time.monotonic() - upload_t0) * 1000
777
767
  if upload_ms > 2000:
@@ -14,8 +14,6 @@ from .schemas import (
14
14
  AgreementStatus,
15
15
  ArtifactType,
16
16
  CreatedMagicTableSheet,
17
- LibrarySheetRowVerifiedMetadata,
18
- LibrarySheetRowVerifiedRow,
19
17
  LogEntry,
20
18
  MagicTableAction,
21
19
  MagicTableAddMetadataPayload,
@@ -28,13 +26,11 @@ from .schemas import (
28
26
  MagicTableGenerateArtifactPayload,
29
27
  MagicTableLibrarySheetRowVerifiedPayload,
30
28
  MagicTableRerunRowPayload,
31
- MagicTableRerunRowsPayload,
32
29
  MagicTableSheet,
33
30
  MagicTableSheetCompletedPayload,
34
31
  MagicTableSheetCreatedPayload,
35
32
  MagicTableUpdateCellPayload,
36
33
  RerunRowMetadata,
37
- RerunRowsMetadata,
38
34
  RowMetadataEntry,
39
35
  RowMetadataEntryInput,
40
36
  SelectionMethod,
@@ -78,15 +74,11 @@ __all__ = [
78
74
  "MagicTableGenerateArtifactPayload",
79
75
  "MagicTableLibrarySheetRowVerifiedPayload",
80
76
  "MagicTableRerunRowPayload",
81
- "MagicTableRerunRowsPayload",
82
77
  "MagicTableSheet",
83
78
  "MagicTableSheetCompletedPayload",
84
79
  "MagicTableSheetCreatedPayload",
85
80
  "MagicTableUpdateCellPayload",
86
- "LibrarySheetRowVerifiedMetadata",
87
- "LibrarySheetRowVerifiedRow",
88
81
  "RerunRowMetadata",
89
- "RerunRowsMetadata",
90
82
  "RowMetadataEntry",
91
83
  "RowMetadataEntryInput",
92
84
  "RowVerificationStatus",
@@ -6,7 +6,6 @@ from pydantic import (
6
6
  BaseModel,
7
7
  Field,
8
8
  field_validator,
9
- model_validator,
10
9
  )
11
10
  from unique_sdk import (
12
11
  AgenticTableSheetState,
@@ -23,10 +22,7 @@ from unique_sdk.api_resources._agentic_table import (
23
22
  )
24
23
 
25
24
  from unique_toolkit._common.exception import ConfigurationException
26
- from unique_toolkit._common.pydantic_helpers import (
27
- NoneToDefault,
28
- get_configuration_dict,
29
- )
25
+ from unique_toolkit._common.pydantic_helpers import get_configuration_dict
30
26
  from unique_toolkit.app.schemas import (
31
27
  AssistantWebhookEvent,
32
28
  BaseEventPayload,
@@ -48,7 +44,6 @@ class MagicTableEventTypes(StrEnum):
48
44
  LIBRARY_SHEET_ROW_VERIFIED = "unique.magic-table.library-sheet-row.verified"
49
45
  SHEET_CREATED = "unique.magic-table.sheet-created"
50
46
  RERUN_ROW = "unique.magic-table.rerun-row"
51
- RERUN_ROWS = "unique.magic-table.rerun-rows"
52
47
 
53
48
 
54
49
  class BaseMetadata(BaseModel):
@@ -216,61 +211,9 @@ class MagicTableSheetCreatedPayload(
216
211
  ########## Library Sheet Row Verified Payload ##########
217
212
 
218
213
 
219
- class LibrarySheetRowVerifiedRow(BaseModel):
220
- model_config = get_configuration_dict()
221
- row_order: int = Field(description="The row index of a verified row.")
222
- row_id: str | None = Field(
223
- default=None,
224
- description="Optional pairing ID for a verified row.",
225
- )
226
-
227
-
228
214
  class LibrarySheetRowVerifiedMetadata(BaseMetadata):
229
215
  model_config = get_configuration_dict()
230
- row_order: int = Field(
231
- description="The row index of the first (or only) verified row."
232
- )
233
- row_id: str | None = Field(
234
- default=None,
235
- description=(
236
- "Optional pairing id for the first verified row. Ingest keys off "
237
- "row_order (or rows[].row_order). Omitted or null stays None so "
238
- "legacy payloads that only send rowOrder still parse."
239
- ),
240
- )
241
- rows: Annotated[list[LibrarySheetRowVerifiedRow], NoneToDefault] = Field(
242
- default_factory=list,
243
- description="The full batch of verified rows, including the first row.",
244
- )
245
-
246
- @model_validator(mode="after")
247
- def validate_first_row_matches_scalars(self) -> "LibrarySheetRowVerifiedMetadata":
248
- """Keep old scalar consumers and new batch consumers on the same first row."""
249
- if not self.rows:
250
- return self
251
-
252
- first_row = self.rows[0]
253
- if first_row.row_order != self.row_order:
254
- raise ValueError("rows[0].row_order must match row_order")
255
- if (
256
- self.row_id is not None
257
- and first_row.row_id is not None
258
- and first_row.row_id != self.row_id
259
- ):
260
- raise ValueError("rows[0].row_id must match row_id")
261
- return self
262
-
263
- @property
264
- def verified_rows(self) -> list[LibrarySheetRowVerifiedRow]:
265
- """Return one normalized row list for both legacy and bulk payloads."""
266
- if self.rows:
267
- return self.rows
268
- return [
269
- LibrarySheetRowVerifiedRow(
270
- row_order=self.row_order,
271
- row_id=self.row_id,
272
- )
273
- ]
216
+ row_order: int = Field(description="The row index of the row that was verified.")
274
217
 
275
218
 
276
219
  class MagicTableLibrarySheetRowVerifiedPayload(
@@ -305,48 +248,6 @@ class MagicTableRerunRowPayload(
305
248
  ): ...
306
249
 
307
250
 
308
- ########## Rerun Rows Payload ##########
309
-
310
-
311
- class RerunRowsMetadata(BaseMetadata):
312
- """Metadata of a bulk re-run: one event carrying N rows of the same sheet."""
313
-
314
- model_config = get_configuration_dict()
315
- source_file_ids: Annotated[list[str], NoneToDefault] = Field(
316
- default_factory=list,
317
- description=(
318
- "Source file IDs for this rerun. Optional: a user-triggered bulk "
319
- "rerun may omit sources when none changed. Null and omitted become []."
320
- ),
321
- )
322
- row_orders: Annotated[list[int], NoneToDefault] = Field(
323
- default_factory=list,
324
- description=(
325
- "1-based content row indices to rerun, in first-seen selection order. "
326
- "Duplicates are dropped. Row 0 is the header and negatives address "
327
- "nothing, so non-positive values are discarded. Empty means no work."
328
- ),
329
- )
330
- context: str = Field(default="", description="The context text for the rerun.")
331
-
332
- @field_validator("row_orders", mode="after")
333
- @classmethod
334
- def normalize_row_orders(cls, v: list[int]) -> list[int]:
335
- return list(dict.fromkeys(row for row in v if row > 0))
336
-
337
- @field_validator("context", mode="before")
338
- @classmethod
339
- def normalize_context(cls, v):
340
- if v is None:
341
- return ""
342
- return v
343
-
344
-
345
- class MagicTableRerunRowsPayload(
346
- MagicTableBasePayload[Literal[MagicTableAction.RERUN_ROWS], RerunRowsMetadata]
347
- ): ...
348
-
349
-
350
251
  ########### Magic Table Event definition ###########
351
252
 
352
253
 
@@ -358,7 +259,6 @@ PayloadTypes = (
358
259
  | MagicTableLibrarySheetRowVerifiedPayload
359
260
  | MagicTableSheetCreatedPayload
360
261
  | MagicTableRerunRowPayload
361
- | MagicTableRerunRowsPayload
362
262
  )
363
263
 
364
264
  MagicTablePayloadTypes = Annotated[PayloadTypes, Field(discriminator="action")]