unique_toolkit 1.42.7__tar.gz → 1.42.9__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 (225) hide show
  1. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/CHANGELOG.md +7 -0
  2. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/PKG-INFO +8 -1
  3. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/pyproject.toml +1 -1
  4. unique_toolkit-1.42.9/unique_toolkit/agentic/feature_flags/__init__.py +6 -0
  5. unique_toolkit-1.42.9/unique_toolkit/agentic/feature_flags/feature_flags.py +32 -0
  6. unique_toolkit-1.42.9/unique_toolkit/agentic/message_log_manager/service.py +169 -0
  7. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/agentic_table/schemas.py +7 -0
  8. unique_toolkit-1.42.7/unique_toolkit/agentic/message_log_manager/service.py +0 -93
  9. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/LICENSE +0 -0
  10. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/README.md +0 -0
  11. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/__init__.py +0 -0
  12. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/_common/_base_service.py +0 -0
  13. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/_common/_time_utils.py +0 -0
  14. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/_common/api_calling/human_verification_manager.py +0 -0
  15. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/_common/base_model_type_attribute.py +0 -0
  16. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/_common/chunk_relevancy_sorter/config.py +0 -0
  17. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/_common/chunk_relevancy_sorter/exception.py +0 -0
  18. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/_common/chunk_relevancy_sorter/schemas.py +0 -0
  19. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/_common/chunk_relevancy_sorter/service.py +0 -0
  20. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/_common/chunk_relevancy_sorter/tests/test_service.py +0 -0
  21. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/_common/default_language_model.py +0 -0
  22. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/_common/docx_generator/__init__.py +0 -0
  23. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/_common/docx_generator/config.py +0 -0
  24. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/_common/docx_generator/schemas.py +0 -0
  25. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/_common/docx_generator/service.py +0 -0
  26. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/_common/docx_generator/template/Doc Template.docx +0 -0
  27. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/_common/endpoint_builder.py +0 -0
  28. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/_common/endpoint_requestor.py +0 -0
  29. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/_common/exception.py +0 -0
  30. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/_common/execution.py +0 -0
  31. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/_common/experimental/endpoint_builder.py +0 -0
  32. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/_common/experimental/endpoint_requestor.py +0 -0
  33. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/_common/feature_flags/schema.py +0 -0
  34. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/_common/pydantic/rjsf_tags.py +0 -0
  35. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/_common/pydantic_helpers.py +0 -0
  36. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/_common/referencing.py +0 -0
  37. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/_common/string_utilities.py +0 -0
  38. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/_common/tests/test_referencing.py +0 -0
  39. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/_common/tests/test_string_utilities.py +0 -0
  40. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/_common/token/image_token_counting.py +0 -0
  41. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/_common/token/token_counting.py +0 -0
  42. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/_common/utils/__init__.py +0 -0
  43. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/_common/utils/files.py +0 -0
  44. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/_common/utils/image/encode.py +0 -0
  45. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/_common/utils/jinja/helpers.py +0 -0
  46. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/_common/utils/jinja/render.py +0 -0
  47. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/_common/utils/jinja/schema.py +0 -0
  48. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/_common/utils/jinja/utils.py +0 -0
  49. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/_common/utils/structured_output/__init__.py +0 -0
  50. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/_common/utils/structured_output/schema.py +0 -0
  51. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/_common/utils/write_configuration.py +0 -0
  52. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/_common/validate_required_values.py +0 -0
  53. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/_common/validators.py +0 -0
  54. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/agentic/__init__.py +0 -0
  55. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/agentic/debug_info_manager/debug_info_manager.py +0 -0
  56. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/agentic/debug_info_manager/test/test_debug_info_manager.py +0 -0
  57. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/agentic/evaluation/config.py +0 -0
  58. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/agentic/evaluation/context_relevancy/prompts.py +0 -0
  59. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/agentic/evaluation/context_relevancy/schema.py +0 -0
  60. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/agentic/evaluation/context_relevancy/service.py +0 -0
  61. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/agentic/evaluation/evaluation_manager.py +0 -0
  62. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/agentic/evaluation/exception.py +0 -0
  63. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/agentic/evaluation/hallucination/constants.py +0 -0
  64. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/agentic/evaluation/hallucination/hallucination_evaluation.py +0 -0
  65. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/agentic/evaluation/hallucination/prompts.py +0 -0
  66. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/agentic/evaluation/hallucination/service.py +0 -0
  67. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/agentic/evaluation/hallucination/utils.py +0 -0
  68. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/agentic/evaluation/output_parser.py +0 -0
  69. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/agentic/evaluation/schemas.py +0 -0
  70. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/agentic/evaluation/tests/test_context_relevancy_service.py +0 -0
  71. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/agentic/evaluation/tests/test_output_parser.py +0 -0
  72. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/agentic/history_manager/history_construction_with_contents.py +0 -0
  73. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/agentic/history_manager/history_manager.py +0 -0
  74. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/agentic/history_manager/loop_token_reducer.py +0 -0
  75. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/agentic/history_manager/utils.py +0 -0
  76. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/agentic/loop_runner/__init__.py +0 -0
  77. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/agentic/loop_runner/_iteration_handler_utils.py +0 -0
  78. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/agentic/loop_runner/_stream_handler_utils.py +0 -0
  79. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/agentic/loop_runner/base.py +0 -0
  80. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/agentic/loop_runner/middleware/__init__.py +0 -0
  81. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/agentic/loop_runner/middleware/planning/__init__.py +0 -0
  82. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/agentic/loop_runner/middleware/planning/planning.py +0 -0
  83. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/agentic/loop_runner/middleware/planning/schema.py +0 -0
  84. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/agentic/loop_runner/runners/__init__.py +0 -0
  85. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/agentic/loop_runner/runners/basic.py +0 -0
  86. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/agentic/loop_runner/runners/qwen/__init__.py +0 -0
  87. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/agentic/loop_runner/runners/qwen/helpers.py +0 -0
  88. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/agentic/loop_runner/runners/qwen/qwen_runner.py +0 -0
  89. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/agentic/message_log_manager/__init__.py +0 -0
  90. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/agentic/postprocessor/postprocessor_manager.py +0 -0
  91. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/agentic/reference_manager/reference_manager.py +0 -0
  92. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/agentic/responses_api/__init__.py +0 -0
  93. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/agentic/responses_api/postprocessors/code_display.py +0 -0
  94. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/agentic/responses_api/postprocessors/generated_files.py +0 -0
  95. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/agentic/responses_api/stream_handler.py +0 -0
  96. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/agentic/short_term_memory_manager/persistent_short_term_memory_manager.py +0 -0
  97. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/agentic/thinking_manager/thinking_manager.py +0 -0
  98. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/agentic/tools/__init__.py +0 -0
  99. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/agentic/tools/a2a/__init__.py +0 -0
  100. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/agentic/tools/a2a/config.py +0 -0
  101. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/agentic/tools/a2a/evaluation/__init__.py +0 -0
  102. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/agentic/tools/a2a/evaluation/_utils.py +0 -0
  103. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/agentic/tools/a2a/evaluation/config.py +0 -0
  104. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/agentic/tools/a2a/evaluation/evaluator.py +0 -0
  105. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/agentic/tools/a2a/evaluation/summarization_user_message.j2 +0 -0
  106. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/agentic/tools/a2a/manager.py +0 -0
  107. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/agentic/tools/a2a/postprocessing/__init__.py +0 -0
  108. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/agentic/tools/a2a/postprocessing/_display_utils.py +0 -0
  109. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/agentic/tools/a2a/postprocessing/_ref_utils.py +0 -0
  110. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/agentic/tools/a2a/postprocessing/config.py +0 -0
  111. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/agentic/tools/a2a/postprocessing/display.py +0 -0
  112. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/agentic/tools/a2a/postprocessing/references.py +0 -0
  113. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/agentic/tools/a2a/postprocessing/test/test_display.py +0 -0
  114. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/agentic/tools/a2a/postprocessing/test/test_display_utils.py +0 -0
  115. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/agentic/tools/a2a/postprocessing/test/test_ref_utils.py +0 -0
  116. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/agentic/tools/a2a/prompts.py +0 -0
  117. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/agentic/tools/a2a/response_watcher/__init__.py +0 -0
  118. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/agentic/tools/a2a/response_watcher/service.py +0 -0
  119. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/agentic/tools/a2a/tool/__init__.py +0 -0
  120. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/agentic/tools/a2a/tool/_memory.py +0 -0
  121. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/agentic/tools/a2a/tool/_schema.py +0 -0
  122. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/agentic/tools/a2a/tool/config.py +0 -0
  123. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/agentic/tools/a2a/tool/service.py +0 -0
  124. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/agentic/tools/a2a/tool/test/test_service_utils.py +0 -0
  125. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/agentic/tools/agent_chunks_hanlder.py +0 -0
  126. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/agentic/tools/config.py +0 -0
  127. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/agentic/tools/factory.py +0 -0
  128. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/agentic/tools/mcp/__init__.py +0 -0
  129. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/agentic/tools/mcp/manager.py +0 -0
  130. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/agentic/tools/mcp/models.py +0 -0
  131. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/agentic/tools/mcp/tool_wrapper.py +0 -0
  132. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/agentic/tools/openai_builtin/__init__.py +0 -0
  133. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/agentic/tools/openai_builtin/base.py +0 -0
  134. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/__init__.py +0 -0
  135. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/config.py +0 -0
  136. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/service.py +0 -0
  137. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/agentic/tools/openai_builtin/manager.py +0 -0
  138. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/agentic/tools/schemas.py +0 -0
  139. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/agentic/tools/test/test_mcp_manager.py +0 -0
  140. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/agentic/tools/test/test_tool_progress_reporter.py +0 -0
  141. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/agentic/tools/tool.py +0 -0
  142. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/agentic/tools/tool_manager.py +0 -0
  143. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/agentic/tools/tool_progress_reporter.py +0 -0
  144. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/agentic/tools/utils/__init__.py +0 -0
  145. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/agentic/tools/utils/source_handling/__init__.py +0 -0
  146. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/agentic/tools/utils/source_handling/schema.py +0 -0
  147. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/agentic/tools/utils/source_handling/source_formatting.py +0 -0
  148. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/agentic/tools/utils/source_handling/tests/test_source_formatting.py +0 -0
  149. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/agentic_table/__init__.py +0 -0
  150. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/agentic_table/service.py +0 -0
  151. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/app/__init__.py +0 -0
  152. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/app/dev_util.py +0 -0
  153. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/app/fast_api_factory.py +0 -0
  154. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/app/init_logging.py +0 -0
  155. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/app/init_sdk.py +0 -0
  156. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/app/performance/async_tasks.py +0 -0
  157. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/app/performance/async_wrapper.py +0 -0
  158. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/app/schemas.py +0 -0
  159. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/app/unique_settings.py +0 -0
  160. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/app/verification.py +0 -0
  161. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/app/webhook.py +0 -0
  162. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/chat/__init__.py +0 -0
  163. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/chat/constants.py +0 -0
  164. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/chat/deprecated/service.py +0 -0
  165. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/chat/functions.py +0 -0
  166. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/chat/rendering.py +0 -0
  167. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/chat/responses_api.py +0 -0
  168. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/chat/schemas.py +0 -0
  169. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/chat/service.py +0 -0
  170. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/chat/state.py +0 -0
  171. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/chat/utils.py +0 -0
  172. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/content/__init__.py +0 -0
  173. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/content/constants.py +0 -0
  174. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/content/functions.py +0 -0
  175. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/content/schemas.py +0 -0
  176. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/content/service.py +0 -0
  177. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/content/smart_rules.py +0 -0
  178. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/content/utils.py +0 -0
  179. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/data_extraction/README.md +0 -0
  180. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/data_extraction/__init__.py +0 -0
  181. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/data_extraction/augmented/__init__.py +0 -0
  182. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/data_extraction/augmented/service.py +0 -0
  183. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/data_extraction/base.py +0 -0
  184. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/data_extraction/basic/__init__.py +0 -0
  185. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/data_extraction/basic/config.py +0 -0
  186. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/data_extraction/basic/prompt.py +0 -0
  187. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/data_extraction/basic/service.py +0 -0
  188. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/embedding/__init__.py +0 -0
  189. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/embedding/constants.py +0 -0
  190. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/embedding/functions.py +0 -0
  191. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/embedding/schemas.py +0 -0
  192. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/embedding/service.py +0 -0
  193. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/embedding/utils.py +0 -0
  194. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/framework_utilities/__init__.py +0 -0
  195. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/framework_utilities/langchain/__init__.py +0 -0
  196. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/framework_utilities/langchain/client.py +0 -0
  197. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/framework_utilities/langchain/history.py +0 -0
  198. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/framework_utilities/openai/__init__.py +0 -0
  199. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/framework_utilities/openai/client.py +0 -0
  200. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/framework_utilities/openai/message_builder.py +0 -0
  201. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/framework_utilities/utils.py +0 -0
  202. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/language_model/__init__.py +0 -0
  203. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/language_model/_responses_api_utils.py +0 -0
  204. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/language_model/builder.py +0 -0
  205. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/language_model/constants.py +0 -0
  206. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/language_model/default_language_model.py +0 -0
  207. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/language_model/functions.py +0 -0
  208. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/language_model/infos.py +0 -0
  209. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/language_model/prompt.py +0 -0
  210. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/language_model/reference.py +0 -0
  211. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/language_model/schemas.py +0 -0
  212. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/language_model/service.py +0 -0
  213. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/language_model/utils.py +0 -0
  214. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/protocols/support.py +0 -0
  215. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/services/__init__.py +0 -0
  216. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/services/chat_service.py +0 -0
  217. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/services/knowledge_base.py +0 -0
  218. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/short_term_memory/__init__.py +0 -0
  219. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/short_term_memory/constants.py +0 -0
  220. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/short_term_memory/functions.py +0 -0
  221. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/short_term_memory/schemas.py +0 -0
  222. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/short_term_memory/service.py +0 -0
  223. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/smart_rules/__init__.py +0 -0
  224. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/smart_rules/compile.py +0 -0
  225. {unique_toolkit-1.42.7 → unique_toolkit-1.42.9}/unique_toolkit/test_utilities/events.py +0 -0
@@ -5,6 +5,13 @@ All notable changes to this project will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [1.42.9] - 2026-01-11
9
+ - Include feature flag to have message logs compatible with new ChatUI
10
+
11
+ ## [1.42.8] - 2026-01-08
12
+ - Add validator to `BaseMetadata` in case `additional_sheet_information` is empty
13
+ - Add more code snippets to create references and pull file metadata
14
+
8
15
  ## [1.42.7] - 2026-01-08
9
16
  - Add aliases for endpoint secret env var.
10
17
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: unique_toolkit
3
- Version: 1.42.7
3
+ Version: 1.42.9
4
4
  Summary:
5
5
  License: Proprietary
6
6
  Author: Cedric Klinkert
@@ -124,6 +124,13 @@ All notable changes to this project will be documented in this file.
124
124
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
125
125
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
126
126
 
127
+ ## [1.42.9] - 2026-01-11
128
+ - Include feature flag to have message logs compatible with new ChatUI
129
+
130
+ ## [1.42.8] - 2026-01-08
131
+ - Add validator to `BaseMetadata` in case `additional_sheet_information` is empty
132
+ - Add more code snippets to create references and pull file metadata
133
+
127
134
  ## [1.42.7] - 2026-01-08
128
135
  - Add aliases for endpoint secret env var.
129
136
 
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "unique_toolkit"
3
- version = "1.42.7"
3
+ version = "1.42.9"
4
4
  description = ""
5
5
  authors = [
6
6
  "Cedric Klinkert <cedric.klinkert@unique.ch>",
@@ -0,0 +1,6 @@
1
+ from unique_toolkit.agentic.feature_flags.feature_flags import (
2
+ FeatureFlags,
3
+ feature_flags,
4
+ )
5
+
6
+ __all__ = ["FeatureFlags", "feature_flags"]
@@ -0,0 +1,32 @@
1
+ from pydantic import Field
2
+ from pydantic_settings import BaseSettings, SettingsConfigDict
3
+
4
+
5
+ class FeatureFlags(BaseSettings):
6
+ """Feature flags loaded from environment variables.
7
+
8
+ Environment variables are automatically loaded based on field names.
9
+ For example, `feature_flag_enable_new_answers_ui_un_14411` will be loaded from
10
+ `FEATURE_FLAG_ENABLE_NEW_ANSWERS_UI_UN_14411`.
11
+ """
12
+
13
+ feature_flag_enable_new_answers_ui_un_14411: str = Field(
14
+ default="",
15
+ description="Enable new answers UI (UN-14411). Can be 'true' or comma-separated company IDs.",
16
+ )
17
+
18
+ model_config = SettingsConfigDict(
19
+ extra="ignore",
20
+ case_sensitive=False,
21
+ )
22
+
23
+ def is_new_answers_ui_enabled(self, company_id: str | None = None) -> bool:
24
+ """Check if new answers UI is enabled for the given company."""
25
+ value = self.feature_flag_enable_new_answers_ui_un_14411
26
+ return value.lower() == "true" or bool(
27
+ company_id and company_id in [id.strip() for id in value.split(",")]
28
+ )
29
+
30
+
31
+ # Initialize once at module load - import this where needed
32
+ feature_flags = FeatureFlags()
@@ -0,0 +1,169 @@
1
+ """
2
+ Logger Service for Unique Agentic tools.
3
+
4
+ Target of the method is to extend the step tracking on all levels of the tool.
5
+ """
6
+
7
+ from collections import defaultdict
8
+ from logging import getLogger
9
+
10
+ from unique_toolkit.chat.schemas import (
11
+ MessageLog,
12
+ MessageLogDetails,
13
+ MessageLogStatus,
14
+ MessageLogUncitedReferences,
15
+ )
16
+ from unique_toolkit.chat.service import ChatService
17
+ from unique_toolkit.content.schemas import ContentReference
18
+
19
+ _LOGGER = getLogger(__name__)
20
+
21
+ # Per-request counters for message log ordering - keyed by message_id
22
+ # This is a mandatory global variable since we have in the system a bug which makes it impossible to use it as a proper class variable.
23
+ _request_counters = defaultdict(int)
24
+
25
+
26
+ class MessageStepLogger:
27
+ """
28
+ Logger class for tracking message steps in agentic tools.
29
+
30
+ This class provides utilities for creating message log entries with proper
31
+ ordering, references, and details.
32
+ """
33
+
34
+ def __init__(self, chat_service: ChatService) -> None:
35
+ """
36
+ Initialize the MessageStepLogger.
37
+
38
+ Args:
39
+ chat_service: ChatService instance for logging
40
+ """
41
+ self._chat_service: ChatService = chat_service
42
+
43
+ def _get_next_message_order(self, *, message_id: str) -> int:
44
+ """
45
+ Get the next message log order number for a specific request.
46
+
47
+ Each message_id (request) gets its own counter: 1, 2, 3, 4, ...
48
+ This ensures proper ordering within each request while avoiding
49
+ race conditions between concurrent requests.
50
+
51
+ Args:
52
+ message_id: The message ID to get the next order for
53
+
54
+ Returns:
55
+ Next order number for this specific request
56
+ """
57
+
58
+ _request_counters[message_id] += 1
59
+ return _request_counters[message_id]
60
+
61
+ def create_message_log_entry(
62
+ self,
63
+ *,
64
+ text: str,
65
+ status: MessageLogStatus = MessageLogStatus.COMPLETED,
66
+ details: MessageLogDetails | None = None,
67
+ references: list[ContentReference] = [],
68
+ ) -> MessageLog | None:
69
+ """
70
+ Create a full message log entry with question, hits, and references.
71
+ The created message log entry is returned. If the message log entry is not created, None is returned.
72
+ """
73
+ if not self._chat_service._assistant_message_id:
74
+ _LOGGER.warning(
75
+ "Assistant message id is not set. Skipping message log entry creation."
76
+ )
77
+ return
78
+ return self._chat_service.create_message_log(
79
+ message_id=self._chat_service._assistant_message_id,
80
+ text=text,
81
+ status=status,
82
+ order=self._get_next_message_order(
83
+ message_id=self._chat_service._assistant_message_id
84
+ ),
85
+ details=details or MessageLogDetails(data=[]),
86
+ uncited_references=MessageLogUncitedReferences(data=references),
87
+ references=[],
88
+ )
89
+
90
+ def update_message_log_entry(
91
+ self,
92
+ *,
93
+ message_log: MessageLog,
94
+ text: str | None = None,
95
+ status: MessageLogStatus,
96
+ details: MessageLogDetails | None = None,
97
+ references: list[ContentReference] = [],
98
+ ) -> MessageLog:
99
+ """
100
+ Update a message log entry with a new status.
101
+ The updated message log entry is returned. If the message log entry is not updated, None is returned.
102
+ """
103
+ if message_log.message_log_id is None:
104
+ _LOGGER.warning(
105
+ "Message log id is not set. Skipping message log entry update."
106
+ )
107
+ return message_log
108
+ return self._chat_service.update_message_log(
109
+ message_log_id=message_log.message_log_id,
110
+ order=message_log.order,
111
+ text=text,
112
+ status=status,
113
+ details=details or MessageLogDetails(data=[]),
114
+ uncited_references=MessageLogUncitedReferences(data=references),
115
+ references=[],
116
+ )
117
+
118
+ def create_or_update_message_log(
119
+ self,
120
+ *,
121
+ active_message_log: MessageLog | None,
122
+ header: str,
123
+ progress_message: str | None = None,
124
+ status: MessageLogStatus = MessageLogStatus.RUNNING,
125
+ details: MessageLogDetails | None = None,
126
+ references: list[ContentReference] | None = [],
127
+ ) -> MessageLog | None:
128
+ """
129
+ Create a new message log entry or update an existing one.
130
+
131
+ This is a convenience method that handles the common pattern of:
132
+ - Creating a new message log if active_message_log is None
133
+ - Updating the existing message log otherwise
134
+
135
+ Args:
136
+ active_message_log: The current active message log, or None if none exists
137
+ header: The header to show in bold (e.g., "Internal Search", "Web Search")
138
+ progress_message: Optional progress message to append after the display name
139
+ status: The status of the message log
140
+ details: Optional message log details
141
+ references: Optional list of content references
142
+
143
+ Returns:
144
+ The created or updated MessageLog, or None if the operation failed
145
+ """
146
+ text = (
147
+ f"**{header}**\n{progress_message}"
148
+ if progress_message is not None
149
+ else f"**{header}**"
150
+ )
151
+
152
+ if references is None:
153
+ references = []
154
+
155
+ if active_message_log is None:
156
+ return self.create_message_log_entry(
157
+ text=text,
158
+ details=details,
159
+ references=references,
160
+ status=status,
161
+ )
162
+ else:
163
+ return self.update_message_log_entry(
164
+ message_log=active_message_log,
165
+ text=text,
166
+ status=status,
167
+ details=details,
168
+ references=references,
169
+ )
@@ -53,6 +53,13 @@ class BaseMetadata(BaseModel):
53
53
  default_factory=dict, description="Additional information for the sheet"
54
54
  )
55
55
 
56
+ @field_validator("additional_sheet_information", mode="before")
57
+ @classmethod
58
+ def normalize_additional_sheet_information(cls, v):
59
+ if v is None:
60
+ return {}
61
+ return v
62
+
56
63
 
57
64
  class RowMetadataEntry(BaseModel):
58
65
  model_config = get_configuration_dict()
@@ -1,93 +0,0 @@
1
- """
2
- Logger Service for Unique Agentic tools.
3
-
4
- Target of the method is to extend the step tracking on all levels of the tool.
5
- """
6
-
7
- from collections import defaultdict
8
- from logging import getLogger
9
-
10
- from unique_toolkit.chat.schemas import (
11
- MessageLogDetails,
12
- MessageLogStatus,
13
- MessageLogUncitedReferences,
14
- )
15
- from unique_toolkit.chat.service import ChatService
16
- from unique_toolkit.content.schemas import ContentReference
17
-
18
- _LOGGER = getLogger(__name__)
19
-
20
- # Per-request counters for message log ordering - keyed by message_id
21
- # This is a mandatory global variable since we have in the system a bug which makes it impossible to use it as a proper class variable.
22
- _request_counters = defaultdict(int)
23
-
24
-
25
- class MessageStepLogger:
26
- """
27
- Logger class for tracking message steps in agentic tools.
28
-
29
- This class provides utilities for creating message log entries with proper
30
- ordering, references, and details.
31
- """
32
-
33
- def __init__(self, chat_service: ChatService) -> None:
34
- """
35
- Initialize the MessageStepLogger.
36
-
37
- Args:
38
- chat_service: ChatService instance for logging
39
- """
40
- self._chat_service: ChatService = chat_service
41
-
42
- def _get_next_message_order(self, *, message_id: str) -> int:
43
- """
44
- Get the next message log order number for a specific request.
45
-
46
- Each message_id (request) gets its own counter: 1, 2, 3, 4, ...
47
- This ensures proper ordering within each request while avoiding
48
- race conditions between concurrent requests.
49
-
50
- Args:
51
- message_id: The message ID to get the next order for
52
-
53
- Returns:
54
- Next order number for this specific request
55
- """
56
-
57
- _request_counters[message_id] += 1
58
- return _request_counters[message_id]
59
-
60
- def create_message_log_entry(
61
- self,
62
- *,
63
- text: str,
64
- details: MessageLogDetails | None = None,
65
- references: list[ContentReference],
66
- ) -> None:
67
- """
68
- Create a full message log entry with question, hits, and references.
69
-
70
- Args:
71
- text: The prepared string for the message log entry
72
- details: Some formal details about the message log entry
73
- references: List of ContentReference objects to reference
74
- """
75
-
76
- # Creating a new message log entry with the found hits.
77
- if not self._chat_service._assistant_message_id:
78
- _LOGGER.warning(
79
- "Assistant message id is not set. Skipping message log entry creation."
80
- )
81
- return
82
-
83
- _ = self._chat_service.create_message_log(
84
- message_id=self._chat_service._assistant_message_id,
85
- text=text,
86
- status=MessageLogStatus.COMPLETED,
87
- order=self._get_next_message_order(
88
- message_id=self._chat_service._assistant_message_id
89
- ),
90
- details=details or MessageLogDetails(data=[]),
91
- uncited_references=MessageLogUncitedReferences(data=references),
92
- references=[],
93
- )
File without changes