unique_toolkit 1.69.3__tar.gz → 1.69.5__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 (297) hide show
  1. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/PKG-INFO +1 -1
  2. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/pyproject.toml +1 -1
  3. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/_common/api_calling/human_verification_manager.py +1 -0
  4. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/app/unique_settings.py +5 -0
  5. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/chat/functions.py +3 -2
  6. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/chat/schemas.py +9 -49
  7. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/language_model/builder.py +36 -7
  8. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/language_model/functions.py +2 -3
  9. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/language_model/schemas.py +56 -15
  10. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/services/chat_service.py +1 -1
  11. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/README.md +0 -0
  12. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/__init__.py +0 -0
  13. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/_common/__init__.py +0 -0
  14. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/_common/_base_service.py +0 -0
  15. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/_common/_time_utils.py +0 -0
  16. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/_common/base_model_type_attribute.py +0 -0
  17. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/_common/chunk_relevancy_sorter/config.py +0 -0
  18. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/_common/chunk_relevancy_sorter/exception.py +0 -0
  19. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/_common/chunk_relevancy_sorter/schemas.py +0 -0
  20. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/_common/chunk_relevancy_sorter/service.py +0 -0
  21. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/_common/chunk_relevancy_sorter/tests/test_service.py +0 -0
  22. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/_common/config_checker/README.md +0 -0
  23. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/_common/config_checker/__init__.py +0 -0
  24. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/_common/config_checker/__main__.py +0 -0
  25. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/_common/config_checker/cli.py +0 -0
  26. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/_common/config_checker/differ.py +0 -0
  27. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/_common/config_checker/exporter.py +0 -0
  28. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/_common/config_checker/models.py +0 -0
  29. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/_common/config_checker/registry.py +0 -0
  30. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/_common/config_checker/validator.py +0 -0
  31. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/_common/default_language_model.py +0 -0
  32. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/_common/docx_generator/__init__.py +0 -0
  33. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/_common/docx_generator/config.py +0 -0
  34. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/_common/docx_generator/pandoc_converter.py +0 -0
  35. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/_common/docx_generator/schemas.py +0 -0
  36. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/_common/docx_generator/service.py +0 -0
  37. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/_common/docx_generator/template/Doc Template.docx +0 -0
  38. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/_common/endpoint_builder.py +0 -0
  39. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/_common/endpoint_requestor.py +0 -0
  40. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/_common/event_bus.py +0 -0
  41. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/_common/exception.py +0 -0
  42. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/_common/execution.py +0 -0
  43. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/_common/experimental/endpoint_builder.py +0 -0
  44. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/_common/experimental/endpoint_requestor.py +0 -0
  45. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/_common/experimental/write_up_agent/README.md +0 -0
  46. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/_common/experimental/write_up_agent/__init__.py +0 -0
  47. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/_common/experimental/write_up_agent/agent.py +0 -0
  48. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/_common/experimental/write_up_agent/config.py +0 -0
  49. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/_common/experimental/write_up_agent/examples/data.csv +0 -0
  50. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/_common/experimental/write_up_agent/examples/example_usage.py +0 -0
  51. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/_common/experimental/write_up_agent/schemas.py +0 -0
  52. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/_common/experimental/write_up_agent/services/__init__.py +0 -0
  53. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/_common/experimental/write_up_agent/services/dataframe_handler/__init__.py +0 -0
  54. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/_common/experimental/write_up_agent/services/dataframe_handler/exceptions.py +0 -0
  55. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/_common/experimental/write_up_agent/services/dataframe_handler/service.py +0 -0
  56. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/_common/experimental/write_up_agent/services/dataframe_handler/utils.py +0 -0
  57. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/__init__.py +0 -0
  58. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/config.py +0 -0
  59. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/exceptions.py +0 -0
  60. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/prompts/config.py +0 -0
  61. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/prompts/system_prompt.j2 +0 -0
  62. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/prompts/user_prompt.j2 +0 -0
  63. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/service.py +0 -0
  64. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/_common/experimental/write_up_agent/services/template_handler/__init__.py +0 -0
  65. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/_common/experimental/write_up_agent/services/template_handler/default_template.j2 +0 -0
  66. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/_common/experimental/write_up_agent/services/template_handler/exceptions.py +0 -0
  67. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/_common/experimental/write_up_agent/services/template_handler/service.py +0 -0
  68. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/_common/experimental/write_up_agent/services/template_handler/utils.py +0 -0
  69. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/_common/experimental/write_up_agent/utils.py +0 -0
  70. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/_common/feature_flags/schema.py +0 -0
  71. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/_common/pydantic/rjsf_tags.py +0 -0
  72. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/_common/pydantic_helpers.py +0 -0
  73. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/_common/referencing.py +0 -0
  74. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/_common/string_utilities.py +0 -0
  75. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/_common/tests/test_referencing.py +0 -0
  76. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/_common/tests/test_string_utilities.py +0 -0
  77. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/_common/token/__init__.py +0 -0
  78. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/_common/token/image_token_counting.py +0 -0
  79. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/_common/token/token_counting.py +0 -0
  80. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/_common/token/tokenizers/deepseek/tokenizer.json +0 -0
  81. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/_common/token/tokenizers/qwen/tokenizer.json +0 -0
  82. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/_common/utils/__init__.py +0 -0
  83. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/_common/utils/files.py +0 -0
  84. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/_common/utils/image/encode.py +0 -0
  85. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/_common/utils/jinja/helpers.py +0 -0
  86. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/_common/utils/jinja/render.py +0 -0
  87. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/_common/utils/jinja/schema.py +0 -0
  88. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/_common/utils/jinja/utils.py +0 -0
  89. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/_common/utils/structured_output/__init__.py +0 -0
  90. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/_common/utils/structured_output/schema.py +0 -0
  91. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/_common/utils/write_configuration.py +0 -0
  92. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/_common/validate_required_values.py +0 -0
  93. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/_common/validators.py +0 -0
  94. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/agentic/__init__.py +0 -0
  95. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/agentic/debug_info_manager/debug_info_manager.py +0 -0
  96. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/agentic/debug_info_manager/test/test_debug_info_manager.py +0 -0
  97. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/agentic/evaluation/config.py +0 -0
  98. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/agentic/evaluation/context_relevancy/prompts/__init__.py +0 -0
  99. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/agentic/evaluation/context_relevancy/prompts/system_prompt.j2 +0 -0
  100. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/agentic/evaluation/context_relevancy/prompts/user_prompt.j2 +0 -0
  101. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/agentic/evaluation/context_relevancy/schema.py +0 -0
  102. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/agentic/evaluation/context_relevancy/service.py +0 -0
  103. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/agentic/evaluation/evaluation_manager.py +0 -0
  104. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/agentic/evaluation/exception.py +0 -0
  105. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/agentic/evaluation/hallucination/constants.py +0 -0
  106. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/agentic/evaluation/hallucination/hallucination_evaluation.py +0 -0
  107. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/agentic/evaluation/hallucination/prompts/__init__.py +0 -0
  108. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/agentic/evaluation/hallucination/prompts/system_prompt.j2 +0 -0
  109. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/agentic/evaluation/hallucination/prompts/user_prompt.j2 +0 -0
  110. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/agentic/evaluation/hallucination/service.py +0 -0
  111. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/agentic/evaluation/hallucination/utils.py +0 -0
  112. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/agentic/evaluation/output_parser.py +0 -0
  113. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/agentic/evaluation/schemas.py +0 -0
  114. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/agentic/evaluation/tests/fixtures.py +0 -0
  115. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/agentic/evaluation/tests/test_config.py +0 -0
  116. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/agentic/evaluation/tests/test_context_relevancy_service.py +0 -0
  117. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/agentic/evaluation/tests/test_hallucination_constants.py +0 -0
  118. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/agentic/evaluation/tests/test_hallucination_utils.py +0 -0
  119. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/agentic/evaluation/tests/test_output_parser.py +0 -0
  120. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/agentic/evaluation/tests/test_prompt_loaders.py +0 -0
  121. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/agentic/evaluation/utils.py +0 -0
  122. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/agentic/feature_flags/__init__.py +0 -0
  123. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/agentic/feature_flags/feature_flags.py +0 -0
  124. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/agentic/history_manager/history_construction_with_contents.py +0 -0
  125. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/agentic/history_manager/history_manager.py +0 -0
  126. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/agentic/history_manager/loop_token_reducer.py +0 -0
  127. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/agentic/history_manager/utils.py +0 -0
  128. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/agentic/loop_runner/__init__.py +0 -0
  129. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/agentic/loop_runner/_iteration_handler_utils.py +0 -0
  130. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/agentic/loop_runner/_responses_iteration_handler_utils.py +0 -0
  131. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/agentic/loop_runner/_responses_stream_handler_utils.py +0 -0
  132. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/agentic/loop_runner/_stream_handler_utils.py +0 -0
  133. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/agentic/loop_runner/base.py +0 -0
  134. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/agentic/loop_runner/middleware/__init__.py +0 -0
  135. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/agentic/loop_runner/middleware/planning/__init__.py +0 -0
  136. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/agentic/loop_runner/middleware/planning/planning.py +0 -0
  137. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/agentic/loop_runner/middleware/planning/schema.py +0 -0
  138. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/agentic/loop_runner/runners/__init__.py +0 -0
  139. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/agentic/loop_runner/runners/basic.py +0 -0
  140. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/agentic/loop_runner/runners/mistral/__init__.py +0 -0
  141. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/agentic/loop_runner/runners/mistral/mistral_runner.py +0 -0
  142. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/agentic/loop_runner/runners/qwen/__init__.py +0 -0
  143. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/agentic/loop_runner/runners/qwen/helpers.py +0 -0
  144. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/agentic/loop_runner/runners/qwen/qwen_runner.py +0 -0
  145. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/agentic/message_log_manager/__init__.py +0 -0
  146. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/agentic/message_log_manager/service.py +0 -0
  147. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/agentic/postprocessor/postprocessor_manager.py +0 -0
  148. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/agentic/reference_manager/reference_manager.py +0 -0
  149. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/agentic/responses_api/__init__.py +0 -0
  150. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/agentic/responses_api/postprocessors/code_display.py +0 -0
  151. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/agentic/responses_api/postprocessors/generated_files.py +0 -0
  152. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/agentic/responses_api/stream_handler.py +0 -0
  153. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/agentic/short_term_memory_manager/persistent_short_term_memory_manager.py +0 -0
  154. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/agentic/thinking_manager/thinking_manager.py +0 -0
  155. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/agentic/tools/__init__.py +0 -0
  156. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/agentic/tools/a2a/__init__.py +0 -0
  157. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/agentic/tools/a2a/config.py +0 -0
  158. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/agentic/tools/a2a/evaluation/__init__.py +0 -0
  159. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/agentic/tools/a2a/evaluation/_utils.py +0 -0
  160. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/agentic/tools/a2a/evaluation/config.py +0 -0
  161. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/agentic/tools/a2a/evaluation/evaluator.py +0 -0
  162. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/agentic/tools/a2a/evaluation/summarization_user_message.j2 +0 -0
  163. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/agentic/tools/a2a/manager.py +0 -0
  164. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/agentic/tools/a2a/postprocessing/__init__.py +0 -0
  165. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/agentic/tools/a2a/postprocessing/_display_utils.py +0 -0
  166. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/agentic/tools/a2a/postprocessing/_ref_utils.py +0 -0
  167. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/agentic/tools/a2a/postprocessing/config.py +0 -0
  168. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/agentic/tools/a2a/postprocessing/display.py +0 -0
  169. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/agentic/tools/a2a/postprocessing/references.py +0 -0
  170. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/agentic/tools/a2a/postprocessing/test/test_display.py +0 -0
  171. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/agentic/tools/a2a/postprocessing/test/test_display_utils.py +0 -0
  172. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/agentic/tools/a2a/postprocessing/test/test_ref_utils.py +0 -0
  173. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/agentic/tools/a2a/prompts.py +0 -0
  174. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/agentic/tools/a2a/response_watcher/__init__.py +0 -0
  175. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/agentic/tools/a2a/response_watcher/service.py +0 -0
  176. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/agentic/tools/a2a/tool/__init__.py +0 -0
  177. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/agentic/tools/a2a/tool/_memory.py +0 -0
  178. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/agentic/tools/a2a/tool/_schema.py +0 -0
  179. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/agentic/tools/a2a/tool/config.py +0 -0
  180. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/agentic/tools/a2a/tool/service.py +0 -0
  181. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/agentic/tools/a2a/tool/test/test_service_utils.py +0 -0
  182. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/agentic/tools/agent_chunks_hanlder.py +0 -0
  183. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/agentic/tools/config.py +0 -0
  184. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/agentic/tools/experimental/__init__.py +0 -0
  185. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/agentic/tools/experimental/open_file_tool/__init__.py +0 -0
  186. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/agentic/tools/experimental/open_file_tool/config.py +0 -0
  187. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/agentic/tools/experimental/open_file_tool/runtime.py +0 -0
  188. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/agentic/tools/experimental/open_file_tool/tool.py +0 -0
  189. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/agentic/tools/factory.py +0 -0
  190. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/agentic/tools/mcp/__init__.py +0 -0
  191. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/agentic/tools/mcp/manager.py +0 -0
  192. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/agentic/tools/mcp/models.py +0 -0
  193. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/agentic/tools/mcp/tool_wrapper.py +0 -0
  194. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/agentic/tools/openai_builtin/__init__.py +0 -0
  195. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/agentic/tools/openai_builtin/base.py +0 -0
  196. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/__init__.py +0 -0
  197. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/config.py +0 -0
  198. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/postprocessors/__init__.py +0 -0
  199. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/postprocessors/code_display.py +0 -0
  200. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/postprocessors/generated_files.py +0 -0
  201. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/schemas.py +0 -0
  202. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/service.py +0 -0
  203. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/agentic/tools/openai_builtin/manager.py +0 -0
  204. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/agentic/tools/schemas.py +0 -0
  205. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/agentic/tools/test/test_mcp_manager.py +0 -0
  206. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/agentic/tools/test/test_tool_progress_reporter.py +0 -0
  207. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/agentic/tools/tool.py +0 -0
  208. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/agentic/tools/tool_manager.py +0 -0
  209. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/agentic/tools/tool_progress_reporter.py +0 -0
  210. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/agentic/tools/utils/__init__.py +0 -0
  211. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/agentic/tools/utils/source_handling/__init__.py +0 -0
  212. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/agentic/tools/utils/source_handling/schema.py +0 -0
  213. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/agentic/tools/utils/source_handling/source_formatting.py +0 -0
  214. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/agentic/tools/utils/source_handling/tests/test_source_formatting.py +0 -0
  215. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/agentic_table/__init__.py +0 -0
  216. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/agentic_table/schemas.py +0 -0
  217. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/agentic_table/service.py +0 -0
  218. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/app/__init__.py +0 -0
  219. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/app/dev_util.py +0 -0
  220. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/app/fast_api_factory.py +0 -0
  221. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/app/init_logging.py +0 -0
  222. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/app/init_sdk.py +0 -0
  223. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/app/performance/async_tasks.py +0 -0
  224. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/app/performance/async_wrapper.py +0 -0
  225. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/app/schemas.py +0 -0
  226. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/app/verification.py +0 -0
  227. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/app/webhook.py +0 -0
  228. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/chat/__init__.py +0 -0
  229. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/chat/cancellation.py +0 -0
  230. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/chat/constants.py +0 -0
  231. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/chat/deprecated/service.py +0 -0
  232. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/chat/rendering.py +0 -0
  233. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/chat/responses_api.py +0 -0
  234. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/chat/service.py +0 -0
  235. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/chat/state.py +0 -0
  236. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/chat/utils.py +0 -0
  237. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/content/__init__.py +0 -0
  238. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/content/constants.py +0 -0
  239. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/content/functions.py +0 -0
  240. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/content/schemas.py +0 -0
  241. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/content/service.py +0 -0
  242. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/content/smart_rules.py +0 -0
  243. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/content/utils.py +0 -0
  244. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/data_extraction/README.md +0 -0
  245. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/data_extraction/__init__.py +0 -0
  246. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/data_extraction/augmented/__init__.py +0 -0
  247. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/data_extraction/augmented/service.py +0 -0
  248. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/data_extraction/base.py +0 -0
  249. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/data_extraction/basic/__init__.py +0 -0
  250. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/data_extraction/basic/config.py +0 -0
  251. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/data_extraction/basic/prompt.py +0 -0
  252. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/data_extraction/basic/service.py +0 -0
  253. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/elicitation/__init__.py +0 -0
  254. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/elicitation/constants.py +0 -0
  255. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/elicitation/exceptions.py +0 -0
  256. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/elicitation/functions.py +0 -0
  257. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/elicitation/schemas.py +0 -0
  258. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/elicitation/service.py +0 -0
  259. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/embedding/__init__.py +0 -0
  260. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/embedding/constants.py +0 -0
  261. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/embedding/functions.py +0 -0
  262. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/embedding/schemas.py +0 -0
  263. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/embedding/service.py +0 -0
  264. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/embedding/utils.py +0 -0
  265. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/framework_utilities/__init__.py +0 -0
  266. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/framework_utilities/langchain/__init__.py +0 -0
  267. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/framework_utilities/langchain/client.py +0 -0
  268. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/framework_utilities/langchain/history.py +0 -0
  269. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/framework_utilities/openai/__init__.py +0 -0
  270. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/framework_utilities/openai/client.py +0 -0
  271. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/framework_utilities/openai/message_builder.py +0 -0
  272. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/framework_utilities/utils.py +0 -0
  273. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/language_model/__init__.py +0 -0
  274. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/language_model/_responses_api_utils.py +0 -0
  275. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/language_model/constants.py +0 -0
  276. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/language_model/default_language_model.py +0 -0
  277. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/language_model/infos.py +0 -0
  278. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/language_model/prompt.py +0 -0
  279. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/language_model/reference.py +0 -0
  280. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/language_model/service.py +0 -0
  281. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/language_model/stream_transform.py +0 -0
  282. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/language_model/utils.py +0 -0
  283. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/monitoring/__init__.py +0 -0
  284. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/monitoring/middleware.py +0 -0
  285. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/monitoring/registry.py +0 -0
  286. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/protocols/support.py +0 -0
  287. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/services/__init__.py +0 -0
  288. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/services/factory.py +0 -0
  289. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/services/knowledge_base.py +0 -0
  290. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/short_term_memory/__init__.py +0 -0
  291. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/short_term_memory/constants.py +0 -0
  292. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/short_term_memory/functions.py +0 -0
  293. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/short_term_memory/schemas.py +0 -0
  294. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/short_term_memory/service.py +0 -0
  295. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/smart_rules/__init__.py +0 -0
  296. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/unique_toolkit/smart_rules/compile.py +0 -0
  297. {unique_toolkit-1.69.3 → unique_toolkit-1.69.5}/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: 1.69.3
3
+ Version: 1.69.5
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 = "1.69.3"
3
+ version = "1.69.5"
4
4
  description = ""
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.12"
@@ -332,6 +332,7 @@ if __name__ == "__main__":
332
332
  )
333
333
 
334
334
  last_assistant_message = ChatMessage(
335
+ id="123",
335
336
  role=ChatMessageRole.ASSISTANT,
336
337
  text=api_call.confirmation.payload_hash,
337
338
  chat_id="123",
@@ -657,6 +657,11 @@ class UniqueSettings:
657
657
  @property
658
658
  @deprecated("Use authcontext instead")
659
659
  def auth(self) -> UniqueAuth:
660
+ if isinstance(self._context.auth, AuthContext):
661
+ return UniqueAuth(
662
+ company_id=SecretStr(self._context.auth.get_confidential_company_id()),
663
+ user_id=SecretStr(self._context.auth.get_confidential_user_id()),
664
+ )
660
665
  if not isinstance(self._context.auth, UniqueAuth):
661
666
  raise ValueError("Auth context is not a UniqueAuth instance")
662
667
  return self._context.auth
@@ -426,6 +426,7 @@ def get_selection_from_history(
426
426
  )
427
427
 
428
428
 
429
+ @deprecated("Use ChatMessage directly")
429
430
  def map_to_chat_messages(messages: list[dict]) -> list[ChatMessage]:
430
431
  return [ChatMessage(**msg) for msg in messages]
431
432
 
@@ -502,7 +503,7 @@ def get_full_history(
502
503
  messages = list_messages(event_user_id, event_company_id, event_payload_chat_id)
503
504
  messages = filter_valid_messages(messages)
504
505
 
505
- return map_to_chat_messages(messages)
506
+ return [ChatMessage.model_validate(msg) for msg in messages]
506
507
 
507
508
 
508
509
  async def get_full_history_async(
@@ -517,7 +518,7 @@ async def get_full_history_async(
517
518
  )
518
519
  messages = filter_valid_messages(messages)
519
520
 
520
- return map_to_chat_messages(messages)
521
+ return [ChatMessage.model_validate(msg) for msg in messages]
521
522
 
522
523
 
523
524
  def filter_valid_messages(
@@ -9,9 +9,6 @@ from openai.types.chat import (
9
9
  ChatCompletionMessageParam,
10
10
  ChatCompletionUserMessageParam,
11
11
  )
12
- from openai.types.chat.chat_completion_message_function_tool_call_param import (
13
- ChatCompletionMessageFunctionToolCallParam,
14
- )
15
12
  from openai.types.chat.chat_completion_message_function_tool_call_param import (
16
13
  Function as OpenAIFunction,
17
14
  )
@@ -20,7 +17,6 @@ from pydantic import (
20
17
  ConfigDict,
21
18
  Field,
22
19
  field_validator,
23
- model_validator,
24
20
  )
25
21
 
26
22
  from unique_toolkit.content.schemas import ContentReference
@@ -35,7 +31,6 @@ model_config = ConfigDict(
35
31
  class ChatMessageRole(StrEnum):
36
32
  USER = "user"
37
33
  ASSISTANT = "assistant"
38
- TOOL = "tool"
39
34
  SYSTEM = "system" # Note: These messages are appended by the backend and should not be confused with the LLM's system message.
40
35
 
41
36
 
@@ -52,21 +47,6 @@ class Function(BaseModel):
52
47
  )
53
48
 
54
49
 
55
- class ToolCall(BaseModel):
56
- model_config = model_config
57
-
58
- id: str
59
- type: str
60
- function: Function
61
-
62
- def to_openai_param(self) -> ChatCompletionMessageFunctionToolCallParam:
63
- return ChatCompletionMessageFunctionToolCallParam(
64
- id=self.id,
65
- function=self.function.to_openai(),
66
- type="function",
67
- )
68
-
69
-
70
50
  class ChatMessageToolResponse(BaseModel):
71
51
  """Persisted response for a single tool call."""
72
52
 
@@ -146,9 +126,9 @@ class ChatMessage(BaseModel):
146
126
  # Fields previous_message_id, tool_calls, tool_call_id are internal extensions not in the DTO.
147
127
  model_config = model_config
148
128
 
149
- id: str | None = None
129
+ id: str
150
130
  chat_id: str
151
- object: str | None = None
131
+ object: Literal["message"] = "message"
152
132
  # alias="text" applies only to construction (model_validate / __init__).
153
133
  # model_dump() uses the field name "content", not "text". Use model_dump(by_alias=True)
154
134
  # to get "text" as the key, or access via the .text property.
@@ -157,7 +137,6 @@ class ChatMessage(BaseModel):
157
137
  role: ChatMessageRole
158
138
  previous_message_id: str | None = None
159
139
  gpt_request: list[dict] | dict | None = None
160
- tool_calls: list[ToolCall] | None = None
161
140
  debug_info: dict | None = {}
162
141
  created_at: datetime | None = None
163
142
  completed_at: datetime | None = None
@@ -182,13 +161,6 @@ class ChatMessage(BaseModel):
182
161
  def text(self, value: str | None) -> None:
183
162
  self.content = value
184
163
 
185
- # Ensure tool_call_id is required if role is 'tool'
186
- @model_validator(mode="after")
187
- def check_tool_call_ids_for_tool_role(self):
188
- if self.role == ChatMessageRole.TOOL and not self.tool_call_id:
189
- raise ValueError("tool_call_id is required when role is 'tool'")
190
- return self
191
-
192
164
  def to_openai_param(self) -> ChatCompletionMessageParam:
193
165
  match self.role:
194
166
  case ChatMessageRole.USER:
@@ -198,25 +170,13 @@ class ChatMessage(BaseModel):
198
170
  )
199
171
 
200
172
  case ChatMessageRole.ASSISTANT:
201
- if self.tool_calls:
202
- assistant_message = ChatCompletionAssistantMessageParam(
203
- role="assistant",
204
- audio=None,
205
- content=self.content or "",
206
- function_call=None,
207
- refusal=None,
208
- tool_calls=[t.to_openai_param() for t in self.tool_calls],
209
- )
210
- else:
211
- assistant_message = ChatCompletionAssistantMessageParam(
212
- role="assistant",
213
- audio=None,
214
- content=self.content or "",
215
- function_call=None,
216
- refusal=None,
217
- )
218
-
219
- return assistant_message
173
+ return ChatCompletionAssistantMessageParam(
174
+ role="assistant",
175
+ audio=None,
176
+ content=self.content or "",
177
+ function_call=None,
178
+ refusal=None,
179
+ )
220
180
 
221
181
  case _:
222
182
  raise NotImplementedError(
@@ -1,3 +1,4 @@
1
+ import logging
1
2
  from typing import Any, Self
2
3
 
3
4
  from unique_toolkit.language_model import (
@@ -12,6 +13,8 @@ from unique_toolkit.language_model import (
12
13
  LanguageModelUserMessage,
13
14
  )
14
15
 
16
+ _LOGGER = logging.getLogger(__name__)
17
+
15
18
 
16
19
  class MessagesBuilder:
17
20
  def __init__(self):
@@ -22,8 +25,24 @@ class MessagesBuilder:
22
25
  return self
23
26
 
24
27
  def message_append(self, role: LanguageModelMessageRole, content: str):
25
- message = LanguageModelMessage(role=role, content=content)
26
- self.messages.append(message)
28
+ message = None
29
+ match role:
30
+ case LanguageModelMessageRole.SYSTEM:
31
+ message = LanguageModelSystemMessage(content=content)
32
+ case LanguageModelMessageRole.USER:
33
+ message = LanguageModelUserMessage(content=content)
34
+ case LanguageModelMessageRole.ASSISTANT:
35
+ message = LanguageModelAssistantMessage(content=content)
36
+ case LanguageModelMessageRole.TOOL:
37
+ logging.warning(
38
+ "Tool messages are not supported in the builder as messages"
39
+ )
40
+
41
+ if message:
42
+ self.messages.append(message)
43
+ else:
44
+ _LOGGER.warning(f"Invalid message role: {role}")
45
+
27
46
  return self
28
47
 
29
48
  def system_message_append(self, content: str) -> Self:
@@ -54,12 +73,22 @@ class MessagesBuilder:
54
73
  for image in images
55
74
  ],
56
75
  )
76
+ message = None
77
+ match role:
78
+ case LanguageModelMessageRole.SYSTEM:
79
+ message = LanguageModelSystemMessage(content=final_content)
80
+ case LanguageModelMessageRole.USER:
81
+ message = LanguageModelUserMessage(content=final_content)
82
+ case LanguageModelMessageRole.ASSISTANT:
83
+ message = LanguageModelAssistantMessage(content=final_content)
84
+ case LanguageModelMessageRole.TOOL:
85
+ pass
86
+
87
+ if message:
88
+ self.messages.append(message)
89
+ else:
90
+ _LOGGER.warning(f"Invalid message role: {role}")
57
91
 
58
- message = LanguageModelMessage(
59
- role=role,
60
- content=final_content,
61
- )
62
- self.messages.append(message)
63
92
  return self
64
93
 
65
94
  def assistant_message_append(
@@ -26,7 +26,6 @@ from unique_toolkit.language_model.reference import (
26
26
  )
27
27
  from unique_toolkit.language_model.schemas import (
28
28
  LanguageModelFunction,
29
- LanguageModelMessageRole,
30
29
  LanguageModelMessages,
31
30
  LanguageModelResponse,
32
31
  LanguageModelStreamResponse,
@@ -530,7 +529,7 @@ def _create_language_model_stream_response_with_references(
530
529
  stream_response_message = ChatMessage(
531
530
  id="stream_unknown",
532
531
  previous_message_id=None,
533
- role=LanguageModelMessageRole.ASSISTANT,
532
+ role=ChatMessageRole.ASSISTANT,
534
533
  text=message.content or "",
535
534
  original_text=content,
536
535
  chat_id="stream_unknown",
@@ -661,7 +660,7 @@ async def stream_complete_with_references_openai(
661
660
  id=message_id or uuid4().hex,
662
661
  chat_id="",
663
662
  previous_message_id=None,
664
- role=LanguageModelMessageRole.ASSISTANT,
663
+ role=ChatMessageRole.ASSISTANT,
665
664
  text=text_,
666
665
  original_text=full_text,
667
666
  references=references_,
@@ -1,11 +1,14 @@
1
1
  import json
2
2
  import math
3
- from typing import Any, Literal, Self, TypeVar
3
+ from abc import ABC, abstractmethod
4
+ from enum import StrEnum
5
+ from typing import Any, Literal, Self, TypeVar, override
4
6
  from uuid import uuid4
5
7
 
6
8
  from humps import camelize
7
9
  from openai.types.chat import (
8
10
  ChatCompletionAssistantMessageParam,
11
+ ChatCompletionMessageParam,
9
12
  ChatCompletionSystemMessageParam,
10
13
  ChatCompletionToolMessageParam,
11
14
  ChatCompletionUserMessageParam,
@@ -20,6 +23,7 @@ from openai.types.responses import (
20
23
  FunctionToolParam,
21
24
  ResponseCodeInterpreterToolCall,
22
25
  ResponseFunctionToolCallParam,
26
+ ResponseInputItemParam,
23
27
  ResponseOutputItem,
24
28
  ResponseOutputMessage,
25
29
  )
@@ -40,7 +44,6 @@ from pydantic import (
40
44
  from typing_extensions import deprecated, overload
41
45
 
42
46
  from unique_toolkit.chat.schemas import ChatMessage
43
- from unique_toolkit.chat.schemas import ChatMessageRole as LanguageModelMessageRole
44
47
  from unique_toolkit.language_model._responses_api_utils import (
45
48
  convert_user_message_content_to_responses_api,
46
49
  )
@@ -54,6 +57,13 @@ model_config = ConfigDict(
54
57
  )
55
58
 
56
59
 
60
+ class LanguageModelMessageRole(StrEnum):
61
+ ASSISTANT = "assistant"
62
+ SYSTEM = "system"
63
+ USER = "user"
64
+ TOOL = "tool"
65
+
66
+
57
67
  # Backward compatibility alias — use ChatMessage directly.
58
68
  # LanguageModelStreamResponseMessage was a toolkit-only subclass with stricter types
59
69
  # (required id/content, non-null references). The backend DTOs (PublicMessageDto,
@@ -238,7 +248,7 @@ class LanguageModelFunctionCall(BaseModel):
238
248
  return assistant_message
239
249
 
240
250
 
241
- class LanguageModelMessage(BaseModel):
251
+ class LanguageModelMessage(BaseModel, ABC):
242
252
  model_config = model_config
243
253
  role: LanguageModelMessageRole
244
254
  content: str | list[dict] | None = None
@@ -252,6 +262,24 @@ class LanguageModelMessage(BaseModel):
252
262
 
253
263
  return format_message(self.role.capitalize(), message=message, num_tabs=1)
254
264
 
265
+ @overload
266
+ @abstractmethod
267
+ def to_openai(
268
+ self, mode: Literal["completions"] = "completions"
269
+ ) -> ChatCompletionMessageParam: ...
270
+
271
+ @overload
272
+ @abstractmethod
273
+ def to_openai(self, mode: Literal["responses"]) -> ResponseInputItemParam: ...
274
+
275
+ @abstractmethod
276
+ def to_openai(
277
+ self, mode: Literal["completions", "responses"] = "completions"
278
+ ) -> ChatCompletionMessageParam | ResponseInputItemParam:
279
+ raise NotImplementedError(
280
+ "Subclasses must implement this. This class should not be used directly"
281
+ )
282
+
255
283
 
256
284
  class LanguageModelSystemMessage(LanguageModelMessage):
257
285
  role: LanguageModelMessageRole = LanguageModelMessageRole.SYSTEM
@@ -268,6 +296,7 @@ class LanguageModelSystemMessage(LanguageModelMessage):
268
296
  @overload
269
297
  def to_openai(self, mode: Literal["responses"]) -> EasyInputMessageParam: ...
270
298
 
299
+ @override
271
300
  def to_openai(
272
301
  self, mode: Literal["completions", "responses"] = "completions"
273
302
  ) -> ChatCompletionSystemMessageParam | EasyInputMessageParam:
@@ -296,11 +325,12 @@ class LanguageModelUserMessage(LanguageModelMessage):
296
325
  ) -> ChatCompletionUserMessageParam: ...
297
326
 
298
327
  @overload
299
- def to_openai(self, mode: Literal["responses"]) -> EasyInputMessageParam: ...
328
+ def to_openai(self, mode: Literal["responses"]) -> ResponseInputItemParam: ...
300
329
 
330
+ @override
301
331
  def to_openai(
302
332
  self, mode: Literal["completions", "responses"] = "completions"
303
- ) -> ChatCompletionUserMessageParam | EasyInputMessageParam:
333
+ ) -> ChatCompletionUserMessageParam | ResponseInputItemParam:
304
334
  if self.content is None:
305
335
  content = ""
306
336
  else:
@@ -370,16 +400,12 @@ class LanguageModelAssistantMessage(LanguageModelMessage):
370
400
  ) -> ChatCompletionAssistantMessageParam: ...
371
401
 
372
402
  @overload
373
- def to_openai(
374
- self, mode: Literal["responses"]
375
- ) -> list[EasyInputMessageParam | ResponseFunctionToolCallParam]: ...
403
+ def to_openai(self, mode: Literal["responses"]) -> EasyInputMessageParam: ...
376
404
 
405
+ @override
377
406
  def to_openai(
378
407
  self, mode: Literal["completions", "responses"] = "completions"
379
- ) -> (
380
- ChatCompletionAssistantMessageParam
381
- | list[EasyInputMessageParam | ResponseFunctionToolCallParam]
382
- ):
408
+ ) -> ChatCompletionAssistantMessageParam | EasyInputMessageParam:
383
409
  content = self.content or ""
384
410
  if not isinstance(content, str):
385
411
  raise ValueError("Content must be a string")
@@ -437,6 +463,7 @@ class LanguageModelToolMessage(LanguageModelMessage):
437
463
  @overload
438
464
  def to_openai(self, mode: Literal["responses"]) -> FunctionCallOutput: ...
439
465
 
466
+ @override
440
467
  def to_openai(
441
468
  self, mode: Literal["completions", "responses"] = "completions"
442
469
  ) -> ChatCompletionToolMessageParam | FunctionCallOutput:
@@ -463,7 +490,7 @@ class LanguageModelToolMessage(LanguageModelMessage):
463
490
  # with the addition of the builder
464
491
 
465
492
  LanguageModelMessageOptions = (
466
- LanguageModelMessage
493
+ LanguageModelMessage # TODO: Ideally we remove this
467
494
  | LanguageModelToolMessage
468
495
  | LanguageModelAssistantMessage
469
496
  | LanguageModelSystemMessage
@@ -501,8 +528,7 @@ class LanguageModelMessages(RootModel):
501
528
  elif role == "tool":
502
529
  converted_messages.append(LanguageModelToolMessage(**item))
503
530
  else:
504
- # Fallback to base LanguageModelMessage
505
- converted_messages.append(LanguageModelMessage(**item))
531
+ raise ValueError(f"Unknown message role: {item.get('role')!r}")
506
532
  else:
507
533
  # If it's already a message object, keep it as is
508
534
  converted_messages.append(item)
@@ -525,6 +551,21 @@ class LanguageModelMessages(RootModel):
525
551
  builder.messages = self.root.copy() # Start with existing messages
526
552
  return builder
527
553
 
554
+ @overload
555
+ def to_openai(self, mode: Literal["responses"]) -> list[ResponseInputItemParam]: ...
556
+
557
+ @overload
558
+ def to_openai(
559
+ self, mode: Literal["completions"] = "completions"
560
+ ) -> list[ChatCompletionMessageParam]: ...
561
+
562
+ def to_openai(
563
+ self, mode: Literal["completions", "responses"] = "completions"
564
+ ) -> list[ChatCompletionMessageParam] | list[ResponseInputItemParam]:
565
+ if mode == "responses":
566
+ return [message.to_openai(mode="responses") for message in self.root]
567
+ return [message.to_openai(mode="completions") for message in self.root]
568
+
528
569
 
529
570
  # This seems similar to
530
571
  # from openai.types.completion_choice import CompletionChoice
@@ -1133,7 +1133,7 @@ class ChatService(ChatServiceDeprecated):
1133
1133
  seconds_remaining: int | None = None,
1134
1134
  percentage_completed: int | None = None,
1135
1135
  is_queueable: bool = True,
1136
- execution_options: dict | None = None,
1136
+ execution_options: dict[str, Any] | None = None,
1137
1137
  progress_title: str | None = None,
1138
1138
  ) -> MessageExecution:
1139
1139
  """Creates a message execution for tracking long-running operations synchronously.