unique-toolkit 2026.38.0.dev0__tar.gz → 2026.38.0.dev2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (427) hide show
  1. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/PKG-INFO +1 -1
  2. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/pyproject.toml +1 -1
  3. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/postprocessors/artifacts.py +7 -5
  4. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/postprocessors/generated_files.py +127 -21
  5. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/schemas.py +10 -0
  6. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/language_model/model_costs.py +9 -2
  7. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/README.md +0 -0
  8. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/__init__.py +0 -0
  9. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/_common/__init__.py +0 -0
  10. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/_common/_base_service.py +0 -0
  11. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/_common/_time_utils.py +0 -0
  12. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/_common/api_calling/human_verification_manager.py +0 -0
  13. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/_common/base_model_type_attribute.py +0 -0
  14. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/_common/chunk_relevancy_sorter/config.py +0 -0
  15. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/_common/chunk_relevancy_sorter/exception.py +0 -0
  16. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/_common/chunk_relevancy_sorter/schemas.py +0 -0
  17. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/_common/chunk_relevancy_sorter/service.py +0 -0
  18. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/_common/chunk_relevancy_sorter/tests/test_service.py +0 -0
  19. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/_common/config_checker/README.md +0 -0
  20. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/_common/config_checker/__init__.py +0 -0
  21. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/_common/config_checker/__main__.py +0 -0
  22. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/_common/config_checker/cli.py +0 -0
  23. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/_common/config_checker/differ.py +0 -0
  24. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/_common/config_checker/exporter.py +0 -0
  25. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/_common/config_checker/models.py +0 -0
  26. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/_common/config_checker/registry.py +0 -0
  27. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/_common/config_checker/validator.py +0 -0
  28. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/_common/default_language_model.py +0 -0
  29. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/_common/docx_generator/__init__.py +0 -0
  30. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/_common/docx_generator/config.py +0 -0
  31. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/_common/docx_generator/pandoc_converter.py +0 -0
  32. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/_common/docx_generator/schemas.py +0 -0
  33. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/_common/docx_generator/service.py +0 -0
  34. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/_common/docx_generator/template/Doc Template.docx +0 -0
  35. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/_common/endpoint_builder.py +0 -0
  36. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/_common/endpoint_requestor.py +0 -0
  37. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/_common/event_bus.py +0 -0
  38. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/_common/exception.py +0 -0
  39. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/_common/execution.py +0 -0
  40. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/_common/experimental/endpoint_builder.py +0 -0
  41. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/_common/experimental/endpoint_requestor.py +0 -0
  42. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/_common/experimental/write_up_agent/README.md +0 -0
  43. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/_common/experimental/write_up_agent/__init__.py +0 -0
  44. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/_common/experimental/write_up_agent/agent.py +0 -0
  45. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/_common/experimental/write_up_agent/config.py +0 -0
  46. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/_common/experimental/write_up_agent/examples/data.csv +0 -0
  47. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/_common/experimental/write_up_agent/examples/example_usage.py +0 -0
  48. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/_common/experimental/write_up_agent/schemas.py +0 -0
  49. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/_common/experimental/write_up_agent/services/__init__.py +0 -0
  50. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/_common/experimental/write_up_agent/services/dataframe_handler/__init__.py +0 -0
  51. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/_common/experimental/write_up_agent/services/dataframe_handler/exceptions.py +0 -0
  52. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/_common/experimental/write_up_agent/services/dataframe_handler/service.py +0 -0
  53. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/_common/experimental/write_up_agent/services/dataframe_handler/utils.py +0 -0
  54. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/__init__.py +0 -0
  55. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/config.py +0 -0
  56. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/exceptions.py +0 -0
  57. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/prompts/config.py +0 -0
  58. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/prompts/system_prompt.j2 +0 -0
  59. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/prompts/user_prompt.j2 +0 -0
  60. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/service.py +0 -0
  61. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/_common/experimental/write_up_agent/services/template_handler/__init__.py +0 -0
  62. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/_common/experimental/write_up_agent/services/template_handler/default_template.j2 +0 -0
  63. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/_common/experimental/write_up_agent/services/template_handler/exceptions.py +0 -0
  64. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/_common/experimental/write_up_agent/services/template_handler/service.py +0 -0
  65. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/_common/experimental/write_up_agent/services/template_handler/utils.py +0 -0
  66. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/_common/experimental/write_up_agent/utils.py +0 -0
  67. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/_common/feature_flags/schema.py +0 -0
  68. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/_common/metadata_filter_scope.py +0 -0
  69. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/_common/pydantic/rjsf_tags.py +0 -0
  70. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/_common/pydantic_helpers.py +0 -0
  71. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/_common/referencing.py +0 -0
  72. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/_common/string_utilities.py +0 -0
  73. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/_common/tests/test_referencing.py +0 -0
  74. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/_common/tests/test_string_utilities.py +0 -0
  75. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/_common/token/__init__.py +0 -0
  76. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/_common/token/image_token_counting.py +0 -0
  77. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/_common/token/token_counting.py +0 -0
  78. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/_common/token/tokenizers/deepseek/tokenizer.json +0 -0
  79. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/_common/token/tokenizers/qwen/tokenizer.json +0 -0
  80. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/_common/utils/__init__.py +0 -0
  81. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/_common/utils/files.py +0 -0
  82. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/_common/utils/image/encode.py +0 -0
  83. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/_common/utils/jinja/helpers.py +0 -0
  84. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/_common/utils/jinja/render.py +0 -0
  85. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/_common/utils/jinja/schema.py +0 -0
  86. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/_common/utils/jinja/utils.py +0 -0
  87. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/_common/utils/structured_output/__init__.py +0 -0
  88. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/_common/utils/structured_output/schema.py +0 -0
  89. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/_common/utils/write_configuration.py +0 -0
  90. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/_common/validate_required_values.py +0 -0
  91. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/_common/validators.py +0 -0
  92. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/__init__.py +0 -0
  93. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/debug_info_manager/debug_info_manager.py +0 -0
  94. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/debug_info_manager/test/test_debug_info_manager.py +0 -0
  95. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/evaluation/config.py +0 -0
  96. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/evaluation/context_relevancy/prompts/__init__.py +0 -0
  97. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/evaluation/context_relevancy/prompts/system_prompt.j2 +0 -0
  98. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/evaluation/context_relevancy/prompts/user_prompt.j2 +0 -0
  99. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/evaluation/context_relevancy/schema.py +0 -0
  100. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/evaluation/context_relevancy/service.py +0 -0
  101. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/evaluation/evaluation_manager.py +0 -0
  102. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/evaluation/exception.py +0 -0
  103. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/evaluation/hallucination/constants.py +0 -0
  104. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/evaluation/hallucination/hallucination_evaluation.py +0 -0
  105. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/evaluation/hallucination/prompts/__init__.py +0 -0
  106. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/evaluation/hallucination/prompts/system_prompt.j2 +0 -0
  107. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/evaluation/hallucination/prompts/user_prompt.j2 +0 -0
  108. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/evaluation/hallucination/service.py +0 -0
  109. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/evaluation/hallucination/utils.py +0 -0
  110. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/evaluation/output_parser.py +0 -0
  111. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/evaluation/schemas.py +0 -0
  112. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/evaluation/tests/fixtures.py +0 -0
  113. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/evaluation/tests/test_config.py +0 -0
  114. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/evaluation/tests/test_context_relevancy_service.py +0 -0
  115. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/evaluation/tests/test_hallucination_constants.py +0 -0
  116. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/evaluation/tests/test_hallucination_external_context.py +0 -0
  117. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/evaluation/tests/test_hallucination_utils.py +0 -0
  118. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/evaluation/tests/test_output_parser.py +0 -0
  119. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/evaluation/tests/test_prompt_loaders.py +0 -0
  120. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/evaluation/utils.py +0 -0
  121. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/feature_flags/__init__.py +0 -0
  122. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/feature_flags/feature_flags.py +0 -0
  123. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/history_manager/history_construction_with_contents.py +0 -0
  124. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/history_manager/history_manager.py +0 -0
  125. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/history_manager/loop_token_reducer.py +0 -0
  126. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/history_manager/settings.py +0 -0
  127. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/history_manager/utils.py +0 -0
  128. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/loop_runner/__init__.py +0 -0
  129. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/loop_runner/_iteration_handler_utils.py +0 -0
  130. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/loop_runner/_responses_iteration_handler_utils.py +0 -0
  131. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/loop_runner/_responses_stream_handler_utils.py +0 -0
  132. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/loop_runner/_stream_handler_utils.py +0 -0
  133. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/loop_runner/base.py +0 -0
  134. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/loop_runner/middleware/__init__.py +0 -0
  135. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/loop_runner/middleware/planning/__init__.py +0 -0
  136. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/loop_runner/middleware/planning/planning.py +0 -0
  137. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/loop_runner/middleware/planning/schema.py +0 -0
  138. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/loop_runner/runners/__init__.py +0 -0
  139. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/loop_runner/runners/basic.py +0 -0
  140. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/loop_runner/runners/mistral/__init__.py +0 -0
  141. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/loop_runner/runners/mistral/mistral_runner.py +0 -0
  142. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/loop_runner/runners/qwen/__init__.py +0 -0
  143. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/loop_runner/runners/qwen/helpers.py +0 -0
  144. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/loop_runner/runners/qwen/qwen_runner.py +0 -0
  145. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/message_log_manager/__init__.py +0 -0
  146. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/message_log_manager/service.py +0 -0
  147. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/message_log_order.py +0 -0
  148. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/postprocessor/postprocessor_manager.py +0 -0
  149. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/reference_manager/reference_manager.py +0 -0
  150. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/reference_manager/tests/test_external_context.py +0 -0
  151. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/responses_api/__init__.py +0 -0
  152. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/responses_api/postprocessors/code_display.py +0 -0
  153. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/responses_api/postprocessors/generated_files.py +0 -0
  154. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/responses_api/stream_handler.py +0 -0
  155. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/short_term_memory_manager/persistent_short_term_memory_manager.py +0 -0
  156. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/thinking_manager/thinking_manager.py +0 -0
  157. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/tools/__init__.py +0 -0
  158. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/tools/a2a/__init__.py +0 -0
  159. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/tools/a2a/config.py +0 -0
  160. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/tools/a2a/evaluation/__init__.py +0 -0
  161. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/tools/a2a/evaluation/_utils.py +0 -0
  162. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/tools/a2a/evaluation/config.py +0 -0
  163. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/tools/a2a/evaluation/evaluator.py +0 -0
  164. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/tools/a2a/evaluation/summarization_user_message.j2 +0 -0
  165. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/tools/a2a/manager.py +0 -0
  166. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/tools/a2a/postprocessing/__init__.py +0 -0
  167. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/tools/a2a/postprocessing/_display_utils.py +0 -0
  168. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/tools/a2a/postprocessing/_ref_utils.py +0 -0
  169. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/tools/a2a/postprocessing/config.py +0 -0
  170. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/tools/a2a/postprocessing/display.py +0 -0
  171. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/tools/a2a/postprocessing/references.py +0 -0
  172. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/tools/a2a/postprocessing/test/test_display.py +0 -0
  173. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/tools/a2a/postprocessing/test/test_display_utils.py +0 -0
  174. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/tools/a2a/postprocessing/test/test_ref_utils.py +0 -0
  175. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/tools/a2a/postprocessing/test/test_references.py +0 -0
  176. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/tools/a2a/prompts.py +0 -0
  177. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/tools/a2a/response_watcher/__init__.py +0 -0
  178. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/tools/a2a/response_watcher/service.py +0 -0
  179. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/tools/a2a/tool/__init__.py +0 -0
  180. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/tools/a2a/tool/_memory.py +0 -0
  181. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/tools/a2a/tool/_schema.py +0 -0
  182. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/tools/a2a/tool/config.py +0 -0
  183. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/tools/a2a/tool/service.py +0 -0
  184. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/tools/a2a/tool/test/test_service_utils.py +0 -0
  185. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/tools/agent_chunks_hanlder.py +0 -0
  186. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/tools/config.py +0 -0
  187. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/tools/experimental/__init__.py +0 -0
  188. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/tools/experimental/ask_user_tool/__init__.py +0 -0
  189. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/tools/experimental/ask_user_tool/config.py +0 -0
  190. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/tools/experimental/ask_user_tool/tool.py +0 -0
  191. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/tools/experimental/open_file_tool/__init__.py +0 -0
  192. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/tools/experimental/open_file_tool/config.py +0 -0
  193. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/tools/experimental/open_file_tool/runtime.py +0 -0
  194. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/tools/experimental/open_file_tool/tool.py +0 -0
  195. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/tools/experimental/retrieve_search_scope_tool/__init__.py +0 -0
  196. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/tools/experimental/retrieve_search_scope_tool/config.py +0 -0
  197. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/tools/experimental/retrieve_search_scope_tool/tool.py +0 -0
  198. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/tools/experimental/todo/__init__.py +0 -0
  199. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/tools/experimental/todo/config.py +0 -0
  200. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/tools/experimental/todo/prompts/__init__.py +0 -0
  201. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/tools/experimental/todo/prompts/execution_reminder.j2 +0 -0
  202. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/tools/experimental/todo/prompts/system_prompt.j2 +0 -0
  203. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/tools/experimental/todo/prompts/tool_description.j2 +0 -0
  204. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/tools/experimental/todo/prompts/verification_nudge.j2 +0 -0
  205. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/tools/experimental/todo/schemas.py +0 -0
  206. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/tools/experimental/todo/service.py +0 -0
  207. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/tools/factory.py +0 -0
  208. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/tools/mcp/__init__.py +0 -0
  209. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/tools/mcp/manager.py +0 -0
  210. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/tools/mcp/models.py +0 -0
  211. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/tools/mcp/tool_wrapper.py +0 -0
  212. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/tools/names.py +0 -0
  213. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/tools/openai_builtin/__init__.py +0 -0
  214. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/tools/openai_builtin/base.py +0 -0
  215. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/__init__.py +0 -0
  216. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/activator/__init__.py +0 -0
  217. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/activator/config.py +0 -0
  218. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/activator/service.py +0 -0
  219. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/builder/__init__.py +0 -0
  220. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/builder/_container.py +0 -0
  221. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/builder/_files.py +0 -0
  222. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/builder/_memory.py +0 -0
  223. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/builder/builder.py +0 -0
  224. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/config.py +0 -0
  225. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/postprocessors/__init__.py +0 -0
  226. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/postprocessors/code_display.py +0 -0
  227. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/postprocessors/office_preview.py +0 -0
  228. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/tool/__init__.py +0 -0
  229. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/tool/config.py +0 -0
  230. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/tool/service.py +0 -0
  231. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/tools/openai_builtin/manager.py +0 -0
  232. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/tools/run_context.py +0 -0
  233. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/tools/schemas.py +0 -0
  234. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/tools/test/test_mcp_manager.py +0 -0
  235. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/tools/test/test_tool_progress_reporter.py +0 -0
  236. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/tools/tool.py +0 -0
  237. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/tools/tool_manager.py +0 -0
  238. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/tools/tool_progress_reporter.py +0 -0
  239. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/tools/utils/__init__.py +0 -0
  240. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/tools/utils/source_handling/__init__.py +0 -0
  241. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/tools/utils/source_handling/schema.py +0 -0
  242. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/tools/utils/source_handling/source_formatting.py +0 -0
  243. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/tools/utils/source_handling/tests/test_source_formatting.py +0 -0
  244. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic_table/__init__.py +0 -0
  245. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic_table/schemas.py +0 -0
  246. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic_table/service.py +0 -0
  247. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic_table/synthetic_chat_event.py +0 -0
  248. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/app/__init__.py +0 -0
  249. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/app/chat_event_filter_options_settings.py +0 -0
  250. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/app/dev_util.py +0 -0
  251. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/app/fast_api_factory.py +0 -0
  252. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/app/feature_flags.py +0 -0
  253. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/app/find_env_file.py +0 -0
  254. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/app/init_logging.py +0 -0
  255. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/app/init_sdk.py +0 -0
  256. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/app/performance/async_tasks.py +0 -0
  257. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/app/performance/async_wrapper.py +0 -0
  258. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/app/schemas.py +0 -0
  259. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/app/unique_settings.py +0 -0
  260. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/app/verification.py +0 -0
  261. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/app/webhook.py +0 -0
  262. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/chat/__init__.py +0 -0
  263. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/chat/cancellation.py +0 -0
  264. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/chat/constants.py +0 -0
  265. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/chat/deprecated/__init__.py +0 -0
  266. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/chat/deprecated/service.py +0 -0
  267. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/chat/functions.py +0 -0
  268. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/chat/rendering.py +0 -0
  269. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/chat/responses_api.py +0 -0
  270. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/chat/schemas.py +0 -0
  271. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/chat/service.py +0 -0
  272. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/chat/state.py +0 -0
  273. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/chat/utils.py +0 -0
  274. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/content/__init__.py +0 -0
  275. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/content/constants.py +0 -0
  276. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/content/functions.py +0 -0
  277. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/content/schemas.py +0 -0
  278. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/content/service.py +0 -0
  279. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/content/smart_rules.py +0 -0
  280. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/content/utils.py +0 -0
  281. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/data_extraction/README.md +0 -0
  282. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/data_extraction/__init__.py +0 -0
  283. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/data_extraction/augmented/__init__.py +0 -0
  284. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/data_extraction/augmented/service.py +0 -0
  285. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/data_extraction/base.py +0 -0
  286. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/data_extraction/basic/__init__.py +0 -0
  287. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/data_extraction/basic/config.py +0 -0
  288. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/data_extraction/basic/prompt.py +0 -0
  289. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/data_extraction/basic/service.py +0 -0
  290. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/elicitation/__init__.py +0 -0
  291. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/elicitation/constants.py +0 -0
  292. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/elicitation/exceptions.py +0 -0
  293. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/elicitation/functions.py +0 -0
  294. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/elicitation/schemas.py +0 -0
  295. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/elicitation/service.py +0 -0
  296. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/embedding/__init__.py +0 -0
  297. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/embedding/constants.py +0 -0
  298. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/embedding/functions.py +0 -0
  299. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/embedding/schemas.py +0 -0
  300. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/embedding/service.py +0 -0
  301. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/embedding/utils.py +0 -0
  302. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/experimental/README.md +0 -0
  303. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/experimental/__init__.py +0 -0
  304. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/experimental/_internal/__init__.py +0 -0
  305. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/experimental/_internal/streaming/__init__.py +0 -0
  306. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/experimental/_internal/streaming/common.py +0 -0
  307. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/experimental/_internal/streaming/pattern_replacer.py +0 -0
  308. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/experimental/components/__init__.py +0 -0
  309. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/experimental/components/_base.py +0 -0
  310. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/experimental/components/content_tree/__init__.py +0 -0
  311. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/experimental/components/content_tree/functions.py +0 -0
  312. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/experimental/components/content_tree/schemas.py +0 -0
  313. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/experimental/components/content_tree/service.py +0 -0
  314. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/experimental/components/internal_search/__init__.py +0 -0
  315. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/experimental/components/internal_search/base/__init__.py +0 -0
  316. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/experimental/components/internal_search/base/config.py +0 -0
  317. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/experimental/components/internal_search/base/schemas.py +0 -0
  318. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/experimental/components/internal_search/base/service.py +0 -0
  319. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/experimental/components/internal_search/base/utils.py +0 -0
  320. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/experimental/components/internal_search/chat/__init__.py +0 -0
  321. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/experimental/components/internal_search/chat/config.py +0 -0
  322. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/experimental/components/internal_search/chat/schemas.py +0 -0
  323. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/experimental/components/internal_search/chat/service.py +0 -0
  324. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/experimental/components/internal_search/knowledge_base/__init__.py +0 -0
  325. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/experimental/components/internal_search/knowledge_base/config.py +0 -0
  326. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/experimental/components/internal_search/knowledge_base/schemas.py +0 -0
  327. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/experimental/components/internal_search/knowledge_base/service.py +0 -0
  328. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/experimental/components/internal_search/post_processing/__init__.py +0 -0
  329. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/experimental/components/internal_search/post_processing/config.py +0 -0
  330. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/experimental/components/internal_search/post_processing/service.py +0 -0
  331. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/experimental/content_tree/__init__.py +0 -0
  332. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/experimental/identity/__init__.py +0 -0
  333. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/experimental/integrations/__init__.py +0 -0
  334. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/experimental/integrations/openai/__init__.py +0 -0
  335. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/experimental/integrations/openai/streaming/__init__.py +0 -0
  336. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/__init__.py +0 -0
  337. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/_async_bridge.py +0 -0
  338. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/_model_params.py +0 -0
  339. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/chat_completions/__init__.py +0 -0
  340. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/chat_completions/complete_with_references.py +0 -0
  341. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/chat_completions/stream_event_router.py +0 -0
  342. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/chat_completions/text_event_handler.py +0 -0
  343. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/chat_completions/tool_call_event_handler.py +0 -0
  344. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/events.py +0 -0
  345. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/protocols/__init__.py +0 -0
  346. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/protocols/chat_completions.py +0 -0
  347. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/protocols/responses.py +0 -0
  348. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/responses/__init__.py +0 -0
  349. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/responses/code_interpreter_event_handler.py +0 -0
  350. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/responses/complete_with_references.py +0 -0
  351. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/responses/completed_event_handler.py +0 -0
  352. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/responses/stream_event_router.py +0 -0
  353. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/responses/text_delta_event_handler.py +0 -0
  354. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/responses/tool_call_event_handler.py +0 -0
  355. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/subscribers/__init__.py +0 -0
  356. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/subscribers/message_persister.py +0 -0
  357. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/subscribers/progress_log_persister.py +0 -0
  358. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/experimental/resources/__init__.py +0 -0
  359. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/experimental/resources/content_folder/__init__.py +0 -0
  360. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/experimental/resources/content_folder/functions.py +0 -0
  361. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/experimental/resources/content_folder/schemas.py +0 -0
  362. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/experimental/resources/content_folder/service.py +0 -0
  363. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/experimental/resources/facades/__init__.py +0 -0
  364. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/experimental/resources/facades/identity/__init__.py +0 -0
  365. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/experimental/resources/facades/identity/service.py +0 -0
  366. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/experimental/resources/feature_flags/README.md +0 -0
  367. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/experimental/resources/feature_flags/__init__.py +0 -0
  368. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/experimental/resources/feature_flags/_graphql_client.py +0 -0
  369. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/experimental/resources/feature_flags/_ttl_cache.py +0 -0
  370. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/experimental/resources/feature_flags/client.py +0 -0
  371. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/experimental/resources/feature_flags/schemas.py +0 -0
  372. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/experimental/resources/feature_flags/settings.py +0 -0
  373. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/experimental/resources/group/__init__.py +0 -0
  374. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/experimental/resources/group/functions.py +0 -0
  375. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/experimental/resources/group/schemas.py +0 -0
  376. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/experimental/resources/group/service.py +0 -0
  377. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/experimental/resources/scheduled_task/__init__.py +0 -0
  378. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/experimental/resources/scheduled_task/cron.py +0 -0
  379. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/experimental/resources/scheduled_task/functions.py +0 -0
  380. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/experimental/resources/scheduled_task/schemas.py +0 -0
  381. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/experimental/resources/scheduled_task/service.py +0 -0
  382. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/experimental/resources/user/__init__.py +0 -0
  383. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/experimental/resources/user/functions.py +0 -0
  384. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/experimental/resources/user/schemas.py +0 -0
  385. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/experimental/resources/user/service.py +0 -0
  386. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/experimental/testing/__init__.py +0 -0
  387. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/framework_utilities/__init__.py +0 -0
  388. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/framework_utilities/langchain/__init__.py +0 -0
  389. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/framework_utilities/langchain/client.py +0 -0
  390. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/framework_utilities/langchain/history.py +0 -0
  391. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/framework_utilities/openai/__init__.py +0 -0
  392. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/framework_utilities/openai/client.py +0 -0
  393. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/framework_utilities/openai/message_builder.py +0 -0
  394. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/framework_utilities/utils.py +0 -0
  395. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/language_model/__init__.py +0 -0
  396. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/language_model/_responses_api_utils.py +0 -0
  397. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/language_model/builder.py +0 -0
  398. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/language_model/constants.py +0 -0
  399. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/language_model/default_language_model.py +0 -0
  400. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/language_model/functions.py +0 -0
  401. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/language_model/infos.py +0 -0
  402. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/language_model/invocation_stats.py +0 -0
  403. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/language_model/prompt.py +0 -0
  404. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/language_model/reference.py +0 -0
  405. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/language_model/schemas.py +0 -0
  406. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/language_model/service.py +0 -0
  407. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/language_model/settings.py +0 -0
  408. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/language_model/stream_transform.py +0 -0
  409. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/language_model/utils.py +0 -0
  410. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/monitoring/__init__.py +0 -0
  411. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/monitoring/gunicorn.py +0 -0
  412. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/monitoring/middleware.py +0 -0
  413. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/monitoring/registry.py +0 -0
  414. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/monitoring/tracing.py +0 -0
  415. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/protocols/support.py +0 -0
  416. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/services/__init__.py +0 -0
  417. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/services/chat_service.py +0 -0
  418. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/services/factory.py +0 -0
  419. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/services/knowledge_base.py +0 -0
  420. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/short_term_memory/__init__.py +0 -0
  421. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/short_term_memory/constants.py +0 -0
  422. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/short_term_memory/functions.py +0 -0
  423. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/short_term_memory/schemas.py +0 -0
  424. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/short_term_memory/service.py +0 -0
  425. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/smart_rules/__init__.py +0 -0
  426. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/smart_rules/compile.py +0 -0
  427. {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/test_utilities/events.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: unique-toolkit
3
- Version: 2026.38.0.dev0
3
+ Version: 2026.38.0.dev2
4
4
  Summary:
5
5
  Author: Cedric Klinkert, Martin Fadler, Sadique Sheik, Fabian Schläpfer, Pascal Hauri, Ejiroghene Oki-Peter, Rami Azouz, Ricardo Visini, Sanzio Monti
6
6
  Author-email: Cedric Klinkert <cedric.klinkert@unique.ch>, Martin Fadler <martin.fadler@unique.ch>, Sadique Sheik <sadique@unique.ch>, Fabian Schläpfer <fabian@unique.ch>, Pascal Hauri <pascal@unique.ch>, Ejiroghene Oki-Peter <oki-peter.ejiroghene@unique.ai>, Rami Azouz <rami.ext@unique.ch>, Ricardo Visini <ricardo.visini@unique.ch>, Sanzio Monti <sanzio.monti@unique.ai>
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "unique_toolkit"
3
- version = "2026.38.0.dev0"
3
+ version = "2026.38.0.dev2"
4
4
  description = ""
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.12"
@@ -6,7 +6,6 @@ from pathlib import Path
6
6
  from typing import Any
7
7
 
8
8
  import unique_sdk.utils.file_io as file_io
9
- from openai.types.responses.response_output_text import AnnotationContainerFileCitation
10
9
  from pydantic import BaseModel
11
10
 
12
11
  from unique_toolkit import ChatService
@@ -16,6 +15,9 @@ from unique_toolkit.agentic.tools.openai_builtin.code_interpreter.postprocessors
16
15
  convert_office_bytes_to_preview_pdf,
17
16
  office_extension,
18
17
  )
18
+ from unique_toolkit.agentic.tools.openai_builtin.code_interpreter.schemas import (
19
+ CodeInterpreterContainerFile,
20
+ )
19
21
  from unique_toolkit.content.schemas import Content
20
22
 
21
23
  _CODE_EXECUTION_ARTIFACT_METADATA_KEY: str = "codeExecutionArtifactMetadata"
@@ -61,7 +63,7 @@ def _kb_safe_mime(mime: str) -> str:
61
63
 
62
64
 
63
65
  def _artifact_metadata(
64
- file: AnnotationContainerFileCitation,
66
+ file: CodeInterpreterContainerFile,
65
67
  ) -> dict[str, Any]:
66
68
  return {
67
69
  _CODE_EXECUTION_ARTIFACT_METADATA_KEY: CodeExecutionArtifactMetadata(
@@ -74,7 +76,7 @@ def _artifact_metadata(
74
76
 
75
77
  async def _upload_artifact_bytes(
76
78
  chat_service: ChatService,
77
- file: AnnotationContainerFileCitation,
79
+ file: CodeInterpreterContainerFile,
78
80
  file_bytes: bytes,
79
81
  mime: str,
80
82
  ) -> Content:
@@ -97,7 +99,7 @@ async def _upload_artifact_bytes(
97
99
 
98
100
  async def _upload_office_artifact_with_preview(
99
101
  chat_service: ChatService,
100
- file: AnnotationContainerFileCitation,
102
+ file: CodeInterpreterContainerFile,
101
103
  file_bytes: bytes,
102
104
  mime: str,
103
105
  ) -> Content | None:
@@ -146,7 +148,7 @@ async def _upload_office_artifact_with_preview(
146
148
 
147
149
  async def save_code_execution_artifact(
148
150
  chat_service: ChatService,
149
- file: AnnotationContainerFileCitation,
151
+ file: CodeInterpreterContainerFile,
150
152
  file_bytes: bytes,
151
153
  *,
152
154
  attach_office_preview: bool = False,
@@ -6,10 +6,10 @@ import time
6
6
  from dataclasses import dataclass
7
7
  from mimetypes import guess_type
8
8
  from typing import NamedTuple, TypedDict, override
9
+ from urllib.parse import quote, unquote
9
10
 
10
11
  import httpx
11
12
  from openai import AsyncOpenAI
12
- from openai.types.responses.response_output_text import AnnotationContainerFileCitation
13
13
  from pydantic import BaseModel, Field, RootModel
14
14
  from pydantic.json_schema import SkipJsonSchema
15
15
  from tenacity import (
@@ -34,6 +34,7 @@ from unique_toolkit.agentic.tools.openai_builtin.code_interpreter.postprocessors
34
34
  )
35
35
  from unique_toolkit.agentic.tools.openai_builtin.code_interpreter.schemas import (
36
36
  CodeInterpreterBlock,
37
+ CodeInterpreterContainerFile,
37
38
  CodeInterpreterFile,
38
39
  CodeInterpreterFileType,
39
40
  )
@@ -311,7 +312,7 @@ class _FileProgressTracker:
311
312
  if state.phase == "pending":
312
313
  continue
313
314
  progress = self._format_inline(filename, state)
314
- pattern = rf"!?\[.*?\]\(sandbox:/mnt/data/{re.escape(filename)}\)"
315
+ pattern = _sandbox_link_pattern(filename)
315
316
  text = re.sub(pattern, progress, text)
316
317
 
317
318
  active = {
@@ -401,6 +402,7 @@ class DisplayCodeInterpreterFilesPostProcessor(
401
402
 
402
403
  # Cleared at the start of each run(); holds this-turn download sizes.
403
404
  self._file_size_map: dict[str, int] = {}
405
+ self._container_files: list[CodeInterpreterContainerFile] = []
404
406
 
405
407
  # Resolved in run() (before apply_postprocessing_to_response) since flag evaluation is async.
406
408
  self._fence_ff_on = False
@@ -419,6 +421,89 @@ class DisplayCodeInterpreterFilesPostProcessor(
419
421
  reraise=True,
420
422
  )
421
423
 
424
+ async def _resolve_container_files(
425
+ self, loop_response: ResponsesLanguageModelStreamResponse
426
+ ) -> list[CodeInterpreterContainerFile]:
427
+ """
428
+ Matches files cited by the agent to their id.
429
+ First tries to match files using the `citations` in the llm response.
430
+ If that fails, uses `container.files.list` in order to find the correct file
431
+ """
432
+ container_files = [
433
+ CodeInterpreterContainerFile(
434
+ container_id=annotation.container_id,
435
+ file_id=annotation.file_id,
436
+ filename=annotation.filename,
437
+ )
438
+ for annotation in loop_response.container_files
439
+ ]
440
+
441
+ text = loop_response.message.text or ""
442
+ cited_files = set(_extract_container_file_citations_from_text(text))
443
+
444
+ unresolved_files = cited_files - {file.filename for file in container_files}
445
+
446
+ if len(unresolved_files) == 0:
447
+ return container_files
448
+
449
+ code_interpreter_calls = loop_response.code_interpreter_calls
450
+
451
+ if len(code_interpreter_calls) == 0:
452
+ return container_files
453
+
454
+ container_id = code_interpreter_calls[0].container_id
455
+
456
+ self._log.info(
457
+ "Recovering %d unresolved sandbox link(s) from container %s: %s",
458
+ len(unresolved_files),
459
+ container_id,
460
+ list(unresolved_files),
461
+ )
462
+
463
+ try:
464
+ async for container_file in self._client.containers.files.list(
465
+ container_id=container_id,
466
+ order="desc",
467
+ ):
468
+ if container_file.source != "assistant":
469
+ continue
470
+
471
+ path = container_file.path
472
+ filename = (
473
+ path.removeprefix("/mnt/data/")
474
+ if path.startswith("/mnt/data/")
475
+ else path
476
+ )
477
+
478
+ if filename in unresolved_files:
479
+ unresolved_files.remove(filename)
480
+ container_files.append(
481
+ CodeInterpreterContainerFile(
482
+ container_id=container_file.container_id,
483
+ file_id=container_file.id,
484
+ filename=filename,
485
+ )
486
+ )
487
+
488
+ if len(unresolved_files) == 0:
489
+ break
490
+
491
+ except Exception:
492
+ self._log.exception(
493
+ "Failed to list files for container %s while recovering "
494
+ "missing citations; dangling-link handling will continue.",
495
+ container_id,
496
+ )
497
+
498
+ if len(unresolved_files) > 0:
499
+ self._log.info(
500
+ "%d sandbox link(s) left unresolved after recovery: %s",
501
+ len(unresolved_files),
502
+ list(unresolved_files),
503
+ )
504
+
505
+ return container_files
506
+
422
507
  @override
423
508
  async def run(
424
509
  self, loop_response: ResponsesLanguageModelStreamResponse
@@ -437,9 +522,10 @@ class DisplayCodeInterpreterFilesPostProcessor(
437
522
  company_id=self._company_id or COMPANY_ID_PLACEHOLDER,
438
523
  )
439
524
 
440
- container_files = loop_response.container_files
525
+ container_files = await self._resolve_container_files(loop_response)
526
+ self._container_files = container_files
441
527
  self._log.info(
442
- "run() found %d container file annotation(s): %s",
528
+ "run() resolved %d container file(s): %s",
443
529
  len(container_files),
444
530
  [cf.filename for cf in container_files],
445
531
  )
@@ -535,10 +621,12 @@ class DisplayCodeInterpreterFilesPostProcessor(
535
621
  save_ms,
536
622
  )
537
623
 
538
- return self._compute_artifacts_debug_info(loop_response)
624
+ return self._compute_artifacts_debug_info(loop_response, container_files)
539
625
 
540
626
  def _compute_artifacts_debug_info(
541
- self, loop_response: ResponsesLanguageModelStreamResponse
627
+ self,
628
+ loop_response: ResponsesLanguageModelStreamResponse,
629
+ container_files: list[CodeInterpreterContainerFile],
542
630
  ) -> ArtifactsDebugInfo | None:
543
631
  """Compute this turn's successfully-created artifacts.
544
632
 
@@ -562,7 +650,7 @@ class DisplayCodeInterpreterFilesPostProcessor(
562
650
 
563
651
  created_filenames = {
564
652
  cf.filename
565
- for cf in loop_response.container_files
653
+ for cf in container_files
566
654
  if self._content_map.get(cf.filename) is not None
567
655
  }
568
656
  total_bytes = sum(
@@ -679,7 +767,10 @@ class DisplayCodeInterpreterFilesPostProcessor(
679
767
 
680
768
  if self._fence_ff_on:
681
769
  code_blocks = _build_code_blocks(
682
- loop_response, self._content_map, include_html=self._html_fence_ff_on
770
+ loop_response,
771
+ self._content_map,
772
+ self._container_files,
773
+ include_html=self._html_fence_ff_on,
683
774
  )
684
775
  self._log.info(
685
776
  "Fence injection — %d code block(s), files: %s",
@@ -733,7 +824,7 @@ class DisplayCodeInterpreterFilesPostProcessor(
733
824
  @failsafe_async(failure_return_value=None, logger=logger)
734
825
  async def _download_and_upload_container_files_to_knowledge_base(
735
826
  self,
736
- container_file: AnnotationContainerFileCitation,
827
+ container_file: CodeInterpreterContainerFile,
737
828
  semaphore: asyncio.Semaphore,
738
829
  tracker: _FileProgressTracker | None = None,
739
830
  ) -> _ContentInfo | None:
@@ -804,7 +895,7 @@ class DisplayCodeInterpreterFilesPostProcessor(
804
895
 
805
896
  async def _download_file_bytes_with_progress(
806
897
  self,
807
- container_file: AnnotationContainerFileCitation,
898
+ container_file: CodeInterpreterContainerFile,
808
899
  tracker: _FileProgressTracker | None,
809
900
  ) -> bytes:
810
901
  """Download container file with streaming progress and manual retry loop.
@@ -887,7 +978,7 @@ class DisplayCodeInterpreterFilesPostProcessor(
887
978
 
888
979
  async def _stream_download_bytes(
889
980
  self,
890
- container_file: AnnotationContainerFileCitation,
981
+ container_file: CodeInterpreterContainerFile,
891
982
  tracker: _FileProgressTracker | None,
892
983
  retry_attempt: int,
893
984
  download_start: float,
@@ -1195,6 +1286,7 @@ def _inject_code_execution_fences(
1195
1286
  def _build_code_blocks(
1196
1287
  loop_response: ResponsesLanguageModelStreamResponse,
1197
1288
  content_map: dict[str, str | None],
1289
+ container_files: list[CodeInterpreterContainerFile],
1198
1290
  include_html: bool = False,
1199
1291
  ) -> list[CodeInterpreterBlock]:
1200
1292
  """Map each code interpreter call to the files it produced via /mnt/data/ path matching.
@@ -1225,7 +1317,7 @@ def _build_code_blocks(
1225
1317
  for idx, call in enumerate(calls):
1226
1318
  if not call.code:
1227
1319
  continue
1228
- for annotation in loop_response.container_files:
1320
+ for annotation in container_files:
1229
1321
  if (
1230
1322
  content_map.get(annotation.filename) is not None
1231
1323
  and f"/mnt/data/{annotation.filename}" in call.code
@@ -1254,7 +1346,7 @@ def _build_code_blocks(
1254
1346
  for idx, call in enumerate(calls):
1255
1347
  if not call.code:
1256
1348
  continue
1257
- for annotation in loop_response.container_files:
1349
+ for annotation in container_files:
1258
1350
  if annotation.filename in primary_matched_filenames:
1259
1351
  continue
1260
1352
  if content_map.get(annotation.filename) is None:
@@ -1281,7 +1373,7 @@ def _build_code_blocks(
1281
1373
  if call.code:
1282
1374
  last_block_idx = idx
1283
1375
  if last_block_idx is not None:
1284
- for annotation in loop_response.container_files:
1376
+ for annotation in container_files:
1285
1377
  if annotation.filename in file_to_block_idx:
1286
1378
  continue
1287
1379
  if content_map.get(annotation.filename) is None:
@@ -1294,7 +1386,7 @@ def _build_code_blocks(
1294
1386
  # file appears exactly once per block (last annotation wins, consistent with
1295
1387
  # the last-writer-wins rule applied in step 1).
1296
1388
  block_file_map: dict[int, dict[str, CodeInterpreterFile]] = {}
1297
- for annotation in loop_response.container_files:
1389
+ for annotation in container_files:
1298
1390
  if not include_html and _get_file_type(annotation.filename) == "html":
1299
1391
  continue
1300
1392
  content_id = content_map.get(annotation.filename)
@@ -1345,10 +1437,24 @@ def _warn_missing_content_ids(text: str, content_map: dict[str, str | None]) ->
1345
1437
  # so the entire `[label](sandbox://...)` token can be replaced rather than just the URL.
1346
1438
  _SANDBOX_MARKDOWN_LINK_RE = re.compile(r"!?\[.*?\]\(sandbox:/mnt/data/\S+?\)")
1347
1439
 
1440
+
1441
+ def _sandbox_link_pattern(filename: str) -> str:
1442
+ """Return a pattern matching the markdown sandbox link for `filename`."""
1443
+ spellings = "|".join(
1444
+ dict.fromkeys([re.escape(filename), re.escape(quote(filename))])
1445
+ )
1446
+ return rf"!?\[.*?\]\(sandbox:/mnt/data/(?:{spellings})\)"
1447
+
1448
+
1348
1449
  # Extracts the bare filename from a sandbox URL like `sandbox:/mnt/data/foo.csv`.
1349
1450
  _SANDBOX_FILENAME_RE = re.compile(r"sandbox:/mnt/data/([^)\s]+)")
1350
1451
 
1351
1452
 
1453
+ def _extract_container_file_citations_from_text(text: str) -> list[str]:
1454
+ """Extract container filenames from sandbox citations in their text order."""
1455
+ return [unquote(filename) for filename in _SANDBOX_FILENAME_RE.findall(text)]
1456
+
1457
+
1352
1458
  def _replace_dangling_sandbox_links(
1353
1459
  text: str, *, ci_ran: bool = True
1354
1460
  ) -> tuple[str, bool]:
@@ -1371,8 +1477,8 @@ def _replace_dangling_sandbox_links(
1371
1477
  return text, False
1372
1478
 
1373
1479
  def _replacement(m: re.Match[str]) -> str:
1374
- filename_match = _SANDBOX_FILENAME_RE.search(m.group())
1375
- filename = filename_match.group(1) if filename_match else "the file"
1480
+ filenames = _extract_container_file_citations_from_text(m.group())
1481
+ filename = filenames[0] if filenames else "the file"
1376
1482
  logger.warning(
1377
1483
  "Dangling sandbox link found in final text: '%s'. ci_ran=%s. "
1378
1484
  "The file was either never generated or the link format did not match "
@@ -1433,7 +1539,7 @@ def _get_next_ref_number(references: list[ContentReference] | None) -> int:
1433
1539
  def _replace_container_file_error(
1434
1540
  text: str, filename: str, error_message: str
1435
1541
  ) -> tuple[str, bool]:
1436
- image_markdown = rf"!?\[.*?\]\(sandbox:/mnt/data/{re.escape(filename)}\)"
1542
+ image_markdown = _sandbox_link_pattern(filename)
1437
1543
 
1438
1544
  if not re.search(image_markdown, text):
1439
1545
  logger.warning(
@@ -1454,7 +1560,7 @@ def _replace_container_file_error(
1454
1560
  def _replace_container_image_citation(
1455
1561
  text: str, filename: str, content_id: str
1456
1562
  ) -> tuple[str, bool]:
1457
- image_markdown = rf"!?\[.*?\]\(sandbox:/mnt/data/{re.escape(filename)}\)"
1563
+ image_markdown = _sandbox_link_pattern(filename)
1458
1564
 
1459
1565
  if not re.search(image_markdown, text):
1460
1566
  logger.warning(
@@ -1476,7 +1582,7 @@ def _replace_container_image_citation(
1476
1582
  def _replace_container_html_citation(
1477
1583
  text: str, filename: str, content_id: str
1478
1584
  ) -> tuple[str, bool]:
1479
- link_core = rf"!?\[.*?\]\(sandbox:/mnt/data/{re.escape(filename)}\)"
1585
+ link_core = _sandbox_link_pattern(filename)
1480
1586
  html_markdown = link_core
1481
1587
 
1482
1588
  if not re.search(html_markdown, text):
@@ -1534,7 +1640,7 @@ def _replace_container_file_citation(
1534
1640
  original pre-fence behaviour is restored: the link is replaced with <sup>N</sup>
1535
1641
  and the file remains accessible via the references panel.
1536
1642
  """
1537
- file_markdown = rf"!?\[.*?\]\(sandbox:/mnt/data/{re.escape(filename)}\)"
1643
+ file_markdown = _sandbox_link_pattern(filename)
1538
1644
 
1539
1645
  if not re.search(file_markdown, text):
1540
1646
  logger.warning(
@@ -1,5 +1,6 @@
1
1
  """Code interpreter types used by the generated-files postprocessor."""
2
2
 
3
+ from dataclasses import dataclass
3
4
  from typing import Literal
4
5
 
5
6
  from pydantic import BaseModel
@@ -7,6 +8,15 @@ from pydantic import BaseModel
7
8
  CodeInterpreterFileType = Literal["image", "document", "html"]
8
9
 
9
10
 
11
+ @dataclass(frozen=True)
12
+ class CodeInterpreterContainerFile:
13
+ """Provider-independent identity of a file in a code interpreter container."""
14
+
15
+ container_id: str
16
+ file_id: str
17
+ filename: str
18
+
19
+
10
20
  class CodeInterpreterFile(BaseModel):
11
21
  """A single file produced by a code interpreter execution."""
12
22
 
@@ -25,17 +25,24 @@ _CACHE_MAX_AGE_SECONDS = 5 * 60
25
25
  class ModelCost(BaseModel):
26
26
  """Per-million-token prices for one language model."""
27
27
 
28
- model_config = ConfigDict(extra="forbid")
28
+ # Unknown fields are ignored, not rejected: the Helm-rendered schema evolves
29
+ # independently of this one. Required fields below still validate strictly.
30
+ model_config = ConfigDict(extra="ignore", populate_by_name=True)
29
31
 
30
32
  input: float
31
33
  completion: float
32
34
  currency: str = Field(default="USD", min_length=1)
35
+ # Optional cache pricing rendered by the same Helm chart as node-chat's
36
+ # cost-sheet.schema.json. Absent for rows without verified cache pricing yet.
37
+ cached_input: float | None = Field(default=None, alias="cachedInput")
38
+ cache_write: float | None = Field(default=None, alias="cacheWrite")
39
+ cache_write_1h: float | None = Field(default=None, alias="cacheWrite1h")
33
40
 
34
41
 
35
42
  class ModelCostCatalog(BaseModel):
36
43
  """Versioned model-price catalog rendered by the platform Helm charts."""
37
44
 
38
- model_config = ConfigDict(extra="forbid", populate_by_name=True)
45
+ model_config = ConfigDict(extra="ignore", populate_by_name=True)
39
46
 
40
47
  cost_schema_version: int = Field(alias="costSchemaVersion")
41
48
  models: dict[str, ModelCost] = Field(min_length=1)