unique_toolkit 1.79.0__tar.gz → 1.80.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (328) hide show
  1. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/PKG-INFO +1 -1
  2. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/pyproject.toml +1 -1
  3. unique_toolkit-1.80.0/unique_toolkit/experimental/__init__.py +8 -0
  4. unique_toolkit-1.80.0/unique_toolkit/experimental/content_tree/__init__.py +58 -0
  5. unique_toolkit-1.80.0/unique_toolkit/experimental/content_tree/functions.py +248 -0
  6. unique_toolkit-1.80.0/unique_toolkit/experimental/content_tree/schemas.py +106 -0
  7. unique_toolkit-1.80.0/unique_toolkit/experimental/content_tree/service.py +411 -0
  8. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/services/knowledge_base.py +1 -3
  9. unique_toolkit-1.79.0/unique_toolkit/experimental/__init__.py +0 -28
  10. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/README.md +0 -0
  11. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/__init__.py +0 -0
  12. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/_common/__init__.py +0 -0
  13. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/_common/_base_service.py +0 -0
  14. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/_common/_time_utils.py +0 -0
  15. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/_common/api_calling/human_verification_manager.py +0 -0
  16. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/_common/base_model_type_attribute.py +0 -0
  17. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/_common/chunk_relevancy_sorter/config.py +0 -0
  18. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/_common/chunk_relevancy_sorter/exception.py +0 -0
  19. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/_common/chunk_relevancy_sorter/schemas.py +0 -0
  20. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/_common/chunk_relevancy_sorter/service.py +0 -0
  21. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/_common/chunk_relevancy_sorter/tests/test_service.py +0 -0
  22. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/_common/config_checker/README.md +0 -0
  23. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/_common/config_checker/__init__.py +0 -0
  24. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/_common/config_checker/__main__.py +0 -0
  25. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/_common/config_checker/cli.py +0 -0
  26. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/_common/config_checker/differ.py +0 -0
  27. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/_common/config_checker/exporter.py +0 -0
  28. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/_common/config_checker/models.py +0 -0
  29. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/_common/config_checker/registry.py +0 -0
  30. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/_common/config_checker/validator.py +0 -0
  31. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/_common/default_language_model.py +0 -0
  32. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/_common/docx_generator/__init__.py +0 -0
  33. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/_common/docx_generator/config.py +0 -0
  34. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/_common/docx_generator/pandoc_converter.py +0 -0
  35. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/_common/docx_generator/schemas.py +0 -0
  36. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/_common/docx_generator/service.py +0 -0
  37. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/_common/docx_generator/template/Doc Template.docx +0 -0
  38. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/_common/endpoint_builder.py +0 -0
  39. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/_common/endpoint_requestor.py +0 -0
  40. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/_common/event_bus.py +0 -0
  41. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/_common/exception.py +0 -0
  42. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/_common/execution.py +0 -0
  43. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/_common/experimental/endpoint_builder.py +0 -0
  44. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/_common/experimental/endpoint_requestor.py +0 -0
  45. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/_common/experimental/write_up_agent/README.md +0 -0
  46. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/_common/experimental/write_up_agent/__init__.py +0 -0
  47. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/_common/experimental/write_up_agent/agent.py +0 -0
  48. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/_common/experimental/write_up_agent/config.py +0 -0
  49. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/_common/experimental/write_up_agent/examples/data.csv +0 -0
  50. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/_common/experimental/write_up_agent/examples/example_usage.py +0 -0
  51. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/_common/experimental/write_up_agent/schemas.py +0 -0
  52. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/_common/experimental/write_up_agent/services/__init__.py +0 -0
  53. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/_common/experimental/write_up_agent/services/dataframe_handler/__init__.py +0 -0
  54. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/_common/experimental/write_up_agent/services/dataframe_handler/exceptions.py +0 -0
  55. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/_common/experimental/write_up_agent/services/dataframe_handler/service.py +0 -0
  56. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/_common/experimental/write_up_agent/services/dataframe_handler/utils.py +0 -0
  57. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/__init__.py +0 -0
  58. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/config.py +0 -0
  59. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/exceptions.py +0 -0
  60. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/prompts/config.py +0 -0
  61. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/prompts/system_prompt.j2 +0 -0
  62. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/prompts/user_prompt.j2 +0 -0
  63. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/service.py +0 -0
  64. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/_common/experimental/write_up_agent/services/template_handler/__init__.py +0 -0
  65. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/_common/experimental/write_up_agent/services/template_handler/default_template.j2 +0 -0
  66. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/_common/experimental/write_up_agent/services/template_handler/exceptions.py +0 -0
  67. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/_common/experimental/write_up_agent/services/template_handler/service.py +0 -0
  68. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/_common/experimental/write_up_agent/services/template_handler/utils.py +0 -0
  69. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/_common/experimental/write_up_agent/utils.py +0 -0
  70. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/_common/feature_flags/schema.py +0 -0
  71. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/_common/pydantic/rjsf_tags.py +0 -0
  72. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/_common/pydantic_helpers.py +0 -0
  73. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/_common/referencing.py +0 -0
  74. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/_common/string_utilities.py +0 -0
  75. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/_common/tests/test_referencing.py +0 -0
  76. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/_common/tests/test_string_utilities.py +0 -0
  77. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/_common/token/__init__.py +0 -0
  78. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/_common/token/image_token_counting.py +0 -0
  79. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/_common/token/token_counting.py +0 -0
  80. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/_common/token/tokenizers/deepseek/tokenizer.json +0 -0
  81. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/_common/token/tokenizers/qwen/tokenizer.json +0 -0
  82. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/_common/utils/__init__.py +0 -0
  83. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/_common/utils/files.py +0 -0
  84. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/_common/utils/image/encode.py +0 -0
  85. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/_common/utils/jinja/helpers.py +0 -0
  86. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/_common/utils/jinja/render.py +0 -0
  87. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/_common/utils/jinja/schema.py +0 -0
  88. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/_common/utils/jinja/utils.py +0 -0
  89. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/_common/utils/structured_output/__init__.py +0 -0
  90. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/_common/utils/structured_output/schema.py +0 -0
  91. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/_common/utils/write_configuration.py +0 -0
  92. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/_common/validate_required_values.py +0 -0
  93. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/_common/validators.py +0 -0
  94. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/agentic/__init__.py +0 -0
  95. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/agentic/debug_info_manager/debug_info_manager.py +0 -0
  96. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/agentic/debug_info_manager/test/test_debug_info_manager.py +0 -0
  97. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/agentic/evaluation/config.py +0 -0
  98. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/agentic/evaluation/context_relevancy/prompts/__init__.py +0 -0
  99. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/agentic/evaluation/context_relevancy/prompts/system_prompt.j2 +0 -0
  100. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/agentic/evaluation/context_relevancy/prompts/user_prompt.j2 +0 -0
  101. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/agentic/evaluation/context_relevancy/schema.py +0 -0
  102. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/agentic/evaluation/context_relevancy/service.py +0 -0
  103. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/agentic/evaluation/evaluation_manager.py +0 -0
  104. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/agentic/evaluation/exception.py +0 -0
  105. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/agentic/evaluation/hallucination/constants.py +0 -0
  106. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/agentic/evaluation/hallucination/hallucination_evaluation.py +0 -0
  107. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/agentic/evaluation/hallucination/prompts/__init__.py +0 -0
  108. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/agentic/evaluation/hallucination/prompts/system_prompt.j2 +0 -0
  109. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/agentic/evaluation/hallucination/prompts/user_prompt.j2 +0 -0
  110. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/agentic/evaluation/hallucination/service.py +0 -0
  111. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/agentic/evaluation/hallucination/utils.py +0 -0
  112. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/agentic/evaluation/output_parser.py +0 -0
  113. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/agentic/evaluation/schemas.py +0 -0
  114. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/agentic/evaluation/tests/fixtures.py +0 -0
  115. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/agentic/evaluation/tests/test_config.py +0 -0
  116. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/agentic/evaluation/tests/test_context_relevancy_service.py +0 -0
  117. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/agentic/evaluation/tests/test_hallucination_constants.py +0 -0
  118. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/agentic/evaluation/tests/test_hallucination_utils.py +0 -0
  119. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/agentic/evaluation/tests/test_output_parser.py +0 -0
  120. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/agentic/evaluation/tests/test_prompt_loaders.py +0 -0
  121. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/agentic/evaluation/utils.py +0 -0
  122. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/agentic/feature_flags/__init__.py +0 -0
  123. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/agentic/feature_flags/feature_flags.py +0 -0
  124. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/agentic/history_manager/history_construction_with_contents.py +0 -0
  125. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/agentic/history_manager/history_manager.py +0 -0
  126. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/agentic/history_manager/loop_token_reducer.py +0 -0
  127. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/agentic/history_manager/utils.py +0 -0
  128. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/agentic/loop_runner/__init__.py +0 -0
  129. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/agentic/loop_runner/_iteration_handler_utils.py +0 -0
  130. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/agentic/loop_runner/_responses_iteration_handler_utils.py +0 -0
  131. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/agentic/loop_runner/_responses_stream_handler_utils.py +0 -0
  132. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/agentic/loop_runner/_stream_handler_utils.py +0 -0
  133. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/agentic/loop_runner/base.py +0 -0
  134. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/agentic/loop_runner/middleware/__init__.py +0 -0
  135. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/agentic/loop_runner/middleware/planning/__init__.py +0 -0
  136. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/agentic/loop_runner/middleware/planning/planning.py +0 -0
  137. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/agentic/loop_runner/middleware/planning/schema.py +0 -0
  138. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/agentic/loop_runner/runners/__init__.py +0 -0
  139. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/agentic/loop_runner/runners/basic.py +0 -0
  140. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/agentic/loop_runner/runners/mistral/__init__.py +0 -0
  141. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/agentic/loop_runner/runners/mistral/mistral_runner.py +0 -0
  142. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/agentic/loop_runner/runners/qwen/__init__.py +0 -0
  143. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/agentic/loop_runner/runners/qwen/helpers.py +0 -0
  144. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/agentic/loop_runner/runners/qwen/qwen_runner.py +0 -0
  145. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/agentic/message_log_manager/__init__.py +0 -0
  146. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/agentic/message_log_manager/service.py +0 -0
  147. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/agentic/postprocessor/postprocessor_manager.py +0 -0
  148. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/agentic/reference_manager/reference_manager.py +0 -0
  149. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/agentic/responses_api/__init__.py +0 -0
  150. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/agentic/responses_api/postprocessors/code_display.py +0 -0
  151. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/agentic/responses_api/postprocessors/generated_files.py +0 -0
  152. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/agentic/responses_api/stream_handler.py +0 -0
  153. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/agentic/short_term_memory_manager/persistent_short_term_memory_manager.py +0 -0
  154. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/agentic/thinking_manager/thinking_manager.py +0 -0
  155. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/agentic/tools/__init__.py +0 -0
  156. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/agentic/tools/a2a/__init__.py +0 -0
  157. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/agentic/tools/a2a/config.py +0 -0
  158. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/agentic/tools/a2a/evaluation/__init__.py +0 -0
  159. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/agentic/tools/a2a/evaluation/_utils.py +0 -0
  160. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/agentic/tools/a2a/evaluation/config.py +0 -0
  161. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/agentic/tools/a2a/evaluation/evaluator.py +0 -0
  162. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/agentic/tools/a2a/evaluation/summarization_user_message.j2 +0 -0
  163. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/agentic/tools/a2a/manager.py +0 -0
  164. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/agentic/tools/a2a/postprocessing/__init__.py +0 -0
  165. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/agentic/tools/a2a/postprocessing/_display_utils.py +0 -0
  166. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/agentic/tools/a2a/postprocessing/_ref_utils.py +0 -0
  167. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/agentic/tools/a2a/postprocessing/config.py +0 -0
  168. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/agentic/tools/a2a/postprocessing/display.py +0 -0
  169. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/agentic/tools/a2a/postprocessing/references.py +0 -0
  170. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/agentic/tools/a2a/postprocessing/test/test_display.py +0 -0
  171. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/agentic/tools/a2a/postprocessing/test/test_display_utils.py +0 -0
  172. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/agentic/tools/a2a/postprocessing/test/test_ref_utils.py +0 -0
  173. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/agentic/tools/a2a/prompts.py +0 -0
  174. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/agentic/tools/a2a/response_watcher/__init__.py +0 -0
  175. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/agentic/tools/a2a/response_watcher/service.py +0 -0
  176. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/agentic/tools/a2a/tool/__init__.py +0 -0
  177. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/agentic/tools/a2a/tool/_memory.py +0 -0
  178. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/agentic/tools/a2a/tool/_schema.py +0 -0
  179. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/agentic/tools/a2a/tool/config.py +0 -0
  180. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/agentic/tools/a2a/tool/service.py +0 -0
  181. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/agentic/tools/a2a/tool/test/test_service_utils.py +0 -0
  182. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/agentic/tools/agent_chunks_hanlder.py +0 -0
  183. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/agentic/tools/config.py +0 -0
  184. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/agentic/tools/experimental/__init__.py +0 -0
  185. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/agentic/tools/experimental/open_file_tool/__init__.py +0 -0
  186. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/agentic/tools/experimental/open_file_tool/config.py +0 -0
  187. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/agentic/tools/experimental/open_file_tool/runtime.py +0 -0
  188. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/agentic/tools/experimental/open_file_tool/tool.py +0 -0
  189. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/agentic/tools/experimental/todo/__init__.py +0 -0
  190. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/agentic/tools/experimental/todo/config.py +0 -0
  191. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/agentic/tools/experimental/todo/prompts/__init__.py +0 -0
  192. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/agentic/tools/experimental/todo/prompts/execution_reminder.j2 +0 -0
  193. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/agentic/tools/experimental/todo/prompts/system_prompt.j2 +0 -0
  194. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/agentic/tools/experimental/todo/prompts/tool_description.j2 +0 -0
  195. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/agentic/tools/experimental/todo/prompts/verification_nudge.j2 +0 -0
  196. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/agentic/tools/experimental/todo/schemas.py +0 -0
  197. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/agentic/tools/experimental/todo/service.py +0 -0
  198. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/agentic/tools/factory.py +0 -0
  199. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/agentic/tools/mcp/__init__.py +0 -0
  200. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/agentic/tools/mcp/manager.py +0 -0
  201. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/agentic/tools/mcp/models.py +0 -0
  202. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/agentic/tools/mcp/tool_wrapper.py +0 -0
  203. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/agentic/tools/openai_builtin/__init__.py +0 -0
  204. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/agentic/tools/openai_builtin/base.py +0 -0
  205. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/__init__.py +0 -0
  206. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/config.py +0 -0
  207. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/postprocessors/__init__.py +0 -0
  208. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/postprocessors/code_display.py +0 -0
  209. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/postprocessors/generated_files.py +0 -0
  210. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/schemas.py +0 -0
  211. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/service.py +0 -0
  212. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/agentic/tools/openai_builtin/manager.py +0 -0
  213. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/agentic/tools/schemas.py +0 -0
  214. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/agentic/tools/test/test_mcp_manager.py +0 -0
  215. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/agentic/tools/test/test_tool_progress_reporter.py +0 -0
  216. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/agentic/tools/tool.py +0 -0
  217. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/agentic/tools/tool_manager.py +0 -0
  218. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/agentic/tools/tool_progress_reporter.py +0 -0
  219. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/agentic/tools/utils/__init__.py +0 -0
  220. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/agentic/tools/utils/source_handling/__init__.py +0 -0
  221. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/agentic/tools/utils/source_handling/schema.py +0 -0
  222. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/agentic/tools/utils/source_handling/source_formatting.py +0 -0
  223. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/agentic/tools/utils/source_handling/tests/test_source_formatting.py +0 -0
  224. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/agentic_table/__init__.py +0 -0
  225. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/agentic_table/schemas.py +0 -0
  226. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/agentic_table/service.py +0 -0
  227. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/app/__init__.py +0 -0
  228. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/app/chat_event_filter_options_settings.py +0 -0
  229. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/app/dev_util.py +0 -0
  230. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/app/fast_api_factory.py +0 -0
  231. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/app/feature_flags.py +0 -0
  232. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/app/find_env_file.py +0 -0
  233. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/app/init_logging.py +0 -0
  234. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/app/init_sdk.py +0 -0
  235. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/app/performance/async_tasks.py +0 -0
  236. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/app/performance/async_wrapper.py +0 -0
  237. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/app/schemas.py +0 -0
  238. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/app/unique_settings.py +0 -0
  239. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/app/verification.py +0 -0
  240. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/app/webhook.py +0 -0
  241. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/chat/__init__.py +0 -0
  242. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/chat/cancellation.py +0 -0
  243. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/chat/constants.py +0 -0
  244. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/chat/deprecated/service.py +0 -0
  245. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/chat/functions.py +0 -0
  246. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/chat/rendering.py +0 -0
  247. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/chat/responses_api.py +0 -0
  248. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/chat/schemas.py +0 -0
  249. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/chat/service.py +0 -0
  250. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/chat/state.py +0 -0
  251. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/chat/utils.py +0 -0
  252. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/content/__init__.py +0 -0
  253. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/content/constants.py +0 -0
  254. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/content/functions.py +0 -0
  255. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/content/schemas.py +0 -0
  256. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/content/service.py +0 -0
  257. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/content/smart_rules.py +0 -0
  258. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/content/utils.py +0 -0
  259. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/data_extraction/README.md +0 -0
  260. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/data_extraction/__init__.py +0 -0
  261. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/data_extraction/augmented/__init__.py +0 -0
  262. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/data_extraction/augmented/service.py +0 -0
  263. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/data_extraction/base.py +0 -0
  264. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/data_extraction/basic/__init__.py +0 -0
  265. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/data_extraction/basic/config.py +0 -0
  266. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/data_extraction/basic/prompt.py +0 -0
  267. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/data_extraction/basic/service.py +0 -0
  268. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/elicitation/__init__.py +0 -0
  269. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/elicitation/constants.py +0 -0
  270. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/elicitation/exceptions.py +0 -0
  271. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/elicitation/functions.py +0 -0
  272. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/elicitation/schemas.py +0 -0
  273. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/elicitation/service.py +0 -0
  274. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/embedding/__init__.py +0 -0
  275. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/embedding/constants.py +0 -0
  276. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/embedding/functions.py +0 -0
  277. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/embedding/schemas.py +0 -0
  278. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/embedding/service.py +0 -0
  279. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/embedding/utils.py +0 -0
  280. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/experimental/content_folder/__init__.py +0 -0
  281. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/experimental/content_folder/functions.py +0 -0
  282. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/experimental/content_folder/schemas.py +0 -0
  283. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/experimental/content_folder/service.py +0 -0
  284. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/experimental/identity/__init__.py +0 -0
  285. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/experimental/identity/functions.py +0 -0
  286. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/experimental/identity/schemas.py +0 -0
  287. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/experimental/identity/service.py +0 -0
  288. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/experimental/scheduled_task/__init__.py +0 -0
  289. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/experimental/scheduled_task/cron.py +0 -0
  290. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/experimental/scheduled_task/functions.py +0 -0
  291. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/experimental/scheduled_task/schemas.py +0 -0
  292. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/experimental/scheduled_task/service.py +0 -0
  293. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/framework_utilities/__init__.py +0 -0
  294. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/framework_utilities/langchain/__init__.py +0 -0
  295. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/framework_utilities/langchain/client.py +0 -0
  296. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/framework_utilities/langchain/history.py +0 -0
  297. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/framework_utilities/openai/__init__.py +0 -0
  298. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/framework_utilities/openai/client.py +0 -0
  299. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/framework_utilities/openai/message_builder.py +0 -0
  300. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/framework_utilities/utils.py +0 -0
  301. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/language_model/__init__.py +0 -0
  302. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/language_model/_responses_api_utils.py +0 -0
  303. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/language_model/builder.py +0 -0
  304. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/language_model/constants.py +0 -0
  305. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/language_model/default_language_model.py +0 -0
  306. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/language_model/functions.py +0 -0
  307. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/language_model/infos.py +0 -0
  308. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/language_model/prompt.py +0 -0
  309. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/language_model/reference.py +0 -0
  310. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/language_model/schemas.py +0 -0
  311. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/language_model/service.py +0 -0
  312. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/language_model/stream_transform.py +0 -0
  313. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/language_model/utils.py +0 -0
  314. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/monitoring/__init__.py +0 -0
  315. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/monitoring/middleware.py +0 -0
  316. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/monitoring/registry.py +0 -0
  317. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/protocols/support.py +0 -0
  318. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/services/__init__.py +0 -0
  319. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/services/chat_service.py +0 -0
  320. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/services/factory.py +0 -0
  321. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/short_term_memory/__init__.py +0 -0
  322. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/short_term_memory/constants.py +0 -0
  323. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/short_term_memory/functions.py +0 -0
  324. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/short_term_memory/schemas.py +0 -0
  325. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/short_term_memory/service.py +0 -0
  326. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/smart_rules/__init__.py +0 -0
  327. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/smart_rules/compile.py +0 -0
  328. {unique_toolkit-1.79.0 → unique_toolkit-1.80.0}/unique_toolkit/test_utilities/events.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: unique-toolkit
3
- Version: 1.79.0
3
+ Version: 1.80.0
4
4
  Summary:
5
5
  Author: Cedric Klinkert, Martin Fadler, Sadique Sheik, Fabian Schläpfer, Pascal Hauri, Ejiroghene Oki-Peter, Rami Azouz, Ricardo Visini, Sanzio Monti
6
6
  Author-email: Cedric Klinkert <cedric.klinkert@unique.ch>, Martin Fadler <martin.fadler@unique.ch>, Sadique Sheik <sadique@unique.ch>, Fabian Schläpfer <fabian@unique.ch>, Pascal Hauri <pascal@unique.ch>, Ejiroghene Oki-Peter <oki-peter.ejiroghene@unique.ai>, Rami Azouz <rami.ext@unique.ch>, Ricardo Visini <ricardo.visini@unique.ch>, Sanzio Monti <sanzio.monti@unique.ai>
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "unique_toolkit"
3
- version = "1.79.0"
3
+ version = "1.80.0"
4
4
  description = ""
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.12"
@@ -0,0 +1,8 @@
1
+ """Experimental toolkit services.
2
+
3
+ Modules in :mod:`unique_toolkit.experimental` expose APIs that are still being
4
+ iterated on and may change without notice between minor releases. They are
5
+ intentionally not wired into :class:`~unique_toolkit.services.factory.UniqueServiceFactory`
6
+ and are not re-exported from top-level packages: import them explicitly from
7
+ their experimental subpackage.
8
+ """
@@ -0,0 +1,58 @@
1
+ """Experimental content-tree subpackage: visible-content listing, tree rendering, and fuzzy search.
2
+
3
+ !!! warning "Experimental"
4
+ This subpackage lives under :mod:`unique_toolkit.experimental` and is not
5
+ wired into :class:`~unique_toolkit.services.factory.UniqueServiceFactory`.
6
+ Its API may change between minor releases.
7
+
8
+ Typical usage::
9
+
10
+ from unique_toolkit.experimental.content_tree import ContentTree
11
+
12
+ tree = ContentTree.from_settings()
13
+ print(await tree.render_visible_tree_async(max_depth=2))
14
+ hits = await tree.search_visible_files_fuzzy_async("annual_report")
15
+
16
+ The subpackage is split into three modules to mirror the rest of the
17
+ ``content`` domain:
18
+
19
+ - :mod:`unique_toolkit.experimental.content_tree.schemas` — data classes
20
+ (:class:`PathTrieNode`, :class:`FuzzyMatch`, :data:`MatchTarget`).
21
+ - :mod:`unique_toolkit.experimental.content_tree.functions` — pure helpers
22
+ for listing, scope-id resolution, trie construction, and ``tree(1)``-style
23
+ formatting.
24
+ - :mod:`unique_toolkit.experimental.content_tree.service` —
25
+ :class:`ContentTree`, the orchestrating service with per-instance caching.
26
+ """
27
+
28
+ from unique_toolkit.experimental.content_tree.functions import (
29
+ build_trie_from_resolved_paths,
30
+ extract_scope_ids_from_content_infos,
31
+ format_path_trie,
32
+ get_all_content_infos_async,
33
+ resolve_visible_file_paths_core,
34
+ translate_scope_id_async,
35
+ translate_scope_ids_async,
36
+ translate_scope_ids_batch,
37
+ )
38
+ from unique_toolkit.experimental.content_tree.schemas import (
39
+ FuzzyMatch,
40
+ MatchTarget,
41
+ PathTrieNode,
42
+ )
43
+ from unique_toolkit.experimental.content_tree.service import ContentTree
44
+
45
+ __all__ = [
46
+ "ContentTree",
47
+ "FuzzyMatch",
48
+ "MatchTarget",
49
+ "PathTrieNode",
50
+ "build_trie_from_resolved_paths",
51
+ "extract_scope_ids_from_content_infos",
52
+ "format_path_trie",
53
+ "get_all_content_infos_async",
54
+ "resolve_visible_file_paths_core",
55
+ "translate_scope_id_async",
56
+ "translate_scope_ids_async",
57
+ "translate_scope_ids_batch",
58
+ ]
@@ -0,0 +1,248 @@
1
+ """Pure functions behind the content-tree view.
2
+
3
+ These helpers are decoupled from :class:`~unique_toolkit.experimental.content_tree.service.ContentTree`
4
+ so that other callers (scripts, notebooks, ad-hoc tooling) can compose the same
5
+ listing + scope-id-resolution logic without constructing a service instance.
6
+
7
+ - :func:`get_all_content_infos_async` — paginated fetch of every visible
8
+ :class:`~unique_toolkit.content.schemas.ContentInfo`.
9
+ - :func:`translate_scope_id_async` / :func:`translate_scope_ids_async` —
10
+ resolve scope ids (folder ids) to their display names, concurrently.
11
+ - :func:`extract_scope_ids_from_content_infos` — collect every scope id
12
+ referenced by ``folderIdPath`` metadata.
13
+ - :func:`resolve_visible_file_paths_core` — the composition of the above,
14
+ returning ``(content_info, [folder, ..., filename])`` rows.
15
+ - :func:`format_path_trie` — render a :class:`PathTrieNode` as a ``tree(1)``-style
16
+ multi-line string.
17
+ """
18
+
19
+ from __future__ import annotations
20
+
21
+ import asyncio
22
+ import json
23
+ import logging
24
+ from collections.abc import Awaitable, Callable
25
+ from typing import Any
26
+
27
+ from unique_toolkit.content.functions import (
28
+ get_content_info_async,
29
+ get_folder_info_async,
30
+ )
31
+ from unique_toolkit.content.schemas import ContentInfo, PaginatedContentInfos
32
+ from unique_toolkit.experimental.content_tree.schemas import PathTrieNode
33
+
34
+ _LOGGER = logging.getLogger(f"toolkit.experimental.content_tree.{__name__}")
35
+
36
+
37
+ def serialize_filter(metadata_filter: dict[str, Any] | None) -> str:
38
+ """Serialize a filter dict to a stable, hashable cache key."""
39
+ try:
40
+ return json.dumps(metadata_filter, sort_keys=True, default=str)
41
+ except TypeError:
42
+ return repr(metadata_filter)
43
+
44
+
45
+ async def get_all_content_infos_async(
46
+ user_id: str,
47
+ company_id: str,
48
+ *,
49
+ metadata_filter: dict[str, Any] | None = None,
50
+ step_size: int = 100,
51
+ max_concurrent_requests: int = 10,
52
+ ) -> list[ContentInfo]:
53
+ """Fetch every :class:`ContentInfo` visible to the caller using parallel pagination.
54
+
55
+ The API caps each response at 100 items, so this helper first asks for the
56
+ total count and then fetches all pages concurrently, bounded by
57
+ ``max_concurrent_requests`` to avoid rate-limiting or connection exhaustion.
58
+
59
+ Args:
60
+ user_id: Confidential user id of the caller.
61
+ company_id: Confidential company id of the caller.
62
+ metadata_filter: Optional UniqueQL metadata filter.
63
+ step_size: Page size (max 100).
64
+ max_concurrent_requests: Upper bound on concurrent page fetches.
65
+
66
+ Returns:
67
+ All content infos visible to ``user_id`` in ``company_id``.
68
+ """
69
+ first_page = await get_content_info_async(
70
+ user_id=user_id,
71
+ company_id=company_id,
72
+ metadata_filter=metadata_filter,
73
+ take=1,
74
+ )
75
+ total_count = first_page.total_count
76
+
77
+ semaphore = asyncio.Semaphore(max_concurrent_requests)
78
+
79
+ async def _fetch_page(skip: int) -> PaginatedContentInfos:
80
+ async with semaphore:
81
+ return await get_content_info_async(
82
+ user_id=user_id,
83
+ company_id=company_id,
84
+ metadata_filter=metadata_filter,
85
+ skip=skip,
86
+ take=step_size,
87
+ )
88
+
89
+ results: list[PaginatedContentInfos | BaseException] = await asyncio.gather(
90
+ *[_fetch_page(i) for i in range(0, total_count, step_size)],
91
+ return_exceptions=True,
92
+ )
93
+
94
+ content_infos: list[ContentInfo] = []
95
+ for result in results:
96
+ if isinstance(result, BaseException):
97
+ _LOGGER.error("Error fetching paginated content infos", exc_info=result)
98
+ continue
99
+ content_infos.extend(result.content_infos)
100
+ return content_infos
101
+
102
+
103
+ async def translate_scope_id_async(
104
+ user_id: str,
105
+ company_id: str,
106
+ scope_id: str,
107
+ ) -> str | None:
108
+ """Resolve a single ``scope_id`` to a folder name.
109
+
110
+ Returns ``None`` (and logs a warning) if the folder lookup fails, so callers
111
+ can batch-resolve ids without a single missing folder aborting the whole
112
+ operation.
113
+ """
114
+ try:
115
+ folder_info = await get_folder_info_async(
116
+ user_id=user_id,
117
+ company_id=company_id,
118
+ scope_id=scope_id,
119
+ )
120
+ return folder_info.name
121
+ except Exception as e:
122
+ _LOGGER.warning(f"Could not resolve folder for scope_id {scope_id}", exc_info=e)
123
+ return None
124
+
125
+
126
+ async def translate_scope_ids_batch(
127
+ translate_one: Callable[[str], Awaitable[str | None]],
128
+ scope_ids: set[str],
129
+ *,
130
+ max_concurrent_requests: int = 25,
131
+ ) -> dict[str, str]:
132
+ """Resolve many scope ids concurrently, honoring ``max_concurrent_requests``."""
133
+ scope_id_list = list(scope_ids)
134
+ semaphore = asyncio.Semaphore(max_concurrent_requests)
135
+
136
+ async def _resolve(sid: str) -> str | None:
137
+ async with semaphore:
138
+ return await translate_one(sid)
139
+
140
+ results = await asyncio.gather(*[_resolve(sid) for sid in scope_id_list])
141
+ return {sid: name for sid, name in zip(scope_id_list, results) if name is not None}
142
+
143
+
144
+ async def translate_scope_ids_async(
145
+ user_id: str,
146
+ company_id: str,
147
+ scope_ids: set[str],
148
+ *,
149
+ max_concurrent_requests: int = 25,
150
+ ) -> dict[str, str]:
151
+ """Batch version of :func:`translate_scope_id_async` bound to one caller."""
152
+
153
+ async def _translate_one(sid: str) -> str | None:
154
+ return await translate_scope_id_async(
155
+ user_id=user_id, company_id=company_id, scope_id=sid
156
+ )
157
+
158
+ return await translate_scope_ids_batch(
159
+ _translate_one,
160
+ scope_ids,
161
+ max_concurrent_requests=max_concurrent_requests,
162
+ )
163
+
164
+
165
+ def extract_scope_ids_from_content_infos(content_infos: list[ContentInfo]) -> set[str]:
166
+ """Collect unique scope ids from ``folderIdPath`` metadata (same rules as legacy API)."""
167
+ scope_ids: set[str] = set()
168
+ for content_info in content_infos:
169
+ if (
170
+ content_info.metadata
171
+ and (folder_id_path := content_info.metadata.get("folderIdPath"))
172
+ is not None
173
+ and isinstance(folder_id_path, str)
174
+ ):
175
+ scope_ids.update(
176
+ sid
177
+ for sid in folder_id_path.replace("uniquepathid://", "").split("/")
178
+ if sid
179
+ )
180
+ return scope_ids
181
+
182
+
183
+ async def resolve_visible_file_paths_core(
184
+ user_id: str,
185
+ company_id: str,
186
+ *,
187
+ metadata_filter: dict[str, Any] | None,
188
+ max_concurrent_scope_lookups: int = 25,
189
+ ) -> list[tuple[ContentInfo, list[str]]]:
190
+ """List visible content and map each ``folderIdPath`` to folder-name segments."""
191
+ content_infos = await get_all_content_infos_async(
192
+ user_id=user_id,
193
+ company_id=company_id,
194
+ metadata_filter=metadata_filter,
195
+ )
196
+ scope_ids = extract_scope_ids_from_content_infos(content_infos)
197
+ scope_id_to_folder_name = await translate_scope_ids_async(
198
+ user_id=user_id,
199
+ company_id=company_id,
200
+ scope_ids=scope_ids,
201
+ max_concurrent_requests=max_concurrent_scope_lookups,
202
+ )
203
+
204
+ resolved: list[tuple[ContentInfo, list[str]]] = []
205
+ for content_info in content_infos:
206
+ if (
207
+ content_info.metadata
208
+ and (folder_id_path := content_info.metadata.get("folderIdPath"))
209
+ is not None
210
+ and isinstance(folder_id_path, str)
211
+ ):
212
+ file_path = [
213
+ scope_id_to_folder_name.get(sid, sid)
214
+ for sid in folder_id_path.replace("uniquepathid://", "").split("/")
215
+ if sid
216
+ ]
217
+ else:
218
+ file_path = ["_no_folder_path"]
219
+
220
+ file_path.append(content_info.key)
221
+ resolved.append((content_info, file_path))
222
+ return resolved
223
+
224
+
225
+ def build_trie_from_resolved_paths(
226
+ resolved: list[tuple[ContentInfo, list[str]]],
227
+ ) -> PathTrieNode:
228
+ """Insert each ``(content, [dir, ..., filename])`` pair into a trie."""
229
+ root = PathTrieNode()
230
+ for _content_info, segments in resolved:
231
+ if not segments:
232
+ continue
233
+ *dirs, filename = segments
234
+ node = root
235
+ for part in dirs:
236
+ if part not in node.children:
237
+ node.children[part] = PathTrieNode()
238
+ node = node.children[part]
239
+ node.files.append(filename)
240
+ for node in root.walk_trie_nodes():
241
+ node.files = sorted(set(node.files))
242
+ return root
243
+
244
+
245
+ def format_path_trie(root: PathTrieNode, *, max_depth: int | None = None) -> str:
246
+ """Render *root* with UTF-8 box drawing (like ``tree``)."""
247
+ lines = root.format_trie_walk(prefix="", depth=0, max_depth=max_depth, lines=None)
248
+ return "\n".join(lines)
@@ -0,0 +1,106 @@
1
+ """Data classes for the content-tree subpackage.
2
+
3
+ These types describe the *shape* of a content-tree snapshot:
4
+
5
+ - :class:`PathTrieNode` is the in-memory directory structure built from resolved
6
+ file paths.
7
+ - :class:`FuzzyMatch` is the result record returned by
8
+ :meth:`unique_toolkit.experimental.content_tree.service.ContentTree.search_visible_files_fuzzy_async`.
9
+
10
+ Kept free of behaviour so they can be imported and introspected without pulling
11
+ in the SDK/HTTP stack used by :mod:`unique_toolkit.experimental.content_tree.functions`.
12
+ """
13
+
14
+ from __future__ import annotations
15
+
16
+ from dataclasses import dataclass, field
17
+ from typing import Literal
18
+
19
+ from unique_toolkit.content.schemas import ContentInfo
20
+
21
+ MatchTarget = Literal["key", "path", "both"]
22
+ """Which representation of a file a fuzzy query is scored against.
23
+
24
+ - ``"key"`` — only the basename (``content_info.key``)
25
+ - ``"path"`` — only the slash-joined resolved folder path ``"a/b/c.pdf"``
26
+ - ``"both"`` — score against both and keep the higher of the two
27
+ """
28
+
29
+
30
+ @dataclass
31
+ class PathTrieNode:
32
+ """Nested directory structure; ``files`` are basenames in this directory."""
33
+
34
+ children: dict[str, PathTrieNode] = field(default_factory=dict)
35
+ files: list[str] = field(default_factory=list)
36
+
37
+ def walk_trie_nodes(self) -> list[PathTrieNode]:
38
+ out: list[PathTrieNode] = [self]
39
+ for child in self.children.values():
40
+ out.extend(child.walk_trie_nodes())
41
+ return out
42
+
43
+ def format_trie_walk(
44
+ self,
45
+ *,
46
+ prefix: str,
47
+ depth: int,
48
+ max_depth: int | None,
49
+ lines: list[str] | None = None,
50
+ ) -> list[str]:
51
+ if lines is None:
52
+ lines = ["."]
53
+
54
+ if max_depth is not None and depth >= max_depth:
55
+ descendants = self.walk_trie_nodes()
56
+ # Exclude ``self`` from the directory count; the summary describes
57
+ # what is hidden *below* the cutoff, not the truncated node itself.
58
+ hidden_dirs = len(descendants) - 1
59
+ hidden_files = sum(len(node.files) for node in descendants)
60
+ if hidden_dirs or hidden_files:
61
+ lines.append(
62
+ f"{prefix}… ({hidden_dirs} dirs, {hidden_files} files below)"
63
+ )
64
+ return lines
65
+
66
+ dir_items = sorted(self.children.items())
67
+ file_items = [(name, None) for name in sorted(self.files)]
68
+ entries: list[tuple[str, PathTrieNode | None, bool]] = [
69
+ (name, child, True) for name, child in dir_items
70
+ ]
71
+ entries.extend((name, None, False) for name, _ in file_items)
72
+
73
+ for i, (name, child, is_dir) in enumerate(entries):
74
+ is_last = i == len(entries) - 1
75
+ branch = "└── " if is_last else "├── "
76
+ extension = " " if is_last else "│ "
77
+ lines.append(f"{prefix}{branch}{name}")
78
+ if is_dir and child is not None:
79
+ child.format_trie_walk(
80
+ prefix=prefix + extension,
81
+ depth=depth + 1,
82
+ max_depth=max_depth,
83
+ lines=lines,
84
+ )
85
+
86
+ return lines
87
+
88
+
89
+ @dataclass(frozen=True)
90
+ class FuzzyMatch:
91
+ """A single hit from :meth:`ContentTree.search_visible_files_fuzzy_async`.
92
+
93
+ Attributes:
94
+ content_info: The matched file.
95
+ score: Similarity score in ``[0.0, 1.0]``; ``1.0`` is an exact match.
96
+ path_segments: Full resolved path as segments ``[folder, ..., filename]``.
97
+ Callers that want a displayable string can ``"/".join(...)`` it.
98
+ matched_on: Whether the winning score came from matching the basename
99
+ (``"key"``) or the joined folder path (``"path"``). Always set, even
100
+ when ``match_on="both"`` was requested.
101
+ """
102
+
103
+ content_info: ContentInfo
104
+ score: float
105
+ path_segments: list[str]
106
+ matched_on: Literal["key", "path"]