unique_toolkit 2026.36.0__tar.gz → 2026.36.0.dev0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (431) hide show
  1. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/PKG-INFO +2 -2
  2. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/pyproject.toml +2 -2
  3. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/_common/pydantic/rjsf_tags.py +0 -23
  4. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/agentic/feature_flags/feature_flags.py +5 -9
  5. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/agentic/history_manager/history_construction_with_contents.py +1 -3
  6. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/agentic/tools/a2a/tool/service.py +51 -1
  7. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/agentic/tools/mcp/tool_wrapper.py +48 -52
  8. unique_toolkit-2026.36.0.dev0/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/postprocessors/artifacts.py +103 -0
  9. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/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.dev0}/unique_toolkit/agentic_table/__init__.py +0 -8
  11. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/agentic_table/schemas.py +2 -102
  12. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/agentic_table/service.py +31 -75
  13. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/chat/responses_api.py +1 -3
  14. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/content/functions.py +0 -34
  15. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/experimental/components/__init__.py +3 -6
  16. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/experimental/components/content_tree/__init__.py +18 -14
  17. unique_toolkit-2026.36.0.dev0/unique_toolkit/experimental/components/content_tree/functions.py +247 -0
  18. unique_toolkit-2026.36.0.dev0/unique_toolkit/experimental/components/content_tree/schemas.py +106 -0
  19. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/experimental/components/content_tree/service.py +83 -244
  20. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/experimental/content_tree/__init__.py +10 -4
  21. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/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.dev0}/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.dev0}/unique_toolkit/language_model/functions.py +2 -11
  24. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/language_model/infos.py +0 -61
  25. unique_toolkit-2026.36.0.dev0/unique_toolkit/language_model/invocation_stats.py +77 -0
  26. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/language_model/service.py +1 -15
  27. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/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.dev0}/README.md +0 -0
  35. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/__init__.py +0 -0
  36. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/_common/__init__.py +0 -0
  37. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/_common/_base_service.py +0 -0
  38. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/_common/_time_utils.py +0 -0
  39. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/_common/api_calling/human_verification_manager.py +0 -0
  40. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/_common/base_model_type_attribute.py +0 -0
  41. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/_common/chunk_relevancy_sorter/config.py +0 -0
  42. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/_common/chunk_relevancy_sorter/exception.py +0 -0
  43. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/_common/chunk_relevancy_sorter/schemas.py +0 -0
  44. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/_common/chunk_relevancy_sorter/service.py +0 -0
  45. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/_common/chunk_relevancy_sorter/tests/test_service.py +0 -0
  46. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/_common/config_checker/README.md +0 -0
  47. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/_common/config_checker/__init__.py +0 -0
  48. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/_common/config_checker/__main__.py +0 -0
  49. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/_common/config_checker/cli.py +0 -0
  50. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/_common/config_checker/differ.py +0 -0
  51. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/_common/config_checker/exporter.py +0 -0
  52. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/_common/config_checker/models.py +0 -0
  53. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/_common/config_checker/registry.py +0 -0
  54. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/_common/config_checker/validator.py +0 -0
  55. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/_common/default_language_model.py +0 -0
  56. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/_common/docx_generator/__init__.py +0 -0
  57. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/_common/docx_generator/config.py +0 -0
  58. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/_common/docx_generator/pandoc_converter.py +0 -0
  59. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/_common/docx_generator/schemas.py +0 -0
  60. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/_common/docx_generator/service.py +0 -0
  61. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/_common/docx_generator/template/Doc Template.docx +0 -0
  62. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/_common/endpoint_builder.py +0 -0
  63. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/_common/endpoint_requestor.py +0 -0
  64. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/_common/event_bus.py +0 -0
  65. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/_common/exception.py +0 -0
  66. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/_common/execution.py +0 -0
  67. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/_common/experimental/endpoint_builder.py +0 -0
  68. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/_common/experimental/endpoint_requestor.py +0 -0
  69. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/_common/experimental/write_up_agent/README.md +0 -0
  70. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/_common/experimental/write_up_agent/__init__.py +0 -0
  71. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/_common/experimental/write_up_agent/agent.py +0 -0
  72. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/_common/experimental/write_up_agent/config.py +0 -0
  73. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/_common/experimental/write_up_agent/examples/data.csv +0 -0
  74. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/_common/experimental/write_up_agent/examples/example_usage.py +0 -0
  75. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/_common/experimental/write_up_agent/schemas.py +0 -0
  76. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/_common/experimental/write_up_agent/services/__init__.py +0 -0
  77. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/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.dev0}/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.dev0}/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.dev0}/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.dev0}/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.dev0}/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.dev0}/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.dev0}/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.dev0}/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.dev0}/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.dev0}/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.dev0}/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.dev0}/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.dev0}/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.dev0}/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.dev0}/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.dev0}/unique_toolkit/_common/experimental/write_up_agent/utils.py +0 -0
  94. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/_common/feature_flags/schema.py +0 -0
  95. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/_common/metadata_filter_scope.py +0 -0
  96. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/_common/pydantic_helpers.py +0 -0
  97. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/_common/referencing.py +0 -0
  98. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/_common/string_utilities.py +0 -0
  99. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/_common/tests/test_referencing.py +0 -0
  100. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/_common/tests/test_string_utilities.py +0 -0
  101. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/_common/token/__init__.py +0 -0
  102. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/_common/token/image_token_counting.py +0 -0
  103. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/_common/token/token_counting.py +0 -0
  104. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/_common/token/tokenizers/deepseek/tokenizer.json +0 -0
  105. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/_common/token/tokenizers/qwen/tokenizer.json +0 -0
  106. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/_common/utils/__init__.py +0 -0
  107. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/_common/utils/files.py +0 -0
  108. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/_common/utils/image/encode.py +0 -0
  109. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/_common/utils/jinja/helpers.py +0 -0
  110. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/_common/utils/jinja/render.py +0 -0
  111. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/_common/utils/jinja/schema.py +0 -0
  112. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/_common/utils/jinja/utils.py +0 -0
  113. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/_common/utils/structured_output/__init__.py +0 -0
  114. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/_common/utils/structured_output/schema.py +0 -0
  115. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/_common/utils/write_configuration.py +0 -0
  116. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/_common/validate_required_values.py +0 -0
  117. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/_common/validators.py +0 -0
  118. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/agentic/__init__.py +0 -0
  119. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/agentic/debug_info_manager/debug_info_manager.py +0 -0
  120. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/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.dev0}/unique_toolkit/agentic/evaluation/config.py +0 -0
  122. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/agentic/evaluation/context_relevancy/prompts/__init__.py +0 -0
  123. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/agentic/evaluation/context_relevancy/prompts/system_prompt.j2 +0 -0
  124. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/agentic/evaluation/context_relevancy/prompts/user_prompt.j2 +0 -0
  125. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/agentic/evaluation/context_relevancy/schema.py +0 -0
  126. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/agentic/evaluation/context_relevancy/service.py +0 -0
  127. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/agentic/evaluation/evaluation_manager.py +0 -0
  128. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/agentic/evaluation/exception.py +0 -0
  129. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/agentic/evaluation/hallucination/constants.py +0 -0
  130. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/agentic/evaluation/hallucination/hallucination_evaluation.py +0 -0
  131. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/agentic/evaluation/hallucination/prompts/__init__.py +0 -0
  132. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/agentic/evaluation/hallucination/prompts/system_prompt.j2 +0 -0
  133. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/agentic/evaluation/hallucination/prompts/user_prompt.j2 +0 -0
  134. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/agentic/evaluation/hallucination/service.py +0 -0
  135. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/agentic/evaluation/hallucination/utils.py +0 -0
  136. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/agentic/evaluation/output_parser.py +0 -0
  137. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/agentic/evaluation/schemas.py +0 -0
  138. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/agentic/evaluation/tests/fixtures.py +0 -0
  139. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/agentic/evaluation/tests/test_config.py +0 -0
  140. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/agentic/evaluation/tests/test_context_relevancy_service.py +0 -0
  141. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/agentic/evaluation/tests/test_hallucination_constants.py +0 -0
  142. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/agentic/evaluation/tests/test_hallucination_external_context.py +0 -0
  143. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/agentic/evaluation/tests/test_hallucination_utils.py +0 -0
  144. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/agentic/evaluation/tests/test_output_parser.py +0 -0
  145. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/agentic/evaluation/tests/test_prompt_loaders.py +0 -0
  146. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/agentic/evaluation/utils.py +0 -0
  147. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/agentic/feature_flags/__init__.py +0 -0
  148. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/agentic/history_manager/history_manager.py +0 -0
  149. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/agentic/history_manager/loop_token_reducer.py +0 -0
  150. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/agentic/history_manager/settings.py +0 -0
  151. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/agentic/history_manager/utils.py +0 -0
  152. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/agentic/loop_runner/__init__.py +0 -0
  153. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/agentic/loop_runner/_iteration_handler_utils.py +0 -0
  154. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/agentic/loop_runner/_responses_iteration_handler_utils.py +0 -0
  155. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/agentic/loop_runner/_responses_stream_handler_utils.py +0 -0
  156. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/agentic/loop_runner/_stream_handler_utils.py +0 -0
  157. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/agentic/loop_runner/base.py +0 -0
  158. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/agentic/loop_runner/middleware/__init__.py +0 -0
  159. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/agentic/loop_runner/middleware/planning/__init__.py +0 -0
  160. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/agentic/loop_runner/middleware/planning/planning.py +0 -0
  161. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/agentic/loop_runner/middleware/planning/schema.py +0 -0
  162. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/agentic/loop_runner/runners/__init__.py +0 -0
  163. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/agentic/loop_runner/runners/basic.py +0 -0
  164. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/agentic/loop_runner/runners/mistral/__init__.py +0 -0
  165. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/agentic/loop_runner/runners/mistral/mistral_runner.py +0 -0
  166. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/agentic/loop_runner/runners/qwen/__init__.py +0 -0
  167. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/agentic/loop_runner/runners/qwen/helpers.py +0 -0
  168. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/agentic/loop_runner/runners/qwen/qwen_runner.py +0 -0
  169. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/agentic/message_log_manager/__init__.py +0 -0
  170. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/agentic/message_log_manager/service.py +0 -0
  171. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/agentic/message_log_order.py +0 -0
  172. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/agentic/postprocessor/postprocessor_manager.py +0 -0
  173. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/agentic/reference_manager/reference_manager.py +0 -0
  174. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/agentic/reference_manager/tests/test_external_context.py +0 -0
  175. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/agentic/responses_api/__init__.py +0 -0
  176. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/agentic/responses_api/postprocessors/code_display.py +0 -0
  177. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/agentic/responses_api/postprocessors/generated_files.py +0 -0
  178. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/agentic/responses_api/stream_handler.py +0 -0
  179. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/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.dev0}/unique_toolkit/agentic/thinking_manager/thinking_manager.py +0 -0
  181. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/agentic/tools/__init__.py +0 -0
  182. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/agentic/tools/a2a/__init__.py +0 -0
  183. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/agentic/tools/a2a/config.py +0 -0
  184. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/agentic/tools/a2a/evaluation/__init__.py +0 -0
  185. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/agentic/tools/a2a/evaluation/_utils.py +0 -0
  186. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/agentic/tools/a2a/evaluation/config.py +0 -0
  187. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/agentic/tools/a2a/evaluation/evaluator.py +0 -0
  188. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/agentic/tools/a2a/evaluation/summarization_user_message.j2 +0 -0
  189. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/agentic/tools/a2a/manager.py +0 -0
  190. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/agentic/tools/a2a/postprocessing/__init__.py +0 -0
  191. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/agentic/tools/a2a/postprocessing/_display_utils.py +0 -0
  192. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/agentic/tools/a2a/postprocessing/_ref_utils.py +0 -0
  193. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/agentic/tools/a2a/postprocessing/config.py +0 -0
  194. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/agentic/tools/a2a/postprocessing/display.py +0 -0
  195. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/agentic/tools/a2a/postprocessing/references.py +0 -0
  196. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/agentic/tools/a2a/postprocessing/test/test_display.py +0 -0
  197. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/agentic/tools/a2a/postprocessing/test/test_display_utils.py +0 -0
  198. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/agentic/tools/a2a/postprocessing/test/test_ref_utils.py +0 -0
  199. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/agentic/tools/a2a/postprocessing/test/test_references.py +0 -0
  200. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/agentic/tools/a2a/prompts.py +0 -0
  201. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/agentic/tools/a2a/response_watcher/__init__.py +0 -0
  202. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/agentic/tools/a2a/response_watcher/service.py +0 -0
  203. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/agentic/tools/a2a/tool/__init__.py +0 -0
  204. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/agentic/tools/a2a/tool/_memory.py +0 -0
  205. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/agentic/tools/a2a/tool/_schema.py +0 -0
  206. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/agentic/tools/a2a/tool/config.py +0 -0
  207. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/agentic/tools/a2a/tool/test/test_service_utils.py +0 -0
  208. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/agentic/tools/agent_chunks_hanlder.py +0 -0
  209. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/agentic/tools/config.py +0 -0
  210. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/agentic/tools/experimental/__init__.py +0 -0
  211. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/agentic/tools/experimental/ask_user_tool/__init__.py +0 -0
  212. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/agentic/tools/experimental/ask_user_tool/config.py +0 -0
  213. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/agentic/tools/experimental/ask_user_tool/tool.py +0 -0
  214. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/agentic/tools/experimental/open_file_tool/__init__.py +0 -0
  215. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/agentic/tools/experimental/open_file_tool/config.py +0 -0
  216. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/agentic/tools/experimental/open_file_tool/runtime.py +0 -0
  217. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/agentic/tools/experimental/open_file_tool/tool.py +0 -0
  218. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/agentic/tools/experimental/retrieve_search_scope_tool/__init__.py +0 -0
  219. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/agentic/tools/experimental/retrieve_search_scope_tool/config.py +0 -0
  220. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/agentic/tools/experimental/retrieve_search_scope_tool/tool.py +0 -0
  221. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/agentic/tools/experimental/todo/__init__.py +0 -0
  222. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/agentic/tools/experimental/todo/config.py +0 -0
  223. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/agentic/tools/experimental/todo/prompts/__init__.py +0 -0
  224. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/agentic/tools/experimental/todo/prompts/execution_reminder.j2 +0 -0
  225. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/agentic/tools/experimental/todo/prompts/system_prompt.j2 +0 -0
  226. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/agentic/tools/experimental/todo/prompts/tool_description.j2 +0 -0
  227. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/agentic/tools/experimental/todo/prompts/verification_nudge.j2 +0 -0
  228. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/agentic/tools/experimental/todo/schemas.py +0 -0
  229. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/agentic/tools/experimental/todo/service.py +0 -0
  230. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/agentic/tools/factory.py +0 -0
  231. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/agentic/tools/mcp/__init__.py +0 -0
  232. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/agentic/tools/mcp/manager.py +0 -0
  233. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/agentic/tools/mcp/models.py +0 -0
  234. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/agentic/tools/names.py +0 -0
  235. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/agentic/tools/openai_builtin/__init__.py +0 -0
  236. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/agentic/tools/openai_builtin/base.py +0 -0
  237. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/__init__.py +0 -0
  238. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/activator/__init__.py +0 -0
  239. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/activator/config.py +0 -0
  240. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/activator/service.py +0 -0
  241. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/builder/__init__.py +0 -0
  242. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/builder/_container.py +0 -0
  243. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/builder/_files.py +0 -0
  244. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/builder/_memory.py +0 -0
  245. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/builder/builder.py +0 -0
  246. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/config.py +0 -0
  247. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/postprocessors/__init__.py +0 -0
  248. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/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.dev0}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/schemas.py +0 -0
  250. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/tool/__init__.py +0 -0
  251. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/tool/config.py +0 -0
  252. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/tool/service.py +0 -0
  253. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/agentic/tools/openai_builtin/manager.py +0 -0
  254. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/agentic/tools/run_context.py +0 -0
  255. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/agentic/tools/schemas.py +0 -0
  256. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/agentic/tools/test/test_mcp_manager.py +0 -0
  257. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/agentic/tools/test/test_tool_progress_reporter.py +0 -0
  258. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/agentic/tools/tool.py +0 -0
  259. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/agentic/tools/tool_manager.py +0 -0
  260. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/agentic/tools/tool_progress_reporter.py +0 -0
  261. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/agentic/tools/utils/__init__.py +0 -0
  262. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/agentic/tools/utils/source_handling/__init__.py +0 -0
  263. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/agentic/tools/utils/source_handling/schema.py +0 -0
  264. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/agentic/tools/utils/source_handling/source_formatting.py +0 -0
  265. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/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.dev0}/unique_toolkit/agentic_table/synthetic_chat_event.py +0 -0
  267. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/app/__init__.py +0 -0
  268. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/app/chat_event_filter_options_settings.py +0 -0
  269. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/app/dev_util.py +0 -0
  270. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/app/fast_api_factory.py +0 -0
  271. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/app/feature_flags.py +0 -0
  272. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/app/find_env_file.py +0 -0
  273. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/app/init_logging.py +0 -0
  274. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/app/init_sdk.py +0 -0
  275. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/app/performance/async_tasks.py +0 -0
  276. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/app/performance/async_wrapper.py +0 -0
  277. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/app/schemas.py +0 -0
  278. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/app/unique_settings.py +0 -0
  279. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/app/verification.py +0 -0
  280. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/app/webhook.py +0 -0
  281. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/chat/__init__.py +0 -0
  282. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/chat/cancellation.py +0 -0
  283. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/chat/constants.py +0 -0
  284. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/chat/deprecated/__init__.py +0 -0
  285. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/chat/deprecated/service.py +0 -0
  286. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/chat/functions.py +0 -0
  287. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/chat/rendering.py +0 -0
  288. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/chat/schemas.py +0 -0
  289. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/chat/service.py +0 -0
  290. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/chat/state.py +0 -0
  291. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/chat/utils.py +0 -0
  292. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/content/__init__.py +0 -0
  293. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/content/constants.py +0 -0
  294. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/content/schemas.py +0 -0
  295. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/content/service.py +0 -0
  296. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/content/smart_rules.py +0 -0
  297. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/content/utils.py +0 -0
  298. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/data_extraction/README.md +0 -0
  299. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/data_extraction/__init__.py +0 -0
  300. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/data_extraction/augmented/__init__.py +0 -0
  301. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/data_extraction/augmented/service.py +0 -0
  302. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/data_extraction/base.py +0 -0
  303. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/data_extraction/basic/__init__.py +0 -0
  304. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/data_extraction/basic/config.py +0 -0
  305. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/data_extraction/basic/prompt.py +0 -0
  306. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/data_extraction/basic/service.py +0 -0
  307. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/elicitation/__init__.py +0 -0
  308. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/elicitation/constants.py +0 -0
  309. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/elicitation/exceptions.py +0 -0
  310. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/elicitation/functions.py +0 -0
  311. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/elicitation/schemas.py +0 -0
  312. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/elicitation/service.py +0 -0
  313. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/embedding/__init__.py +0 -0
  314. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/embedding/constants.py +0 -0
  315. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/embedding/functions.py +0 -0
  316. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/embedding/schemas.py +0 -0
  317. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/embedding/service.py +0 -0
  318. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/embedding/utils.py +0 -0
  319. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/experimental/README.md +0 -0
  320. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/experimental/__init__.py +0 -0
  321. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/experimental/_internal/__init__.py +0 -0
  322. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/experimental/_internal/streaming/__init__.py +0 -0
  323. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/experimental/_internal/streaming/common.py +0 -0
  324. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/experimental/_internal/streaming/pattern_replacer.py +0 -0
  325. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/experimental/components/_base.py +0 -0
  326. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/experimental/components/internal_search/__init__.py +0 -0
  327. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/experimental/components/internal_search/base/__init__.py +0 -0
  328. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/experimental/components/internal_search/base/config.py +0 -0
  329. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/experimental/components/internal_search/base/schemas.py +0 -0
  330. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/experimental/components/internal_search/base/service.py +0 -0
  331. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/experimental/components/internal_search/base/utils.py +0 -0
  332. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/experimental/components/internal_search/chat/__init__.py +0 -0
  333. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/experimental/components/internal_search/chat/config.py +0 -0
  334. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/experimental/components/internal_search/chat/schemas.py +0 -0
  335. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/experimental/components/internal_search/chat/service.py +0 -0
  336. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/experimental/components/internal_search/knowledge_base/__init__.py +0 -0
  337. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/experimental/components/internal_search/knowledge_base/config.py +0 -0
  338. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/experimental/components/internal_search/knowledge_base/schemas.py +0 -0
  339. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/experimental/components/internal_search/knowledge_base/service.py +0 -0
  340. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/experimental/components/internal_search/post_processing/__init__.py +0 -0
  341. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/experimental/components/internal_search/post_processing/config.py +0 -0
  342. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/experimental/components/internal_search/post_processing/service.py +0 -0
  343. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/experimental/identity/__init__.py +0 -0
  344. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/experimental/integrations/__init__.py +0 -0
  345. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/experimental/integrations/openai/__init__.py +0 -0
  346. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/experimental/integrations/openai/streaming/__init__.py +0 -0
  347. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/__init__.py +0 -0
  348. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/_async_bridge.py +0 -0
  349. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/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.dev0}/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.dev0}/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.dev0}/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.dev0}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/events.py +0 -0
  354. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/protocols/__init__.py +0 -0
  355. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/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.dev0}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/protocols/responses.py +0 -0
  357. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/responses/__init__.py +0 -0
  358. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/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.dev0}/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.dev0}/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.dev0}/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.dev0}/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.dev0}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/subscribers/__init__.py +0 -0
  364. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/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.dev0}/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.dev0}/unique_toolkit/experimental/resources/__init__.py +0 -0
  367. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/experimental/resources/content_folder/__init__.py +0 -0
  368. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/experimental/resources/content_folder/functions.py +0 -0
  369. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/experimental/resources/content_folder/schemas.py +0 -0
  370. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/experimental/resources/content_folder/service.py +0 -0
  371. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/experimental/resources/facades/__init__.py +0 -0
  372. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/experimental/resources/facades/identity/__init__.py +0 -0
  373. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/experimental/resources/facades/identity/service.py +0 -0
  374. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/experimental/resources/feature_flags/README.md +0 -0
  375. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/experimental/resources/feature_flags/__init__.py +0 -0
  376. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/experimental/resources/feature_flags/_graphql_client.py +0 -0
  377. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/experimental/resources/feature_flags/_ttl_cache.py +0 -0
  378. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/experimental/resources/feature_flags/client.py +0 -0
  379. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/experimental/resources/feature_flags/schemas.py +0 -0
  380. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/experimental/resources/feature_flags/settings.py +0 -0
  381. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/experimental/resources/group/__init__.py +0 -0
  382. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/experimental/resources/group/functions.py +0 -0
  383. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/experimental/resources/group/schemas.py +0 -0
  384. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/experimental/resources/group/service.py +0 -0
  385. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/experimental/resources/scheduled_task/__init__.py +0 -0
  386. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/experimental/resources/scheduled_task/cron.py +0 -0
  387. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/experimental/resources/scheduled_task/functions.py +0 -0
  388. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/experimental/resources/scheduled_task/schemas.py +0 -0
  389. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/experimental/resources/scheduled_task/service.py +0 -0
  390. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/experimental/resources/user/__init__.py +0 -0
  391. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/experimental/resources/user/functions.py +0 -0
  392. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/experimental/resources/user/schemas.py +0 -0
  393. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/experimental/resources/user/service.py +0 -0
  394. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/experimental/testing/__init__.py +0 -0
  395. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/framework_utilities/__init__.py +0 -0
  396. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/framework_utilities/langchain/__init__.py +0 -0
  397. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/framework_utilities/langchain/client.py +0 -0
  398. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/framework_utilities/langchain/history.py +0 -0
  399. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/framework_utilities/openai/__init__.py +0 -0
  400. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/framework_utilities/openai/client.py +0 -0
  401. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/framework_utilities/openai/message_builder.py +0 -0
  402. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/framework_utilities/utils.py +0 -0
  403. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/language_model/__init__.py +0 -0
  404. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/language_model/_responses_api_utils.py +0 -0
  405. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/language_model/builder.py +0 -0
  406. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/language_model/constants.py +0 -0
  407. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/language_model/default_language_model.py +0 -0
  408. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/language_model/model_costs.py +0 -0
  409. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/language_model/prompt.py +0 -0
  410. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/language_model/reference.py +0 -0
  411. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/language_model/schemas.py +0 -0
  412. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/language_model/settings.py +0 -0
  413. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/language_model/stream_transform.py +0 -0
  414. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/language_model/utils.py +0 -0
  415. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/monitoring/__init__.py +0 -0
  416. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/monitoring/gunicorn.py +0 -0
  417. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/monitoring/middleware.py +0 -0
  418. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/monitoring/registry.py +0 -0
  419. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/monitoring/tracing.py +0 -0
  420. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/protocols/support.py +0 -0
  421. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/services/__init__.py +0 -0
  422. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/services/factory.py +0 -0
  423. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/services/knowledge_base.py +0 -0
  424. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/short_term_memory/__init__.py +0 -0
  425. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/short_term_memory/constants.py +0 -0
  426. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/short_term_memory/functions.py +0 -0
  427. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/short_term_memory/schemas.py +0 -0
  428. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/short_term_memory/service.py +0 -0
  429. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/smart_rules/__init__.py +0 -0
  430. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/smart_rules/compile.py +0 -0
  431. {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev0}/unique_toolkit/test_utilities/events.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: unique-toolkit
3
- Version: 2026.36.0
3
+ Version: 2026.36.0.dev0
4
4
  Summary:
5
5
  Author: Cedric Klinkert, Martin Fadler, Sadique Sheik, Fabian Schläpfer, Pascal Hauri, Ejiroghene Oki-Peter, Rami Azouz, Ricardo Visini, Sanzio Monti
6
6
  Author-email: Cedric Klinkert <cedric.klinkert@unique.ch>, Martin Fadler <martin.fadler@unique.ch>, Sadique Sheik <sadique@unique.ch>, Fabian Schläpfer <fabian@unique.ch>, Pascal Hauri <pascal@unique.ch>, Ejiroghene Oki-Peter <oki-peter.ejiroghene@unique.ai>, Rami Azouz <rami.ext@unique.ch>, Ricardo Visini <ricardo.visini@unique.ch>, Sanzio Monti <sanzio.monti@unique.ai>
@@ -16,7 +16,7 @@ Requires-Dist: sseclient>=0.0.27,<0.0.28
16
16
  Requires-Dist: openai>=1.105.0,<3
17
17
  Requires-Dist: platformdirs>=4.0.0,<5
18
18
  Requires-Dist: pillow>=12.1.1
19
- Requires-Dist: unique-sdk>=2026.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.dev0"
4
4
  description = ""
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.12"
@@ -28,7 +28,7 @@ dependencies = [
28
28
  "openai>=1.105.0,<3",
29
29
  "platformdirs>=4.0.0,<5",
30
30
  "pillow>=12.1.1",
31
- "unique-sdk>=2026.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,
@@ -4,21 +4,24 @@ import json
4
4
  import logging
5
5
  import mimetypes
6
6
  import uuid
7
- from typing import Any
7
+ from typing import Any, Dict
8
8
 
9
9
  import unique_sdk
10
- from pydantic import ValidationError
11
10
 
12
11
  from unique_toolkit.agentic.evaluation.schemas import EvaluationMetricName
12
+ from unique_toolkit.agentic.feature_flags import FeatureFlagNames
13
13
  from unique_toolkit.agentic.tools.mcp.models import MCPToolConfig
14
14
  from unique_toolkit.agentic.tools.schemas import ToolCallResponse
15
15
  from unique_toolkit.agentic.tools.tool import Tool
16
- from unique_toolkit.agentic.tools.tool_progress_reporter import ToolProgressReporter
16
+ from unique_toolkit.agentic.tools.tool_progress_reporter import (
17
+ ProgressState,
18
+ ToolProgressReporter,
19
+ )
17
20
  from unique_toolkit.app.schemas import ChatEvent, McpServer, McpTool
18
21
  from unique_toolkit.chat.schemas import MessageLog, MessageLogStatus
19
22
  from unique_toolkit.chat.service import ChatService
20
23
  from unique_toolkit.content.functions import upload_content_from_bytes
21
- from unique_toolkit.content.schemas import ContentChunk, ContentReference
24
+ from unique_toolkit.experimental.resources.feature_flags import is_flag_enabled
22
25
  from unique_toolkit.language_model import LanguageModelService
23
26
  from unique_toolkit.language_model.schemas import (
24
27
  LanguageModelFunction,
@@ -27,8 +30,6 @@ from unique_toolkit.language_model.schemas import (
27
30
 
28
31
  logger = logging.getLogger(__name__)
29
32
 
30
- REFERENCE_META_KEY = "unique.app/reference"
31
-
32
33
 
33
34
  class MCPToolWrapper(Tool[MCPToolConfig]):
34
35
  """Wrapper class for MCP tools that implements the Tool interface"""
@@ -71,7 +72,7 @@ class MCPToolWrapper(Tool[MCPToolConfig]):
71
72
  parameters=self._mcp_tool.input_schema,
72
73
  )
73
74
 
74
- def _json_schema_to_python_type(self, schema: dict[str, Any]) -> type:
75
+ def _json_schema_to_python_type(self, schema: Dict[str, Any]) -> type:
75
76
  """Convert JSON schema type to Python type"""
76
77
  json_type = schema.get("type", "string")
77
78
 
@@ -132,6 +133,18 @@ class MCPToolWrapper(Tool[MCPToolConfig]):
132
133
  active_message_log=active_message_log,
133
134
  )
134
135
 
136
+ # Notify progress if reporter is available
137
+ if self._tool_progress_reporter and not await is_flag_enabled(
138
+ FeatureFlagNames.enable_new_answers_ui_un_14411,
139
+ company_id=self._event.company_id,
140
+ ):
141
+ await self._tool_progress_reporter.notify_from_tool_call(
142
+ tool_call=tool_call,
143
+ name=f"**{self.display_name()}**",
144
+ message=f"Executing MCP tool: {self.display_name()}",
145
+ state=ProgressState.RUNNING,
146
+ )
147
+
135
148
  try:
136
149
  # Robust argument extraction and validation
137
150
  arguments = self._extract_and_validate_arguments(tool_call)
@@ -139,14 +152,9 @@ class MCPToolWrapper(Tool[MCPToolConfig]):
139
152
  # Use SDK to call the public API
140
153
  result = await self._call_mcp_tool_via_sdk(arguments)
141
154
 
142
- content_chunks, references = self._extract_structured_references(result)
143
155
  content_str, image_data_urls = await asyncio.to_thread(
144
156
  self._process_mcp_result, result
145
157
  )
146
- if content_chunks:
147
- # Structured references already carry the text; keep any
148
- # extracted images but drop the redundant flat text.
149
- content_str = ""
150
158
 
151
159
  # TODO: Why result here not applied directly to the body of the tool_response? like so how does it know the results in the history?
152
160
  tool_response = ToolCallResponse(
@@ -159,16 +167,26 @@ class MCPToolWrapper(Tool[MCPToolConfig]):
159
167
  },
160
168
  error_message="",
161
169
  content=content_str,
162
- content_chunks=content_chunks or None,
163
170
  image_data_urls=image_data_urls,
164
171
  )
165
172
 
173
+ # Notify completion
174
+ if self._tool_progress_reporter and not await is_flag_enabled(
175
+ FeatureFlagNames.enable_new_answers_ui_un_14411,
176
+ company_id=self._event.company_id,
177
+ ):
178
+ await self._tool_progress_reporter.notify_from_tool_call(
179
+ tool_call=tool_call,
180
+ name=f"**{self.display_name()}**",
181
+ message=f"MCP tool completed: {self.display_name()}",
182
+ state=ProgressState.FINISHED,
183
+ )
184
+
166
185
  # Update message log entry to completed
167
186
  active_message_log = self._create_or_update_message_log(
168
187
  progress_message="_Completed MCP tool_",
169
188
  status=MessageLogStatus.COMPLETED,
170
189
  active_message_log=active_message_log,
171
- references=references,
172
190
  )
173
191
 
174
192
  return tool_response
@@ -176,6 +194,18 @@ class MCPToolWrapper(Tool[MCPToolConfig]):
176
194
  except Exception as e:
177
195
  self.logger.error(f"Error executing MCP tool {self.name}: {e}")
178
196
 
197
+ # Notify failure
198
+ if self._tool_progress_reporter and not await is_flag_enabled(
199
+ FeatureFlagNames.enable_new_answers_ui_un_14411,
200
+ company_id=self._event.company_id,
201
+ ):
202
+ await self._tool_progress_reporter.notify_from_tool_call(
203
+ tool_call=tool_call,
204
+ name=f"**{self.display_name()}**",
205
+ message=f"MCP tool failed: {str(e)}",
206
+ state=ProgressState.FAILED,
207
+ )
208
+
179
209
  # Update message log entry to failed
180
210
  active_message_log = self._create_or_update_message_log(
181
211
  progress_message="_Failed executing MCP tool_",
@@ -200,19 +230,17 @@ class MCPToolWrapper(Tool[MCPToolConfig]):
200
230
  progress_message: str | None = None,
201
231
  status: MessageLogStatus = MessageLogStatus.RUNNING,
202
232
  active_message_log: MessageLog | None = None,
203
- references: list[ContentReference] | None = None,
204
233
  ) -> MessageLog | None:
205
234
  return self._message_step_logger.create_or_update_message_log(
206
235
  active_message_log=active_message_log,
207
236
  header=self.display_name(),
208
237
  progress_message=progress_message,
209
238
  status=status,
210
- references=references or [],
211
239
  )
212
240
 
213
241
  def _extract_and_validate_arguments(
214
242
  self, tool_call: LanguageModelFunction
215
- ) -> dict[str, Any]:
243
+ ) -> Dict[str, Any]:
216
244
  """
217
245
  Extract and validate arguments from tool call, handling various formats robustly.
218
246
 
@@ -259,39 +287,7 @@ class MCPToolWrapper(Tool[MCPToolConfig]):
259
287
  f"Unexpected arguments type for MCP tool {self.name}: {type(raw_arguments)}"
260
288
  )
261
289
 
262
- def _extract_structured_references(
263
- self, result: dict[str, Any]
264
- ) -> tuple[list[ContentChunk], list[ContentReference]]:
265
- """Opt-in: content items with valid ``unique.app/reference`` + chunk ``_meta``."""
266
- chunks: list[ContentChunk] = []
267
- references: list[ContentReference] = []
268
- content_items = self._extract_content_items(result)
269
- for item in content_items:
270
- if not isinstance(item, dict) or item.get("type") != "text":
271
- continue
272
- meta = item.get("_meta")
273
- if not isinstance(meta, dict):
274
- continue
275
- ref_payload = meta.get(REFERENCE_META_KEY)
276
- if not isinstance(ref_payload, dict):
277
- continue
278
- try:
279
- reference = ContentReference.model_validate(ref_payload)
280
- chunk = ContentChunk.model_validate(
281
- {k: v for k, v in meta.items() if k != REFERENCE_META_KEY}
282
- )
283
- except ValidationError:
284
- self.logger.warning(
285
- "MCP tool %s: ignoring invalid %s metadata",
286
- self.name,
287
- REFERENCE_META_KEY,
288
- )
289
- continue
290
- references.append(reference)
291
- chunks.append(chunk)
292
- return chunks, references
293
-
294
- def _process_mcp_result(self, result: dict[str, Any]) -> tuple[str, list[str]]:
290
+ def _process_mcp_result(self, result: Dict[str, Any]) -> tuple[str, list[str]]:
295
291
  """Parse MCP result content array, upload images, return content string and data URLs."""
296
292
  content_items = self._extract_content_items(result)
297
293
  if not content_items:
@@ -331,7 +327,7 @@ class MCPToolWrapper(Tool[MCPToolConfig]):
331
327
  content_str = json.dumps(result)
332
328
  return content_str, image_data_urls
333
329
 
334
- def _extract_content_items(self, result: dict[str, Any]) -> list[Any]:
330
+ def _extract_content_items(self, result: Dict[str, Any]) -> list[Any]:
335
331
  """Extract content array from MCP result (handles various response shapes)."""
336
332
  if "content" in result and isinstance(result["content"], list):
337
333
  return result["content"]
@@ -382,7 +378,7 @@ class MCPToolWrapper(Tool[MCPToolConfig]):
382
378
 
383
379
  return data_url, content_id
384
380
 
385
- async def _call_mcp_tool_via_sdk(self, arguments: dict[str, Any]) -> dict[str, Any]:
381
+ async def _call_mcp_tool_via_sdk(self, arguments: Dict[str, Any]) -> Dict[str, Any]:
386
382
  """Call MCP tool via SDK to public API"""
387
383
  try:
388
384
  self.logger.info(
@@ -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",