unique_toolkit 2026.30.0.dev24__tar.gz → 2026.32.0__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 (424) hide show
  1. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/PKG-INFO +5 -4
  2. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/pyproject.toml +5 -5
  3. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/agentic/debug_info_manager/debug_info_manager.py +90 -0
  4. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/agentic/postprocessor/postprocessor_manager.py +31 -0
  5. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/agentic/tools/a2a/tool/service.py +53 -2
  6. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/agentic/tools/a2a/tool/test/test_service_utils.py +73 -0
  7. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/agentic_table/service.py +27 -0
  8. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/chat/schemas.py +13 -1
  9. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/experimental/components/content_tree/functions.py +3 -4
  10. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/language_model/infos.py +48 -0
  11. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/language_model/invocation_stats.py +8 -1
  12. unique_toolkit-2026.32.0/unique_toolkit/language_model/model_costs.py +118 -0
  13. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/monitoring/middleware.py +48 -10
  14. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/monitoring/registry.py +25 -2
  15. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/services/knowledge_base.py +2 -2
  16. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/README.md +0 -0
  17. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/__init__.py +0 -0
  18. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/_common/__init__.py +0 -0
  19. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/_common/_base_service.py +0 -0
  20. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/_common/_time_utils.py +0 -0
  21. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/_common/api_calling/human_verification_manager.py +0 -0
  22. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/_common/base_model_type_attribute.py +0 -0
  23. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/_common/chunk_relevancy_sorter/config.py +0 -0
  24. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/_common/chunk_relevancy_sorter/exception.py +0 -0
  25. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/_common/chunk_relevancy_sorter/schemas.py +0 -0
  26. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/_common/chunk_relevancy_sorter/service.py +0 -0
  27. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/_common/chunk_relevancy_sorter/tests/test_service.py +0 -0
  28. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/_common/config_checker/README.md +0 -0
  29. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/_common/config_checker/__init__.py +0 -0
  30. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/_common/config_checker/__main__.py +0 -0
  31. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/_common/config_checker/cli.py +0 -0
  32. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/_common/config_checker/differ.py +0 -0
  33. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/_common/config_checker/exporter.py +0 -0
  34. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/_common/config_checker/models.py +0 -0
  35. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/_common/config_checker/registry.py +0 -0
  36. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/_common/config_checker/validator.py +0 -0
  37. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/_common/default_language_model.py +0 -0
  38. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/_common/docx_generator/__init__.py +0 -0
  39. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/_common/docx_generator/config.py +0 -0
  40. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/_common/docx_generator/pandoc_converter.py +0 -0
  41. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/_common/docx_generator/schemas.py +0 -0
  42. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/_common/docx_generator/service.py +0 -0
  43. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/_common/docx_generator/template/Doc Template.docx +0 -0
  44. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/_common/endpoint_builder.py +0 -0
  45. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/_common/endpoint_requestor.py +0 -0
  46. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/_common/event_bus.py +0 -0
  47. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/_common/exception.py +0 -0
  48. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/_common/execution.py +0 -0
  49. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/_common/experimental/endpoint_builder.py +0 -0
  50. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/_common/experimental/endpoint_requestor.py +0 -0
  51. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/_common/experimental/write_up_agent/README.md +0 -0
  52. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/_common/experimental/write_up_agent/__init__.py +0 -0
  53. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/_common/experimental/write_up_agent/agent.py +0 -0
  54. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/_common/experimental/write_up_agent/config.py +0 -0
  55. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/_common/experimental/write_up_agent/examples/data.csv +0 -0
  56. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/_common/experimental/write_up_agent/examples/example_usage.py +0 -0
  57. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/_common/experimental/write_up_agent/schemas.py +0 -0
  58. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/_common/experimental/write_up_agent/services/__init__.py +0 -0
  59. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/_common/experimental/write_up_agent/services/dataframe_handler/__init__.py +0 -0
  60. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/_common/experimental/write_up_agent/services/dataframe_handler/exceptions.py +0 -0
  61. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/_common/experimental/write_up_agent/services/dataframe_handler/service.py +0 -0
  62. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/_common/experimental/write_up_agent/services/dataframe_handler/utils.py +0 -0
  63. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/__init__.py +0 -0
  64. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/config.py +0 -0
  65. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/exceptions.py +0 -0
  66. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/prompts/config.py +0 -0
  67. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/prompts/system_prompt.j2 +0 -0
  68. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/prompts/user_prompt.j2 +0 -0
  69. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/service.py +0 -0
  70. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/_common/experimental/write_up_agent/services/template_handler/__init__.py +0 -0
  71. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/_common/experimental/write_up_agent/services/template_handler/default_template.j2 +0 -0
  72. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/_common/experimental/write_up_agent/services/template_handler/exceptions.py +0 -0
  73. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/_common/experimental/write_up_agent/services/template_handler/service.py +0 -0
  74. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/_common/experimental/write_up_agent/services/template_handler/utils.py +0 -0
  75. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/_common/experimental/write_up_agent/utils.py +0 -0
  76. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/_common/feature_flags/schema.py +0 -0
  77. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/_common/metadata_filter_scope.py +0 -0
  78. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/_common/pydantic/rjsf_tags.py +0 -0
  79. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/_common/pydantic_helpers.py +0 -0
  80. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/_common/referencing.py +0 -0
  81. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/_common/string_utilities.py +0 -0
  82. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/_common/tests/test_referencing.py +0 -0
  83. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/_common/tests/test_string_utilities.py +0 -0
  84. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/_common/token/__init__.py +0 -0
  85. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/_common/token/image_token_counting.py +0 -0
  86. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/_common/token/token_counting.py +0 -0
  87. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/_common/token/tokenizers/deepseek/tokenizer.json +0 -0
  88. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/_common/token/tokenizers/qwen/tokenizer.json +0 -0
  89. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/_common/utils/__init__.py +0 -0
  90. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/_common/utils/files.py +0 -0
  91. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/_common/utils/image/encode.py +0 -0
  92. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/_common/utils/jinja/helpers.py +0 -0
  93. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/_common/utils/jinja/render.py +0 -0
  94. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/_common/utils/jinja/schema.py +0 -0
  95. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/_common/utils/jinja/utils.py +0 -0
  96. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/_common/utils/structured_output/__init__.py +0 -0
  97. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/_common/utils/structured_output/schema.py +0 -0
  98. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/_common/utils/write_configuration.py +0 -0
  99. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/_common/validate_required_values.py +0 -0
  100. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/_common/validators.py +0 -0
  101. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/agentic/__init__.py +0 -0
  102. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/agentic/debug_info_manager/test/test_debug_info_manager.py +0 -0
  103. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/agentic/evaluation/config.py +0 -0
  104. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/agentic/evaluation/context_relevancy/prompts/__init__.py +0 -0
  105. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/agentic/evaluation/context_relevancy/prompts/system_prompt.j2 +0 -0
  106. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/agentic/evaluation/context_relevancy/prompts/user_prompt.j2 +0 -0
  107. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/agentic/evaluation/context_relevancy/schema.py +0 -0
  108. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/agentic/evaluation/context_relevancy/service.py +0 -0
  109. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/agentic/evaluation/evaluation_manager.py +0 -0
  110. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/agentic/evaluation/exception.py +0 -0
  111. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/agentic/evaluation/hallucination/constants.py +0 -0
  112. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/agentic/evaluation/hallucination/hallucination_evaluation.py +0 -0
  113. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/agentic/evaluation/hallucination/prompts/__init__.py +0 -0
  114. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/agentic/evaluation/hallucination/prompts/system_prompt.j2 +0 -0
  115. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/agentic/evaluation/hallucination/prompts/user_prompt.j2 +0 -0
  116. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/agentic/evaluation/hallucination/service.py +0 -0
  117. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/agentic/evaluation/hallucination/utils.py +0 -0
  118. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/agentic/evaluation/output_parser.py +0 -0
  119. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/agentic/evaluation/schemas.py +0 -0
  120. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/agentic/evaluation/tests/fixtures.py +0 -0
  121. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/agentic/evaluation/tests/test_config.py +0 -0
  122. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/agentic/evaluation/tests/test_context_relevancy_service.py +0 -0
  123. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/agentic/evaluation/tests/test_hallucination_constants.py +0 -0
  124. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/agentic/evaluation/tests/test_hallucination_external_context.py +0 -0
  125. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/agentic/evaluation/tests/test_hallucination_utils.py +0 -0
  126. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/agentic/evaluation/tests/test_output_parser.py +0 -0
  127. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/agentic/evaluation/tests/test_prompt_loaders.py +0 -0
  128. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/agentic/evaluation/utils.py +0 -0
  129. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/agentic/feature_flags/__init__.py +0 -0
  130. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/agentic/feature_flags/feature_flags.py +0 -0
  131. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/agentic/history_manager/history_construction_with_contents.py +0 -0
  132. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/agentic/history_manager/history_manager.py +0 -0
  133. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/agentic/history_manager/loop_token_reducer.py +0 -0
  134. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/agentic/history_manager/settings.py +0 -0
  135. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/agentic/history_manager/utils.py +0 -0
  136. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/agentic/loop_runner/__init__.py +0 -0
  137. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/agentic/loop_runner/_iteration_handler_utils.py +0 -0
  138. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/agentic/loop_runner/_responses_iteration_handler_utils.py +0 -0
  139. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/agentic/loop_runner/_responses_stream_handler_utils.py +0 -0
  140. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/agentic/loop_runner/_stream_handler_utils.py +0 -0
  141. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/agentic/loop_runner/base.py +0 -0
  142. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/agentic/loop_runner/middleware/__init__.py +0 -0
  143. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/agentic/loop_runner/middleware/planning/__init__.py +0 -0
  144. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/agentic/loop_runner/middleware/planning/planning.py +0 -0
  145. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/agentic/loop_runner/middleware/planning/schema.py +0 -0
  146. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/agentic/loop_runner/runners/__init__.py +0 -0
  147. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/agentic/loop_runner/runners/basic.py +0 -0
  148. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/agentic/loop_runner/runners/mistral/__init__.py +0 -0
  149. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/agentic/loop_runner/runners/mistral/mistral_runner.py +0 -0
  150. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/agentic/loop_runner/runners/qwen/__init__.py +0 -0
  151. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/agentic/loop_runner/runners/qwen/helpers.py +0 -0
  152. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/agentic/loop_runner/runners/qwen/qwen_runner.py +0 -0
  153. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/agentic/message_log_manager/__init__.py +0 -0
  154. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/agentic/message_log_manager/service.py +0 -0
  155. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/agentic/message_log_order.py +0 -0
  156. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/agentic/reference_manager/reference_manager.py +0 -0
  157. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/agentic/reference_manager/tests/test_external_context.py +0 -0
  158. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/agentic/responses_api/__init__.py +0 -0
  159. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/agentic/responses_api/postprocessors/code_display.py +0 -0
  160. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/agentic/responses_api/postprocessors/generated_files.py +0 -0
  161. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/agentic/responses_api/stream_handler.py +0 -0
  162. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/agentic/short_term_memory_manager/persistent_short_term_memory_manager.py +0 -0
  163. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/agentic/thinking_manager/thinking_manager.py +0 -0
  164. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/agentic/tools/__init__.py +0 -0
  165. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/agentic/tools/a2a/__init__.py +0 -0
  166. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/agentic/tools/a2a/config.py +0 -0
  167. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/agentic/tools/a2a/evaluation/__init__.py +0 -0
  168. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/agentic/tools/a2a/evaluation/_utils.py +0 -0
  169. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/agentic/tools/a2a/evaluation/config.py +0 -0
  170. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/agentic/tools/a2a/evaluation/evaluator.py +0 -0
  171. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/agentic/tools/a2a/evaluation/summarization_user_message.j2 +0 -0
  172. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/agentic/tools/a2a/manager.py +0 -0
  173. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/agentic/tools/a2a/postprocessing/__init__.py +0 -0
  174. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/agentic/tools/a2a/postprocessing/_display_utils.py +0 -0
  175. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/agentic/tools/a2a/postprocessing/_ref_utils.py +0 -0
  176. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/agentic/tools/a2a/postprocessing/config.py +0 -0
  177. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/agentic/tools/a2a/postprocessing/display.py +0 -0
  178. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/agentic/tools/a2a/postprocessing/references.py +0 -0
  179. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/agentic/tools/a2a/postprocessing/test/test_display.py +0 -0
  180. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/agentic/tools/a2a/postprocessing/test/test_display_utils.py +0 -0
  181. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/agentic/tools/a2a/postprocessing/test/test_ref_utils.py +0 -0
  182. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/agentic/tools/a2a/postprocessing/test/test_references.py +0 -0
  183. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/agentic/tools/a2a/prompts.py +0 -0
  184. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/agentic/tools/a2a/response_watcher/__init__.py +0 -0
  185. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/agentic/tools/a2a/response_watcher/service.py +0 -0
  186. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/agentic/tools/a2a/tool/__init__.py +0 -0
  187. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/agentic/tools/a2a/tool/_memory.py +0 -0
  188. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/agentic/tools/a2a/tool/_schema.py +0 -0
  189. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/agentic/tools/a2a/tool/config.py +0 -0
  190. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/agentic/tools/agent_chunks_hanlder.py +0 -0
  191. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/agentic/tools/config.py +0 -0
  192. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/agentic/tools/experimental/__init__.py +0 -0
  193. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/agentic/tools/experimental/ask_user_tool/__init__.py +0 -0
  194. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/agentic/tools/experimental/ask_user_tool/config.py +0 -0
  195. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/agentic/tools/experimental/ask_user_tool/tool.py +0 -0
  196. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/agentic/tools/experimental/open_file_tool/__init__.py +0 -0
  197. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/agentic/tools/experimental/open_file_tool/config.py +0 -0
  198. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/agentic/tools/experimental/open_file_tool/runtime.py +0 -0
  199. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/agentic/tools/experimental/open_file_tool/tool.py +0 -0
  200. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/agentic/tools/experimental/retrieve_search_scope_tool/__init__.py +0 -0
  201. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/agentic/tools/experimental/retrieve_search_scope_tool/config.py +0 -0
  202. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/agentic/tools/experimental/retrieve_search_scope_tool/tool.py +0 -0
  203. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/agentic/tools/experimental/todo/__init__.py +0 -0
  204. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/agentic/tools/experimental/todo/config.py +0 -0
  205. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/agentic/tools/experimental/todo/prompts/__init__.py +0 -0
  206. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/agentic/tools/experimental/todo/prompts/execution_reminder.j2 +0 -0
  207. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/agentic/tools/experimental/todo/prompts/system_prompt.j2 +0 -0
  208. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/agentic/tools/experimental/todo/prompts/tool_description.j2 +0 -0
  209. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/agentic/tools/experimental/todo/prompts/verification_nudge.j2 +0 -0
  210. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/agentic/tools/experimental/todo/schemas.py +0 -0
  211. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/agentic/tools/experimental/todo/service.py +0 -0
  212. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/agentic/tools/factory.py +0 -0
  213. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/agentic/tools/mcp/__init__.py +0 -0
  214. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/agentic/tools/mcp/manager.py +0 -0
  215. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/agentic/tools/mcp/models.py +0 -0
  216. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/agentic/tools/mcp/tool_wrapper.py +0 -0
  217. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/agentic/tools/names.py +0 -0
  218. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/agentic/tools/openai_builtin/__init__.py +0 -0
  219. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/agentic/tools/openai_builtin/base.py +0 -0
  220. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/__init__.py +0 -0
  221. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/activator/__init__.py +0 -0
  222. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/activator/config.py +0 -0
  223. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/activator/service.py +0 -0
  224. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/builder/__init__.py +0 -0
  225. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/builder/_container.py +0 -0
  226. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/builder/_files.py +0 -0
  227. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/builder/_memory.py +0 -0
  228. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/builder/builder.py +0 -0
  229. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/config.py +0 -0
  230. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/postprocessors/__init__.py +0 -0
  231. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/postprocessors/artifacts.py +0 -0
  232. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/postprocessors/code_display.py +0 -0
  233. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/postprocessors/generated_files.py +0 -0
  234. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/schemas.py +0 -0
  235. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/tool/__init__.py +0 -0
  236. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/tool/config.py +0 -0
  237. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/tool/service.py +0 -0
  238. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/agentic/tools/openai_builtin/manager.py +0 -0
  239. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/agentic/tools/run_context.py +0 -0
  240. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/agentic/tools/schemas.py +0 -0
  241. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/agentic/tools/test/test_mcp_manager.py +0 -0
  242. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/agentic/tools/test/test_tool_progress_reporter.py +0 -0
  243. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/agentic/tools/tool.py +0 -0
  244. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/agentic/tools/tool_manager.py +0 -0
  245. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/agentic/tools/tool_progress_reporter.py +0 -0
  246. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/agentic/tools/utils/__init__.py +0 -0
  247. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/agentic/tools/utils/source_handling/__init__.py +0 -0
  248. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/agentic/tools/utils/source_handling/schema.py +0 -0
  249. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/agentic/tools/utils/source_handling/source_formatting.py +0 -0
  250. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/agentic/tools/utils/source_handling/tests/test_source_formatting.py +0 -0
  251. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/agentic_table/__init__.py +0 -0
  252. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/agentic_table/schemas.py +0 -0
  253. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/agentic_table/synthetic_chat_event.py +0 -0
  254. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/app/__init__.py +0 -0
  255. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/app/chat_event_filter_options_settings.py +0 -0
  256. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/app/dev_util.py +0 -0
  257. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/app/fast_api_factory.py +0 -0
  258. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/app/feature_flags.py +0 -0
  259. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/app/find_env_file.py +0 -0
  260. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/app/init_logging.py +0 -0
  261. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/app/init_sdk.py +0 -0
  262. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/app/performance/async_tasks.py +0 -0
  263. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/app/performance/async_wrapper.py +0 -0
  264. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/app/schemas.py +0 -0
  265. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/app/unique_settings.py +0 -0
  266. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/app/verification.py +0 -0
  267. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/app/webhook.py +0 -0
  268. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/chat/__init__.py +0 -0
  269. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/chat/cancellation.py +0 -0
  270. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/chat/constants.py +0 -0
  271. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/chat/deprecated/__init__.py +0 -0
  272. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/chat/deprecated/service.py +0 -0
  273. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/chat/functions.py +0 -0
  274. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/chat/rendering.py +0 -0
  275. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/chat/responses_api.py +0 -0
  276. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/chat/service.py +0 -0
  277. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/chat/state.py +0 -0
  278. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/chat/utils.py +0 -0
  279. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/content/__init__.py +0 -0
  280. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/content/constants.py +0 -0
  281. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/content/functions.py +0 -0
  282. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/content/schemas.py +0 -0
  283. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/content/service.py +0 -0
  284. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/content/smart_rules.py +0 -0
  285. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/content/utils.py +0 -0
  286. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/data_extraction/README.md +0 -0
  287. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/data_extraction/__init__.py +0 -0
  288. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/data_extraction/augmented/__init__.py +0 -0
  289. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/data_extraction/augmented/service.py +0 -0
  290. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/data_extraction/base.py +0 -0
  291. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/data_extraction/basic/__init__.py +0 -0
  292. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/data_extraction/basic/config.py +0 -0
  293. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/data_extraction/basic/prompt.py +0 -0
  294. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/data_extraction/basic/service.py +0 -0
  295. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/elicitation/__init__.py +0 -0
  296. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/elicitation/constants.py +0 -0
  297. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/elicitation/exceptions.py +0 -0
  298. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/elicitation/functions.py +0 -0
  299. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/elicitation/schemas.py +0 -0
  300. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/elicitation/service.py +0 -0
  301. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/embedding/__init__.py +0 -0
  302. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/embedding/constants.py +0 -0
  303. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/embedding/functions.py +0 -0
  304. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/embedding/schemas.py +0 -0
  305. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/embedding/service.py +0 -0
  306. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/embedding/utils.py +0 -0
  307. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/experimental/README.md +0 -0
  308. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/experimental/__init__.py +0 -0
  309. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/experimental/_internal/__init__.py +0 -0
  310. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/experimental/_internal/streaming/__init__.py +0 -0
  311. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/experimental/_internal/streaming/common.py +0 -0
  312. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/experimental/_internal/streaming/pattern_replacer.py +0 -0
  313. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/experimental/components/__init__.py +0 -0
  314. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/experimental/components/_base.py +0 -0
  315. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/experimental/components/content_tree/__init__.py +0 -0
  316. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/experimental/components/content_tree/schemas.py +0 -0
  317. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/experimental/components/content_tree/service.py +0 -0
  318. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/experimental/components/internal_search/__init__.py +0 -0
  319. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/experimental/components/internal_search/base/__init__.py +0 -0
  320. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/experimental/components/internal_search/base/config.py +0 -0
  321. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/experimental/components/internal_search/base/schemas.py +0 -0
  322. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/experimental/components/internal_search/base/service.py +0 -0
  323. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/experimental/components/internal_search/base/utils.py +0 -0
  324. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/experimental/components/internal_search/chat/__init__.py +0 -0
  325. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/experimental/components/internal_search/chat/config.py +0 -0
  326. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/experimental/components/internal_search/chat/schemas.py +0 -0
  327. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/experimental/components/internal_search/chat/service.py +0 -0
  328. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/experimental/components/internal_search/knowledge_base/__init__.py +0 -0
  329. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/experimental/components/internal_search/knowledge_base/config.py +0 -0
  330. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/experimental/components/internal_search/knowledge_base/schemas.py +0 -0
  331. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/experimental/components/internal_search/knowledge_base/service.py +0 -0
  332. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/experimental/components/internal_search/post_processing/__init__.py +0 -0
  333. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/experimental/components/internal_search/post_processing/config.py +0 -0
  334. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/experimental/components/internal_search/post_processing/service.py +0 -0
  335. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/experimental/content_tree/__init__.py +0 -0
  336. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/experimental/identity/__init__.py +0 -0
  337. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/experimental/integrations/__init__.py +0 -0
  338. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/experimental/integrations/openai/__init__.py +0 -0
  339. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/experimental/integrations/openai/streaming/__init__.py +0 -0
  340. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/__init__.py +0 -0
  341. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/_async_bridge.py +0 -0
  342. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/chat_completions/__init__.py +0 -0
  343. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/chat_completions/complete_with_references.py +0 -0
  344. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/chat_completions/stream_event_router.py +0 -0
  345. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/chat_completions/text_event_handler.py +0 -0
  346. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/chat_completions/tool_call_event_handler.py +0 -0
  347. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/events.py +0 -0
  348. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/protocols/__init__.py +0 -0
  349. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/protocols/chat_completions.py +0 -0
  350. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/protocols/responses.py +0 -0
  351. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/responses/__init__.py +0 -0
  352. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/responses/code_interpreter_event_handler.py +0 -0
  353. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/responses/complete_with_references.py +0 -0
  354. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/responses/completed_event_handler.py +0 -0
  355. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/responses/stream_event_router.py +0 -0
  356. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/responses/text_delta_event_handler.py +0 -0
  357. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/responses/tool_call_event_handler.py +0 -0
  358. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/subscribers/__init__.py +0 -0
  359. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/subscribers/message_persister.py +0 -0
  360. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/subscribers/progress_log_persister.py +0 -0
  361. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/experimental/resources/__init__.py +0 -0
  362. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/experimental/resources/content_folder/__init__.py +0 -0
  363. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/experimental/resources/content_folder/functions.py +0 -0
  364. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/experimental/resources/content_folder/schemas.py +0 -0
  365. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/experimental/resources/content_folder/service.py +0 -0
  366. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/experimental/resources/facades/__init__.py +0 -0
  367. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/experimental/resources/facades/identity/__init__.py +0 -0
  368. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/experimental/resources/facades/identity/service.py +0 -0
  369. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/experimental/resources/feature_flags/README.md +0 -0
  370. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/experimental/resources/feature_flags/__init__.py +0 -0
  371. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/experimental/resources/feature_flags/_graphql_client.py +0 -0
  372. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/experimental/resources/feature_flags/_ttl_cache.py +0 -0
  373. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/experimental/resources/feature_flags/client.py +0 -0
  374. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/experimental/resources/feature_flags/schemas.py +0 -0
  375. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/experimental/resources/feature_flags/settings.py +0 -0
  376. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/experimental/resources/group/__init__.py +0 -0
  377. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/experimental/resources/group/functions.py +0 -0
  378. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/experimental/resources/group/schemas.py +0 -0
  379. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/experimental/resources/group/service.py +0 -0
  380. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/experimental/resources/scheduled_task/__init__.py +0 -0
  381. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/experimental/resources/scheduled_task/cron.py +0 -0
  382. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/experimental/resources/scheduled_task/functions.py +0 -0
  383. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/experimental/resources/scheduled_task/schemas.py +0 -0
  384. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/experimental/resources/scheduled_task/service.py +0 -0
  385. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/experimental/resources/user/__init__.py +0 -0
  386. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/experimental/resources/user/functions.py +0 -0
  387. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/experimental/resources/user/schemas.py +0 -0
  388. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/experimental/resources/user/service.py +0 -0
  389. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/experimental/testing/__init__.py +0 -0
  390. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/framework_utilities/__init__.py +0 -0
  391. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/framework_utilities/langchain/__init__.py +0 -0
  392. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/framework_utilities/langchain/client.py +0 -0
  393. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/framework_utilities/langchain/history.py +0 -0
  394. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/framework_utilities/openai/__init__.py +0 -0
  395. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/framework_utilities/openai/client.py +0 -0
  396. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/framework_utilities/openai/message_builder.py +0 -0
  397. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/framework_utilities/utils.py +0 -0
  398. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/language_model/__init__.py +0 -0
  399. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/language_model/_responses_api_utils.py +0 -0
  400. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/language_model/builder.py +0 -0
  401. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/language_model/constants.py +0 -0
  402. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/language_model/default_language_model.py +0 -0
  403. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/language_model/functions.py +0 -0
  404. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/language_model/prompt.py +0 -0
  405. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/language_model/reference.py +0 -0
  406. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/language_model/schemas.py +0 -0
  407. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/language_model/service.py +0 -0
  408. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/language_model/settings.py +0 -0
  409. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/language_model/stream_transform.py +0 -0
  410. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/language_model/utils.py +0 -0
  411. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/monitoring/__init__.py +0 -0
  412. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/monitoring/gunicorn.py +0 -0
  413. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/protocols/support.py +0 -0
  414. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/services/__init__.py +0 -0
  415. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/services/chat_service.py +0 -0
  416. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/services/factory.py +0 -0
  417. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/short_term_memory/__init__.py +0 -0
  418. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/short_term_memory/constants.py +0 -0
  419. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/short_term_memory/functions.py +0 -0
  420. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/short_term_memory/schemas.py +0 -0
  421. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/short_term_memory/service.py +0 -0
  422. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/smart_rules/__init__.py +0 -0
  423. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/unique_toolkit/smart_rules/compile.py +0 -0
  424. {unique_toolkit-2026.30.0.dev24 → unique_toolkit-2026.32.0}/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.30.0.dev24
3
+ Version: 2026.32.0
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.30.0.dev10,<2026.30.0rc0
19
+ Requires-Dist: unique-sdk>=2026.32.0
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
@@ -33,8 +33,9 @@ Requires-Dist: tenacity>=9.1.4
33
33
  Requires-Dist: pydantic-core>=2.41.5
34
34
  Requires-Dist: cachetools>=5.0,<6
35
35
  Requires-Dist: rapidfuzz>=3.0,<4
36
- Requires-Dist: fastapi>=0.121.0,<0.122 ; extra == 'fastapi'
37
- Requires-Dist: starlette>=0.49.1 ; extra == 'fastapi'
36
+ Requires-Dist: pyyaml>=6.0.3
37
+ Requires-Dist: fastapi>=0.133.0,<1.0.0 ; extra == 'fastapi'
38
+ Requires-Dist: starlette>=1.3.1,<2.0.0 ; extra == 'fastapi'
38
39
  Requires-Dist: uvicorn>=0.37.0,<0.38 ; extra == 'fastapi'
39
40
  Requires-Dist: openai>=1.105.0,<3 ; extra == 'langchain'
40
41
  Requires-Dist: langchain>=1.0.0,<2 ; extra == 'langchain'
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "unique_toolkit"
3
- version = "2026.30.0.dev24"
3
+ version = "2026.32.0"
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.30.0.dev10,<2026.30.0rc0",
31
+ "unique-sdk>=2026.32.0",
32
32
  "jambo>=0.1.2,<0.2",
33
33
  "jinja2>=3.1.6,<4",
34
34
  "docxtpl>=0.20.1,<0.21",
@@ -45,6 +45,7 @@ dependencies = [
45
45
  "pydantic-core>=2.41.5",
46
46
  "cachetools>=5.0,<6",
47
47
  "rapidfuzz>=3.0,<4",
48
+ "pyyaml>=6.0.3",
48
49
  ]
49
50
 
50
51
  [project.optional-dependencies]
@@ -55,8 +56,8 @@ langchain = [
55
56
  "langchain-core>=1.0.0,<2",
56
57
  ]
57
58
  fastapi = [
58
- "fastapi>=0.121.0,<0.122",
59
- "starlette>=0.49.1",
59
+ "fastapi>=0.133.0,<1.0.0",
60
+ "starlette>=1.3.1,<2.0.0",
60
61
  "uvicorn>=0.37.0,<0.38",
61
62
  ]
62
63
  monitoring = [
@@ -77,7 +78,6 @@ dev = [
77
78
  [tool.uv]
78
79
  exclude-newer = "2 weeks"
79
80
  constraint-dependencies = [
80
- "starlette>=0.49.1",
81
81
  "lxml>=6.1.0",
82
82
  ]
83
83
 
@@ -1,3 +1,4 @@
1
+ from collections import defaultdict
1
2
  from typing import Any, Required, TypedDict
2
3
 
3
4
  from unique_toolkit.agentic.tools.openai_builtin import OpenAICodeInterpreterTool
@@ -7,8 +8,10 @@ from unique_toolkit.agentic.tools.openai_builtin.code_interpreter.postprocessors
7
8
  )
8
9
  from unique_toolkit.agentic.tools.schemas import ToolCallResponse
9
10
  from unique_toolkit.agentic.tools.tool_manager import ToolManager
11
+ from unique_toolkit.language_model.invocation_stats import LanguageModelInvocationStats
10
12
  from unique_toolkit.language_model.schemas import (
11
13
  LanguageModelStreamResponse,
14
+ LanguageModelTokenUsage,
12
15
  ResponsesLanguageModelStreamResponse,
13
16
  )
14
17
 
@@ -40,11 +43,29 @@ class AnalyticsToolName(TypedDict):
40
43
  display_name: str
41
44
 
42
45
 
46
+ class AnalyticsConsumption(TypedDict):
47
+ completion_tokens: int | None
48
+ prompt_tokens: int | None
49
+ total_tokens: int | None
50
+ reasoning_tokens: int | None
51
+ cached_tokens: int | None
52
+ cache_write_tokens: int | None
53
+ cost_usd: float | None
54
+
55
+
56
+ class AnalyticsConsumptionByLlm(AnalyticsConsumption):
57
+ model_name: str
58
+
59
+
43
60
  class Analytics(TypedDict):
44
61
  answer_length: int
45
62
  artifacts_created_count: int | None
46
63
  artifacts_created_filetype: list[str] | None
47
64
  context_memory_updated: bool | None
65
+ # Sum of all model usages this turn. None when no invocations reported usage.
66
+ consumption: AnalyticsConsumption | None
67
+ # Per-model usage totals, sorted by model_name.
68
+ consumption_by_llm: list[AnalyticsConsumptionByLlm]
48
69
  language_model: AnalyticsLanguageModel
49
70
  loop_iteration_count: int
50
71
  mcp_tool_names_used: list[AnalyticsToolName]
@@ -115,6 +136,7 @@ class DebugInfoManager:
115
136
  total_time_to_answer_ms: int | None = None,
116
137
  artifacts: ArtifactsDebugInfo | None = None,
117
138
  context_memory_updated: bool | None = None,
139
+ invocations: list[LanguageModelInvocationStats] | None = None,
118
140
  ) -> None:
119
141
  """Add a stable 'analytics' snapshot for downstream ROI/usage reporting.
120
142
 
@@ -134,6 +156,7 @@ class DebugInfoManager:
134
156
  # DisplayCodeInterpreterFilesPostProcessor) into debug_info["artifacts"].
135
157
  # Absent when no Code Interpreter ran this turn → artifact fields stay
136
158
  # None, preserving the always-present, null-when-unknown contract.
159
+ consumption_by_llm = _aggregate_consumption_by_llm(invocations or [])
137
160
  analytics = Analytics(
138
161
  tools_used=analytics_tools,
139
162
  tool_call_count=len(analytics_tools),
@@ -152,6 +175,8 @@ class DebugInfoManager:
152
175
  loop_iteration_count=loop_iteration_count,
153
176
  subagent_names_used=_unique_tool_names(analytics_tools, "is_sub_agent"),
154
177
  mcp_tool_names_used=_unique_tool_names(analytics_tools, "is_mcp"),
178
+ consumption_by_llm=consumption_by_llm,
179
+ consumption=_aggregate_consumption(invocations or []),
155
180
  total_time_to_answer_ms=total_time_to_answer_ms,
156
181
  artifacts_created_count=artifacts["count"] if artifacts else None,
157
182
  artifacts_created_filetype=artifacts["filetypes"] if artifacts else None,
@@ -163,6 +188,71 @@ class DebugInfoManager:
163
188
  self.add("analytics", analytics)
164
189
 
165
190
 
191
+ def _sum_invocation_costs(
192
+ invocations: list[LanguageModelInvocationStats],
193
+ ) -> float | None:
194
+ """Sum costs only when every invocation has a known cost; else None."""
195
+ costs = [invocation.cost_usd for invocation in invocations]
196
+ if not costs or any(cost is None for cost in costs):
197
+ return None
198
+ return sum(cost for cost in costs if cost is not None)
199
+
200
+
201
+ def _to_analytics_consumption(
202
+ usage: LanguageModelTokenUsage,
203
+ cost_usd: float | None,
204
+ ) -> AnalyticsConsumption:
205
+ return AnalyticsConsumption(
206
+ completion_tokens=usage.completion_tokens,
207
+ prompt_tokens=usage.prompt_tokens,
208
+ total_tokens=usage.total_tokens,
209
+ reasoning_tokens=usage.reasoning_tokens,
210
+ cached_tokens=usage.cached_tokens,
211
+ cache_write_tokens=usage.cache_write_tokens,
212
+ cost_usd=cost_usd,
213
+ )
214
+
215
+
216
+ def _aggregate_consumption(
217
+ invocations: list[LanguageModelInvocationStats],
218
+ ) -> AnalyticsConsumption | None:
219
+ """Aggregate token usage and cost across all models for this turn."""
220
+ usage = LanguageModelTokenUsage.sum_usages(
221
+ invocation.token_usage for invocation in invocations
222
+ )
223
+ if usage is None:
224
+ return None
225
+ return _to_analytics_consumption(usage, _sum_invocation_costs(invocations))
226
+
227
+
228
+ def _aggregate_consumption_by_llm(
229
+ invocations: list[LanguageModelInvocationStats],
230
+ ) -> list[AnalyticsConsumptionByLlm]:
231
+ invocations_by_model: dict[str, list[LanguageModelInvocationStats]] = defaultdict(
232
+ list
233
+ )
234
+ for invocation in invocations:
235
+ invocations_by_model[str(invocation.model_name)].append(invocation)
236
+
237
+ totals: list[AnalyticsConsumptionByLlm] = []
238
+ for model_name in sorted(invocations_by_model):
239
+ model_invocations = invocations_by_model[model_name]
240
+ usage = LanguageModelTokenUsage.sum_usages(
241
+ invocation.token_usage for invocation in model_invocations
242
+ )
243
+ if usage is None:
244
+ continue
245
+ totals.append(
246
+ AnalyticsConsumptionByLlm(
247
+ model_name=model_name,
248
+ **_to_analytics_consumption(
249
+ usage, _sum_invocation_costs(model_invocations)
250
+ ),
251
+ )
252
+ )
253
+ return totals
254
+
255
+
166
256
  def _unique_tool_names(
167
257
  analytics_tools: list[AnalyticsTool], flag: str
168
258
  ) -> list[AnalyticsToolName]:
@@ -41,6 +41,17 @@ class Postprocessor(ABC):
41
41
  """Override in subclasses whose `run()` makes its own LLM call(s)."""
42
42
  return []
43
43
 
44
+ def take_pending_invocation_stats(self) -> list[LanguageModelInvocationStats]:
45
+ """Pop usage incurred before this turn's `run()` was reached.
46
+
47
+ Called unconditionally at the start of every turn so usage from work
48
+ done ahead of postprocessing (e.g. a load-time LLM call) is still
49
+ reported on turns that exit before `run()` executes. Override in
50
+ subclasses that do such work; must clear the pending stats so `run()`
51
+ does not report them a second time.
52
+ """
53
+ return []
54
+
44
55
 
45
56
  class ResponsesApiPostprocessor(ABC):
46
57
  def __init__(self, name: str):
@@ -74,6 +85,13 @@ class ResponsesApiPostprocessor(ABC):
74
85
  """
75
86
  return []
76
87
 
88
+ def take_pending_invocation_stats(self) -> list[LanguageModelInvocationStats]:
89
+ """Pop usage incurred before this turn's `run()` was reached.
90
+
91
+ See `Postprocessor.take_pending_invocation_stats` for why this exists.
92
+ """
93
+ return []
94
+
77
95
 
78
96
  class PostprocessorManager:
79
97
  """
@@ -196,6 +214,19 @@ class PostprocessorManager:
196
214
  """Per-LLM-call stats from every postprocessor that made its own LLM call(s)."""
197
215
  return list(self._invocation_stats)
198
216
 
217
+ def take_pending_invocation_stats(self) -> list[LanguageModelInvocationStats]:
218
+ """Pop pre-`run()` usage (e.g. load-time calls) from every postprocessor.
219
+
220
+ Call this unconditionally at the start of a turn, before it's known
221
+ whether `run_postprocessors` will even be reached this turn, so that
222
+ usage is never silently dropped on turns that exit early.
223
+ """
224
+ return [
225
+ invocation
226
+ for postprocessor in self._get_all_postprocessors()
227
+ for invocation in postprocessor.take_pending_invocation_stats()
228
+ ]
229
+
199
230
  async def execute_postprocessors(
200
231
  self,
201
232
  loop_response: LanguageModelStreamResponse,
@@ -4,12 +4,15 @@ import json
4
4
  import logging
5
5
  import re
6
6
  from datetime import datetime
7
- from typing import override
7
+ from typing import Any, override
8
8
 
9
9
  import unique_sdk
10
10
  from pydantic import Field, TypeAdapter, create_model
11
11
  from unique_sdk.api_resources._space import Space
12
- from unique_sdk.utils.chat_in_space import send_message_and_wait_for_completion
12
+ from unique_sdk.utils.chat_in_space import (
13
+ get_message_invocations,
14
+ send_message_and_wait_for_completion,
15
+ )
13
16
 
14
17
  from unique_toolkit._common.execution import SafeTaskExecutor
15
18
  from unique_toolkit._common.referencing import (
@@ -55,6 +58,7 @@ from unique_toolkit.language_model import (
55
58
  LanguageModelService,
56
59
  LanguageModelToolDescription,
57
60
  )
61
+ from unique_toolkit.language_model.invocation_stats import LanguageModelInvocationStats
58
62
 
59
63
  logger = logging.getLogger(__name__)
60
64
 
@@ -296,6 +300,13 @@ class SubAgentTool(Tool[SubAgentToolConfig]):
296
300
  if self.config.passthrough_config.enabled:
297
301
  await self._display_sub_agent_response(response)
298
302
 
303
+ sub_agent_invocations = _prefix_sub_agent_invocation_sources(
304
+ invocations=_parse_sub_agent_invocation_stats(
305
+ get_message_invocations(response)
306
+ ),
307
+ tool_name=self.name,
308
+ tool_call_id=tool_call.id,
309
+ )
299
310
  return ToolCallResponse(
300
311
  id=tool_call.id,
301
312
  name=tool_call.name,
@@ -307,9 +318,12 @@ class SubAgentTool(Tool[SubAgentToolConfig]):
307
318
  content_chunks=content_chunks,
308
319
  debug_info={
309
320
  "chat_id": response["chatId"],
321
+ "user_message_id": response.get("triggeringUserMessageId"),
322
+ "assistant_message_id": response.get("id"),
310
323
  "assistant_id": self.config.assistant_id,
311
324
  "display_name": self._display_name,
312
325
  },
326
+ invocation_stats=sub_agent_invocations,
313
327
  )
314
328
  except TimeoutError as e:
315
329
  raise e
@@ -495,6 +509,7 @@ class SubAgentTool(Tool[SubAgentToolConfig]):
495
509
  parentAssistantId=self.config.assistant_id,
496
510
  ),
497
511
  on_message_update=on_message_update,
512
+ wait_for_invocations=True,
498
513
  )
499
514
  except TimeoutError as e:
500
515
  await self._notify_progress(
@@ -513,6 +528,42 @@ class SubAgentTool(Tool[SubAgentToolConfig]):
513
528
  ) from e
514
529
 
515
530
 
531
+ def _parse_sub_agent_invocation_stats(
532
+ raw_invocations: list[dict[str, Any]],
533
+ ) -> list[LanguageModelInvocationStats]:
534
+ """Deserialize sub-agent invocation stats, ignoring malformed entries.
535
+
536
+ A single unparseable entry (e.g. a stale model name) must not fail the
537
+ whole tool call and drop an otherwise-successful sub-agent reply -- see
538
+ `_load_invocation_stats_from_debug_info` in unique_orchestrator, which
539
+ applies the same per-entry tolerance for the same reason.
540
+ """
541
+ invocations: list[LanguageModelInvocationStats] = []
542
+ for raw_invocation in raw_invocations:
543
+ try:
544
+ invocations.append(
545
+ LanguageModelInvocationStats.model_validate(raw_invocation)
546
+ )
547
+ except Exception:
548
+ logger.warning(
549
+ "Ignoring malformed sub-agent LLM invocation stats",
550
+ exc_info=True,
551
+ )
552
+ return invocations
553
+
554
+
555
+ def _prefix_sub_agent_invocation_sources(
556
+ invocations: list[LanguageModelInvocationStats],
557
+ tool_name: str,
558
+ tool_call_id: str,
559
+ ) -> list[LanguageModelInvocationStats]:
560
+ prefix = f"subagent.{tool_name}.{tool_call_id}"
561
+ return [
562
+ invocation.model_copy(update={"source": f"{prefix}.{invocation.source}"})
563
+ for invocation in invocations
564
+ ]
565
+
566
+
516
567
  def _format_response(tool_name: str, text: str, system_reminders: list[str]) -> str:
517
568
  if len(system_reminders) == 0:
518
569
  return text
@@ -17,6 +17,7 @@ from unique_toolkit.agentic.tools.a2a.tool.config import (
17
17
  from unique_toolkit.agentic.tools.a2a.tool.service import (
18
18
  _format_response,
19
19
  _get_sub_agent_system_reminders,
20
+ _parse_sub_agent_invocation_stats,
20
21
  _prepare_sub_agent_response_refs,
21
22
  _remove_extra_refs,
22
23
  _response_has_refs,
@@ -59,6 +60,78 @@ def refs_list() -> list[dict[str, Any]]:
59
60
  ]
60
61
 
61
62
 
63
+ # Tests for _parse_sub_agent_invocation_stats
64
+
65
+
66
+ @pytest.mark.ai
67
+ def test_parse_sub_agent_invocation_stats__skips_malformed_entry__keeps_valid_ones() -> (
68
+ None
69
+ ):
70
+ """
71
+ Purpose: Verify one malformed invocation entry doesn't discard the rest.
72
+ Why this matters: A single bad entry must not fail the whole sub-agent tool
73
+ call and drop an otherwise-successful reply.
74
+ Setup summary: Mix a valid entry with a malformed one (missing required
75
+ fields), verify only the valid entry survives.
76
+ """
77
+ # Arrange
78
+ raw_invocations = [
79
+ {
80
+ "modelName": "gpt-4",
81
+ "tokenUsage": {"totalTokens": 10},
82
+ "source": "main_loop",
83
+ },
84
+ {"modelName": "gpt-4"}, # missing required tokenUsage/source
85
+ ]
86
+
87
+ # Act
88
+ result = _parse_sub_agent_invocation_stats(raw_invocations)
89
+
90
+ # Assert
91
+ assert len(result) == 1
92
+ assert result[0].source == "main_loop"
93
+
94
+
95
+ @pytest.mark.ai
96
+ def test_parse_sub_agent_invocation_stats__returns_empty__when_all_malformed() -> None:
97
+ """
98
+ Purpose: Verify an all-malformed list returns empty instead of raising.
99
+ Why this matters: The sub-agent tool call must still succeed and return the
100
+ answer even if every persisted stats entry is unparseable.
101
+ Setup summary: Only malformed entries, assert empty list with no exception.
102
+ """
103
+ # Arrange
104
+ raw_invocations = [{"modelName": "gpt-4"}, {"source": "main_loop"}]
105
+
106
+ # Act
107
+ result = _parse_sub_agent_invocation_stats(raw_invocations)
108
+
109
+ # Assert
110
+ assert result == []
111
+
112
+
113
+ @pytest.mark.ai
114
+ def test_parse_sub_agent_invocation_stats__parses_all__when_all_valid() -> None:
115
+ """
116
+ Purpose: Verify parsing is unaffected by the malformed-entry tolerance
117
+ when every entry is well-formed.
118
+ Why this matters: The fix must not silently drop good data too.
119
+ Setup summary: Two valid entries, assert both are returned.
120
+ """
121
+ # Arrange
122
+ raw_invocations = [
123
+ {"modelName": "gpt-4", "tokenUsage": {"totalTokens": 3}, "source": "a"},
124
+ {"modelName": "gpt-4", "tokenUsage": {"totalTokens": 5}, "source": "b"},
125
+ ]
126
+
127
+ # Act
128
+ result = _parse_sub_agent_invocation_stats(raw_invocations)
129
+
130
+ # Assert
131
+ assert len(result) == 2
132
+ assert [inv.source for inv in result] == ["a", "b"]
133
+
134
+
62
135
  # Tests for _format_response
63
136
 
64
137
 
@@ -648,6 +648,33 @@ class AgenticTableService:
648
648
  result.get("message") or "Failed to trigger artifact generation"
649
649
  )
650
650
 
651
+ async def rerun_row(self, row_order: int) -> None:
652
+ """Re-run the agent for a single row (`POST .../row/{rowOrder}/rerun`).
653
+
654
+ The only way to re-answer part of a sheet: ``import_questions_and_sources``
655
+ is delta-based and will not re-answer a row that already exists.
656
+
657
+ Asynchronous, like the whole-sheet run: this triggers it and returns.
658
+ Follow with ``wait_for_run`` to block until the sheet leaves PROCESSING.
659
+
660
+ Args:
661
+ row_order: Row position in the sheet's own numbering, where row 0 is
662
+ the header — so answerable rows start at 1, and row 0 is
663
+ rejected. Same numbering as ``get_cell``.
664
+
665
+ Raises:
666
+ Exception: If the API reports a non-success status, which includes a
667
+ locked or final row and a sheet that is already PROCESSING.
668
+ """
669
+ result = await AgenticTable.rerun_row(
670
+ user_id=self._user_id,
671
+ company_id=self._company_id,
672
+ tableId=self.table_id,
673
+ rowOrder=row_order,
674
+ )
675
+ if not result.get("status"):
676
+ raise Exception(result.get("message") or "Failed to trigger row rerun")
677
+
651
678
  async def list_artifacts(self) -> list[MagicTableArtifact]:
652
679
  """List export artifacts of the sheet (`GET .../artifacts`)."""
653
680
  artifacts = await AgenticTable.list_artifacts(
@@ -216,9 +216,21 @@ class MessageLogUncitedReferences(BaseModel):
216
216
 
217
217
  class MessageLogEvent(BaseModel):
218
218
  model_config = model_config
219
- type: Literal["WebSearch", "InternalSearch", "Elicitation", "Thinking", "ToolCall"]
219
+ type: Literal[
220
+ "WebSearch",
221
+ "InternalSearch",
222
+ "Elicitation",
223
+ "Thinking",
224
+ "ToolCall",
225
+ "Todo",
226
+ "UserMemory",
227
+ ]
220
228
  text: str
221
229
  step_type: str | None = None
230
+ status: Literal["todo", "done"] | None = Field(
231
+ default=None,
232
+ description="Checklist item state for 'Todo' events; unused for other event types",
233
+ )
222
234
 
223
235
 
224
236
  class MessageLogDetails(BaseModel):
@@ -107,9 +107,8 @@ async def translate_scope_id_async(
107
107
  ) -> str | None:
108
108
  """Resolve a single ``scope_id`` to a folder name.
109
109
 
110
- Returns ``None`` (and logs a warning) if the folder lookup fails, so callers
111
- can batch-resolve ids without a single missing folder aborting the whole
112
- operation.
110
+ Returns ``None`` if the folder lookup fails (logged at debug; callers fall back
111
+ to the raw ``scope_id``), so batch resolution is not aborted by a single miss.
113
112
  """
114
113
  try:
115
114
  folder_info = await get_folder_info_async(
@@ -119,7 +118,7 @@ async def translate_scope_id_async(
119
118
  )
120
119
  return folder_info.name
121
120
  except Exception as e:
122
- _LOGGER.warning(f"Could not resolve folder for scope_id {scope_id}", exc_info=e)
121
+ _LOGGER.debug("Could not resolve folder for scope_id %s", scope_id, exc_info=e)
123
122
  return None
124
123
 
125
124
 
@@ -93,6 +93,7 @@ class LanguageModelName(StrEnum):
93
93
  ANTHROPIC_CLAUDE_OPUS_4_6 = "litellm:anthropic-claude-opus-4-6"
94
94
  ANTHROPIC_CLAUDE_OPUS_4_7 = "litellm:anthropic-claude-opus-4-7"
95
95
  ANTHROPIC_CLAUDE_OPUS_4_8 = "litellm:anthropic-claude-opus-4-8"
96
+ ANTHROPIC_CLAUDE_OPUS_5 = "litellm:anthropic-claude-opus-5"
96
97
  ANTHROPIC_CLAUDE_FABLE_5 = "litellm:anthropic-claude-fable-5"
97
98
  GEMINI_2_0_FLASH = "litellm:gemini-2-0-flash"
98
99
  GEMINI_2_5_FLASH = "litellm:gemini-2-5-flash"
@@ -137,6 +138,7 @@ class LanguageModelName(StrEnum):
137
138
  LITELLM_GLM_5_1 = "litellm:glm-5.1"
138
139
  LITELLM_GLM_5_2 = "litellm:glm-5.2"
139
140
  LITELLM_KIMI_K2_6 = "litellm:kimi-k2.6"
141
+ LITELLM_KIMI_K3 = "litellm:kimi-k3"
140
142
  LITELLM_QWEN_3 = "litellm:qwen-3-235B-A22B"
141
143
  LITELLM_QWEN_3_THINKING = "litellm:qwen-3-235B-A22B-thinking"
142
144
  VERTEX_CLAUDE_SONNET_4_6 = "litellm:vertex-claude-sonnet-4-6"
@@ -144,6 +146,7 @@ class LanguageModelName(StrEnum):
144
146
  VERTEX_CLAUDE_OPUS_4_6 = "litellm:vertex-claude-opus-4-6"
145
147
  VERTEX_CLAUDE_OPUS_4_7 = "litellm:vertex-claude-opus-4-7"
146
148
  VERTEX_CLAUDE_OPUS_4_8 = "litellm:vertex-claude-opus-4-8"
149
+ VERTEX_CLAUDE_OPUS_5 = "litellm:vertex-claude-opus-5"
147
150
  VERTEX_CLAUDE_FABLE_5 = "litellm:vertex-claude-fable-5"
148
151
 
149
152
 
@@ -1812,6 +1815,30 @@ class LanguageModelInfo(BaseModel):
1812
1815
  published_at=date(2026, 5, 28),
1813
1816
  supported_reasoning_efforts=[],
1814
1817
  )
1818
+ case (
1819
+ LanguageModelName.ANTHROPIC_CLAUDE_OPUS_5
1820
+ | LanguageModelName.VERTEX_CLAUDE_OPUS_5
1821
+ ):
1822
+ return cls(
1823
+ name=model_name,
1824
+ capabilities=[
1825
+ ModelCapabilities.FUNCTION_CALLING,
1826
+ ModelCapabilities.STREAMING,
1827
+ ModelCapabilities.VISION,
1828
+ ModelCapabilities.REASONING,
1829
+ ],
1830
+ provider=LanguageModelProvider.LITELLM,
1831
+ family=ModelFamily.ANTHROPIC,
1832
+ version="claude-opus-5",
1833
+ encoder_name=EncoderName.O200K_BASE, # TODO: Update encoder with litellm
1834
+ token_limits=LanguageModelTokenLimits(
1835
+ token_limit_input=1_000_000,
1836
+ token_limit_output=128_000,
1837
+ ),
1838
+ info_cutoff_at=date(2026, 5, 1),
1839
+ published_at=date(2026, 7, 24),
1840
+ supported_reasoning_efforts=[],
1841
+ )
1815
1842
  case (
1816
1843
  LanguageModelName.ANTHROPIC_CLAUDE_FABLE_5
1817
1844
  | LanguageModelName.VERTEX_CLAUDE_FABLE_5
@@ -2854,6 +2881,27 @@ class LanguageModelInfo(BaseModel):
2854
2881
  published_at=date(2026, 1, 1),
2855
2882
  supported_reasoning_efforts=[],
2856
2883
  )
2884
+ case LanguageModelName.LITELLM_KIMI_K3:
2885
+ return cls(
2886
+ name=model_name,
2887
+ provider=LanguageModelProvider.LITELLM,
2888
+ family=ModelFamily.KIMI,
2889
+ version="kimi-k3",
2890
+ encoder_name=EncoderName.O200K_BASE,
2891
+ capabilities=[
2892
+ ModelCapabilities.FUNCTION_CALLING,
2893
+ ModelCapabilities.STRUCTURED_OUTPUT,
2894
+ ModelCapabilities.REASONING,
2895
+ ModelCapabilities.STREAMING,
2896
+ ModelCapabilities.VISION,
2897
+ ],
2898
+ token_limits=LanguageModelTokenLimits(
2899
+ token_limit_input=1_000_000,
2900
+ token_limit_output=128_000,
2901
+ ),
2902
+ published_at=date(2026, 7, 27),
2903
+ supported_reasoning_efforts=[],
2904
+ )
2857
2905
  case LanguageModelName.LITELLM_QWEN_3:
2858
2906
  return cls(
2859
2907
  name=model_name,
@@ -11,6 +11,7 @@ from humps import camelize
11
11
  from pydantic import BaseModel, BeforeValidator, ConfigDict
12
12
 
13
13
  from unique_toolkit.language_model.infos import LanguageModelName
14
+ from unique_toolkit.language_model.model_costs import calculate_invocation_cost_usd
14
15
  from unique_toolkit.language_model.schemas import LanguageModelTokenUsage
15
16
 
16
17
  # `protected_namespaces=()` allows the `model_name` field name.
@@ -59,6 +60,7 @@ class LanguageModelInvocationStats(BaseModel):
59
60
  model_name: ModelName
60
61
  token_usage: LanguageModelTokenUsage
61
62
  source: Source # e.g. "main_loop", tool/evaluation/postprocessor name
63
+ cost_usd: float | None = None
62
64
 
63
65
  @classmethod
64
66
  def from_usage(
@@ -67,4 +69,9 @@ class LanguageModelInvocationStats(BaseModel):
67
69
  token_usage: LanguageModelTokenUsage,
68
70
  source: str,
69
71
  ) -> Self:
70
- return cls(model_name=model_name, token_usage=token_usage, source=source)
72
+ return cls(
73
+ model_name=model_name,
74
+ token_usage=token_usage,
75
+ source=source,
76
+ cost_usd=calculate_invocation_cost_usd(str(model_name), token_usage),
77
+ )