unique_toolkit 1.69.2__tar.gz → 1.69.4__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.2 → unique_toolkit-1.69.4}/PKG-INFO +1 -1
  2. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/pyproject.toml +1 -1
  3. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/_common/api_calling/human_verification_manager.py +1 -0
  4. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/_common/base_model_type_attribute.py +2 -2
  5. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/app/unique_settings.py +5 -0
  6. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/chat/functions.py +3 -2
  7. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/chat/schemas.py +9 -49
  8. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/language_model/builder.py +36 -7
  9. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/language_model/schemas.py +40 -19
  10. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/services/chat_service.py +1 -1
  11. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/README.md +0 -0
  12. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/__init__.py +0 -0
  13. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/_common/__init__.py +0 -0
  14. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/_common/_base_service.py +0 -0
  15. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/_common/_time_utils.py +0 -0
  16. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/_common/chunk_relevancy_sorter/config.py +0 -0
  17. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/_common/chunk_relevancy_sorter/exception.py +0 -0
  18. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/_common/chunk_relevancy_sorter/schemas.py +0 -0
  19. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/_common/chunk_relevancy_sorter/service.py +0 -0
  20. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/_common/chunk_relevancy_sorter/tests/test_service.py +0 -0
  21. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/_common/config_checker/README.md +0 -0
  22. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/_common/config_checker/__init__.py +0 -0
  23. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/_common/config_checker/__main__.py +0 -0
  24. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/_common/config_checker/cli.py +0 -0
  25. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/_common/config_checker/differ.py +0 -0
  26. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/_common/config_checker/exporter.py +0 -0
  27. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/_common/config_checker/models.py +0 -0
  28. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/_common/config_checker/registry.py +0 -0
  29. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/_common/config_checker/validator.py +0 -0
  30. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/_common/default_language_model.py +0 -0
  31. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/_common/docx_generator/__init__.py +0 -0
  32. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/_common/docx_generator/config.py +0 -0
  33. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/_common/docx_generator/pandoc_converter.py +0 -0
  34. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/_common/docx_generator/schemas.py +0 -0
  35. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/_common/docx_generator/service.py +0 -0
  36. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/_common/docx_generator/template/Doc Template.docx +0 -0
  37. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/_common/endpoint_builder.py +0 -0
  38. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/_common/endpoint_requestor.py +0 -0
  39. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/_common/event_bus.py +0 -0
  40. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/_common/exception.py +0 -0
  41. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/_common/execution.py +0 -0
  42. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/_common/experimental/endpoint_builder.py +0 -0
  43. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/_common/experimental/endpoint_requestor.py +0 -0
  44. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/_common/experimental/write_up_agent/README.md +0 -0
  45. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/_common/experimental/write_up_agent/__init__.py +0 -0
  46. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/_common/experimental/write_up_agent/agent.py +0 -0
  47. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/_common/experimental/write_up_agent/config.py +0 -0
  48. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/_common/experimental/write_up_agent/examples/data.csv +0 -0
  49. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/_common/experimental/write_up_agent/examples/example_usage.py +0 -0
  50. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/_common/experimental/write_up_agent/schemas.py +0 -0
  51. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/_common/experimental/write_up_agent/services/__init__.py +0 -0
  52. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/_common/experimental/write_up_agent/services/dataframe_handler/__init__.py +0 -0
  53. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/_common/experimental/write_up_agent/services/dataframe_handler/exceptions.py +0 -0
  54. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/_common/experimental/write_up_agent/services/dataframe_handler/service.py +0 -0
  55. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/_common/experimental/write_up_agent/services/dataframe_handler/utils.py +0 -0
  56. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/__init__.py +0 -0
  57. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/config.py +0 -0
  58. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/exceptions.py +0 -0
  59. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/prompts/config.py +0 -0
  60. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/prompts/system_prompt.j2 +0 -0
  61. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/prompts/user_prompt.j2 +0 -0
  62. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/service.py +0 -0
  63. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/_common/experimental/write_up_agent/services/template_handler/__init__.py +0 -0
  64. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/_common/experimental/write_up_agent/services/template_handler/default_template.j2 +0 -0
  65. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/_common/experimental/write_up_agent/services/template_handler/exceptions.py +0 -0
  66. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/_common/experimental/write_up_agent/services/template_handler/service.py +0 -0
  67. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/_common/experimental/write_up_agent/services/template_handler/utils.py +0 -0
  68. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/_common/experimental/write_up_agent/utils.py +0 -0
  69. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/_common/feature_flags/schema.py +0 -0
  70. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/_common/pydantic/rjsf_tags.py +0 -0
  71. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/_common/pydantic_helpers.py +0 -0
  72. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/_common/referencing.py +0 -0
  73. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/_common/string_utilities.py +0 -0
  74. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/_common/tests/test_referencing.py +0 -0
  75. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/_common/tests/test_string_utilities.py +0 -0
  76. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/_common/token/__init__.py +0 -0
  77. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/_common/token/image_token_counting.py +0 -0
  78. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/_common/token/token_counting.py +0 -0
  79. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/_common/token/tokenizers/deepseek/tokenizer.json +0 -0
  80. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/_common/token/tokenizers/qwen/tokenizer.json +0 -0
  81. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/_common/utils/__init__.py +0 -0
  82. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/_common/utils/files.py +0 -0
  83. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/_common/utils/image/encode.py +0 -0
  84. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/_common/utils/jinja/helpers.py +0 -0
  85. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/_common/utils/jinja/render.py +0 -0
  86. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/_common/utils/jinja/schema.py +0 -0
  87. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/_common/utils/jinja/utils.py +0 -0
  88. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/_common/utils/structured_output/__init__.py +0 -0
  89. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/_common/utils/structured_output/schema.py +0 -0
  90. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/_common/utils/write_configuration.py +0 -0
  91. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/_common/validate_required_values.py +0 -0
  92. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/_common/validators.py +0 -0
  93. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/agentic/__init__.py +0 -0
  94. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/agentic/debug_info_manager/debug_info_manager.py +0 -0
  95. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/agentic/debug_info_manager/test/test_debug_info_manager.py +0 -0
  96. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/agentic/evaluation/config.py +0 -0
  97. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/agentic/evaluation/context_relevancy/prompts/__init__.py +0 -0
  98. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/agentic/evaluation/context_relevancy/prompts/system_prompt.j2 +0 -0
  99. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/agentic/evaluation/context_relevancy/prompts/user_prompt.j2 +0 -0
  100. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/agentic/evaluation/context_relevancy/schema.py +0 -0
  101. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/agentic/evaluation/context_relevancy/service.py +0 -0
  102. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/agentic/evaluation/evaluation_manager.py +0 -0
  103. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/agentic/evaluation/exception.py +0 -0
  104. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/agentic/evaluation/hallucination/constants.py +0 -0
  105. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/agentic/evaluation/hallucination/hallucination_evaluation.py +0 -0
  106. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/agentic/evaluation/hallucination/prompts/__init__.py +0 -0
  107. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/agentic/evaluation/hallucination/prompts/system_prompt.j2 +0 -0
  108. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/agentic/evaluation/hallucination/prompts/user_prompt.j2 +0 -0
  109. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/agentic/evaluation/hallucination/service.py +0 -0
  110. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/agentic/evaluation/hallucination/utils.py +0 -0
  111. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/agentic/evaluation/output_parser.py +0 -0
  112. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/agentic/evaluation/schemas.py +0 -0
  113. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/agentic/evaluation/tests/fixtures.py +0 -0
  114. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/agentic/evaluation/tests/test_config.py +0 -0
  115. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/agentic/evaluation/tests/test_context_relevancy_service.py +0 -0
  116. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/agentic/evaluation/tests/test_hallucination_constants.py +0 -0
  117. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/agentic/evaluation/tests/test_hallucination_utils.py +0 -0
  118. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/agentic/evaluation/tests/test_output_parser.py +0 -0
  119. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/agentic/evaluation/tests/test_prompt_loaders.py +0 -0
  120. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/agentic/evaluation/utils.py +0 -0
  121. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/agentic/feature_flags/__init__.py +0 -0
  122. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/agentic/feature_flags/feature_flags.py +0 -0
  123. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/agentic/history_manager/history_construction_with_contents.py +0 -0
  124. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/agentic/history_manager/history_manager.py +0 -0
  125. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/agentic/history_manager/loop_token_reducer.py +0 -0
  126. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/agentic/history_manager/utils.py +0 -0
  127. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/agentic/loop_runner/__init__.py +0 -0
  128. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/agentic/loop_runner/_iteration_handler_utils.py +0 -0
  129. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/agentic/loop_runner/_responses_iteration_handler_utils.py +0 -0
  130. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/agentic/loop_runner/_responses_stream_handler_utils.py +0 -0
  131. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/agentic/loop_runner/_stream_handler_utils.py +0 -0
  132. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/agentic/loop_runner/base.py +0 -0
  133. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/agentic/loop_runner/middleware/__init__.py +0 -0
  134. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/agentic/loop_runner/middleware/planning/__init__.py +0 -0
  135. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/agentic/loop_runner/middleware/planning/planning.py +0 -0
  136. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/agentic/loop_runner/middleware/planning/schema.py +0 -0
  137. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/agentic/loop_runner/runners/__init__.py +0 -0
  138. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/agentic/loop_runner/runners/basic.py +0 -0
  139. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/agentic/loop_runner/runners/mistral/__init__.py +0 -0
  140. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/agentic/loop_runner/runners/mistral/mistral_runner.py +0 -0
  141. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/agentic/loop_runner/runners/qwen/__init__.py +0 -0
  142. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/agentic/loop_runner/runners/qwen/helpers.py +0 -0
  143. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/agentic/loop_runner/runners/qwen/qwen_runner.py +0 -0
  144. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/agentic/message_log_manager/__init__.py +0 -0
  145. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/agentic/message_log_manager/service.py +0 -0
  146. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/agentic/postprocessor/postprocessor_manager.py +0 -0
  147. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/agentic/reference_manager/reference_manager.py +0 -0
  148. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/agentic/responses_api/__init__.py +0 -0
  149. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/agentic/responses_api/postprocessors/code_display.py +0 -0
  150. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/agentic/responses_api/postprocessors/generated_files.py +0 -0
  151. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/agentic/responses_api/stream_handler.py +0 -0
  152. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/agentic/short_term_memory_manager/persistent_short_term_memory_manager.py +0 -0
  153. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/agentic/thinking_manager/thinking_manager.py +0 -0
  154. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/agentic/tools/__init__.py +0 -0
  155. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/agentic/tools/a2a/__init__.py +0 -0
  156. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/agentic/tools/a2a/config.py +0 -0
  157. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/agentic/tools/a2a/evaluation/__init__.py +0 -0
  158. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/agentic/tools/a2a/evaluation/_utils.py +0 -0
  159. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/agentic/tools/a2a/evaluation/config.py +0 -0
  160. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/agentic/tools/a2a/evaluation/evaluator.py +0 -0
  161. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/agentic/tools/a2a/evaluation/summarization_user_message.j2 +0 -0
  162. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/agentic/tools/a2a/manager.py +0 -0
  163. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/agentic/tools/a2a/postprocessing/__init__.py +0 -0
  164. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/agentic/tools/a2a/postprocessing/_display_utils.py +0 -0
  165. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/agentic/tools/a2a/postprocessing/_ref_utils.py +0 -0
  166. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/agentic/tools/a2a/postprocessing/config.py +0 -0
  167. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/agentic/tools/a2a/postprocessing/display.py +0 -0
  168. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/agentic/tools/a2a/postprocessing/references.py +0 -0
  169. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/agentic/tools/a2a/postprocessing/test/test_display.py +0 -0
  170. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/agentic/tools/a2a/postprocessing/test/test_display_utils.py +0 -0
  171. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/agentic/tools/a2a/postprocessing/test/test_ref_utils.py +0 -0
  172. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/agentic/tools/a2a/prompts.py +0 -0
  173. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/agentic/tools/a2a/response_watcher/__init__.py +0 -0
  174. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/agentic/tools/a2a/response_watcher/service.py +0 -0
  175. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/agentic/tools/a2a/tool/__init__.py +0 -0
  176. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/agentic/tools/a2a/tool/_memory.py +0 -0
  177. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/agentic/tools/a2a/tool/_schema.py +0 -0
  178. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/agentic/tools/a2a/tool/config.py +0 -0
  179. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/agentic/tools/a2a/tool/service.py +0 -0
  180. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/agentic/tools/a2a/tool/test/test_service_utils.py +0 -0
  181. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/agentic/tools/agent_chunks_hanlder.py +0 -0
  182. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/agentic/tools/config.py +0 -0
  183. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/agentic/tools/experimental/__init__.py +0 -0
  184. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/agentic/tools/experimental/open_file_tool/__init__.py +0 -0
  185. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/agentic/tools/experimental/open_file_tool/config.py +0 -0
  186. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/agentic/tools/experimental/open_file_tool/runtime.py +0 -0
  187. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/agentic/tools/experimental/open_file_tool/tool.py +0 -0
  188. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/agentic/tools/factory.py +0 -0
  189. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/agentic/tools/mcp/__init__.py +0 -0
  190. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/agentic/tools/mcp/manager.py +0 -0
  191. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/agentic/tools/mcp/models.py +0 -0
  192. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/agentic/tools/mcp/tool_wrapper.py +0 -0
  193. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/agentic/tools/openai_builtin/__init__.py +0 -0
  194. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/agentic/tools/openai_builtin/base.py +0 -0
  195. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/__init__.py +0 -0
  196. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/config.py +0 -0
  197. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/postprocessors/__init__.py +0 -0
  198. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/postprocessors/code_display.py +0 -0
  199. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/postprocessors/generated_files.py +0 -0
  200. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/schemas.py +0 -0
  201. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/service.py +0 -0
  202. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/agentic/tools/openai_builtin/manager.py +0 -0
  203. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/agentic/tools/schemas.py +0 -0
  204. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/agentic/tools/test/test_mcp_manager.py +0 -0
  205. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/agentic/tools/test/test_tool_progress_reporter.py +0 -0
  206. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/agentic/tools/tool.py +0 -0
  207. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/agentic/tools/tool_manager.py +0 -0
  208. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/agentic/tools/tool_progress_reporter.py +0 -0
  209. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/agentic/tools/utils/__init__.py +0 -0
  210. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/agentic/tools/utils/source_handling/__init__.py +0 -0
  211. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/agentic/tools/utils/source_handling/schema.py +0 -0
  212. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/agentic/tools/utils/source_handling/source_formatting.py +0 -0
  213. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/agentic/tools/utils/source_handling/tests/test_source_formatting.py +0 -0
  214. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/agentic_table/__init__.py +0 -0
  215. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/agentic_table/schemas.py +0 -0
  216. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/agentic_table/service.py +0 -0
  217. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/app/__init__.py +0 -0
  218. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/app/dev_util.py +0 -0
  219. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/app/fast_api_factory.py +0 -0
  220. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/app/init_logging.py +0 -0
  221. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/app/init_sdk.py +0 -0
  222. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/app/performance/async_tasks.py +0 -0
  223. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/app/performance/async_wrapper.py +0 -0
  224. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/app/schemas.py +0 -0
  225. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/app/verification.py +0 -0
  226. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/app/webhook.py +0 -0
  227. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/chat/__init__.py +0 -0
  228. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/chat/cancellation.py +0 -0
  229. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/chat/constants.py +0 -0
  230. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/chat/deprecated/service.py +0 -0
  231. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/chat/rendering.py +0 -0
  232. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/chat/responses_api.py +0 -0
  233. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/chat/service.py +0 -0
  234. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/chat/state.py +0 -0
  235. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/chat/utils.py +0 -0
  236. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/content/__init__.py +0 -0
  237. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/content/constants.py +0 -0
  238. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/content/functions.py +0 -0
  239. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/content/schemas.py +0 -0
  240. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/content/service.py +0 -0
  241. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/content/smart_rules.py +0 -0
  242. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/content/utils.py +0 -0
  243. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/data_extraction/README.md +0 -0
  244. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/data_extraction/__init__.py +0 -0
  245. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/data_extraction/augmented/__init__.py +0 -0
  246. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/data_extraction/augmented/service.py +0 -0
  247. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/data_extraction/base.py +0 -0
  248. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/data_extraction/basic/__init__.py +0 -0
  249. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/data_extraction/basic/config.py +0 -0
  250. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/data_extraction/basic/prompt.py +0 -0
  251. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/data_extraction/basic/service.py +0 -0
  252. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/elicitation/__init__.py +0 -0
  253. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/elicitation/constants.py +0 -0
  254. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/elicitation/exceptions.py +0 -0
  255. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/elicitation/functions.py +0 -0
  256. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/elicitation/schemas.py +0 -0
  257. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/elicitation/service.py +0 -0
  258. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/embedding/__init__.py +0 -0
  259. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/embedding/constants.py +0 -0
  260. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/embedding/functions.py +0 -0
  261. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/embedding/schemas.py +0 -0
  262. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/embedding/service.py +0 -0
  263. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/embedding/utils.py +0 -0
  264. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/framework_utilities/__init__.py +0 -0
  265. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/framework_utilities/langchain/__init__.py +0 -0
  266. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/framework_utilities/langchain/client.py +0 -0
  267. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/framework_utilities/langchain/history.py +0 -0
  268. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/framework_utilities/openai/__init__.py +0 -0
  269. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/framework_utilities/openai/client.py +0 -0
  270. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/framework_utilities/openai/message_builder.py +0 -0
  271. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/framework_utilities/utils.py +0 -0
  272. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/language_model/__init__.py +0 -0
  273. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/language_model/_responses_api_utils.py +0 -0
  274. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/language_model/constants.py +0 -0
  275. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/language_model/default_language_model.py +0 -0
  276. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/language_model/functions.py +0 -0
  277. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/language_model/infos.py +0 -0
  278. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/language_model/prompt.py +0 -0
  279. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/language_model/reference.py +0 -0
  280. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/language_model/service.py +0 -0
  281. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/language_model/stream_transform.py +0 -0
  282. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/language_model/utils.py +0 -0
  283. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/monitoring/__init__.py +0 -0
  284. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/monitoring/middleware.py +0 -0
  285. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/monitoring/registry.py +0 -0
  286. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/protocols/support.py +0 -0
  287. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/services/__init__.py +0 -0
  288. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/services/factory.py +0 -0
  289. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/services/knowledge_base.py +0 -0
  290. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/short_term_memory/__init__.py +0 -0
  291. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/short_term_memory/constants.py +0 -0
  292. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/short_term_memory/functions.py +0 -0
  293. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/short_term_memory/schemas.py +0 -0
  294. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/short_term_memory/service.py +0 -0
  295. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/smart_rules/__init__.py +0 -0
  296. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/unique_toolkit/smart_rules/compile.py +0 -0
  297. {unique_toolkit-1.69.2 → unique_toolkit-1.69.4}/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.2
3
+ Version: 1.69.4
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.2"
3
+ version = "1.69.4"
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",
@@ -237,8 +237,8 @@ if __name__ == "__main__":
237
237
  class ToolDescription(BaseModel, Generic[TModel]):
238
238
  name: str = Field(
239
239
  ...,
240
- pattern=r"^[a-zA-Z1-9_-]+$",
241
- description="Name must adhere to the pattern ^[a-zA-Z1-9_-]+$",
240
+ pattern=r"^[a-zA-Z0-9_-]+$",
241
+ description="Name must adhere to the pattern ^[a-zA-Z0-9_-]+$",
242
242
  )
243
243
  description: str = Field(
244
244
  ...,
@@ -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(
@@ -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,14 @@ class LanguageModelMessage(BaseModel):
252
262
 
253
263
  return format_message(self.role.capitalize(), message=message, num_tabs=1)
254
264
 
265
+ @abstractmethod
266
+ def to_openai(
267
+ self, mode: Literal["completions", "responses"] = "completions"
268
+ ) -> ChatCompletionMessageParam | ResponseInputItemParam:
269
+ raise NotImplementedError(
270
+ "Subclasses must implement this. This class should not be used directly"
271
+ )
272
+
255
273
 
256
274
  class LanguageModelSystemMessage(LanguageModelMessage):
257
275
  role: LanguageModelMessageRole = LanguageModelMessageRole.SYSTEM
@@ -268,6 +286,7 @@ class LanguageModelSystemMessage(LanguageModelMessage):
268
286
  @overload
269
287
  def to_openai(self, mode: Literal["responses"]) -> EasyInputMessageParam: ...
270
288
 
289
+ @override
271
290
  def to_openai(
272
291
  self, mode: Literal["completions", "responses"] = "completions"
273
292
  ) -> ChatCompletionSystemMessageParam | EasyInputMessageParam:
@@ -296,11 +315,12 @@ class LanguageModelUserMessage(LanguageModelMessage):
296
315
  ) -> ChatCompletionUserMessageParam: ...
297
316
 
298
317
  @overload
299
- def to_openai(self, mode: Literal["responses"]) -> EasyInputMessageParam: ...
318
+ def to_openai(self, mode: Literal["responses"]) -> ResponseInputItemParam: ...
300
319
 
320
+ @override
301
321
  def to_openai(
302
322
  self, mode: Literal["completions", "responses"] = "completions"
303
- ) -> ChatCompletionUserMessageParam | EasyInputMessageParam:
323
+ ) -> ChatCompletionUserMessageParam | ResponseInputItemParam:
304
324
  if self.content is None:
305
325
  content = ""
306
326
  else:
@@ -370,16 +390,12 @@ class LanguageModelAssistantMessage(LanguageModelMessage):
370
390
  ) -> ChatCompletionAssistantMessageParam: ...
371
391
 
372
392
  @overload
373
- def to_openai(
374
- self, mode: Literal["responses"]
375
- ) -> list[EasyInputMessageParam | ResponseFunctionToolCallParam]: ...
393
+ def to_openai(self, mode: Literal["responses"]) -> EasyInputMessageParam: ...
376
394
 
395
+ @override
377
396
  def to_openai(
378
397
  self, mode: Literal["completions", "responses"] = "completions"
379
- ) -> (
380
- ChatCompletionAssistantMessageParam
381
- | list[EasyInputMessageParam | ResponseFunctionToolCallParam]
382
- ):
398
+ ) -> ChatCompletionAssistantMessageParam | EasyInputMessageParam:
383
399
  content = self.content or ""
384
400
  if not isinstance(content, str):
385
401
  raise ValueError("Content must be a string")
@@ -437,6 +453,7 @@ class LanguageModelToolMessage(LanguageModelMessage):
437
453
  @overload
438
454
  def to_openai(self, mode: Literal["responses"]) -> FunctionCallOutput: ...
439
455
 
456
+ @override
440
457
  def to_openai(
441
458
  self, mode: Literal["completions", "responses"] = "completions"
442
459
  ) -> ChatCompletionToolMessageParam | FunctionCallOutput:
@@ -463,7 +480,7 @@ class LanguageModelToolMessage(LanguageModelMessage):
463
480
  # with the addition of the builder
464
481
 
465
482
  LanguageModelMessageOptions = (
466
- LanguageModelMessage
483
+ LanguageModelMessage # TODO: Ideally we remove this
467
484
  | LanguageModelToolMessage
468
485
  | LanguageModelAssistantMessage
469
486
  | LanguageModelSystemMessage
@@ -501,8 +518,7 @@ class LanguageModelMessages(RootModel):
501
518
  elif role == "tool":
502
519
  converted_messages.append(LanguageModelToolMessage(**item))
503
520
  else:
504
- # Fallback to base LanguageModelMessage
505
- converted_messages.append(LanguageModelMessage(**item))
521
+ raise ValueError(f"Unknown message role: {item.get('role')!r}")
506
522
  else:
507
523
  # If it's already a message object, keep it as is
508
524
  converted_messages.append(item)
@@ -525,6 +541,11 @@ class LanguageModelMessages(RootModel):
525
541
  builder.messages = self.root.copy() # Start with existing messages
526
542
  return builder
527
543
 
544
+ def to_openai(
545
+ self, mode: Literal["completions", "responses"] = "completions"
546
+ ) -> list[ChatCompletionMessageParam | ResponseInputItemParam]:
547
+ return [message.to_openai(mode=mode) for message in self.root]
548
+
528
549
 
529
550
  # This seems similar to
530
551
  # from openai.types.completion_choice import CompletionChoice
@@ -643,8 +664,8 @@ class LanguageModelToolParameters(BaseModel):
643
664
  class LanguageModelTool(BaseModel):
644
665
  name: str = Field(
645
666
  ...,
646
- pattern=r"^[a-zA-Z1-9_-]+$",
647
- description="Name must adhere to the pattern ^[a-zA-Z_-]+$",
667
+ pattern=r"^[a-zA-Z0-9_-]+$",
668
+ description="Name must adhere to the pattern ^[a-zA-Z0-9_-]+$",
648
669
  )
649
670
  description: str
650
671
  parameters: (
@@ -658,8 +679,8 @@ class LanguageModelTool(BaseModel):
658
679
  class LanguageModelToolDescription(BaseModel):
659
680
  name: str = Field(
660
681
  ...,
661
- pattern=r"^[a-zA-Z1-9_-]+$",
662
- description="Name must adhere to the pattern ^[a-zA-Z1-9_-]+$",
682
+ pattern=r"^[a-zA-Z0-9_-]+$",
683
+ description="Name must adhere to the pattern ^[a-zA-Z0-9_-]+$",
663
684
  )
664
685
  description: str = Field(
665
686
  ...,
@@ -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.