unique_toolkit 1.78.0__tar.gz → 1.79.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 (323) hide show
  1. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/PKG-INFO +1 -1
  2. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/pyproject.toml +1 -1
  3. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/agentic/feature_flags/feature_flags.py +11 -0
  4. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/app/unique_settings.py +16 -0
  5. unique_toolkit-1.79.0/unique_toolkit/experimental/content_folder/__init__.py +67 -0
  6. unique_toolkit-1.79.0/unique_toolkit/experimental/content_folder/functions.py +519 -0
  7. unique_toolkit-1.79.0/unique_toolkit/experimental/content_folder/schemas.py +161 -0
  8. unique_toolkit-1.79.0/unique_toolkit/experimental/content_folder/service.py +646 -0
  9. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/services/factory.py +4 -1
  10. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/README.md +0 -0
  11. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/__init__.py +0 -0
  12. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/_common/__init__.py +0 -0
  13. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/_common/_base_service.py +0 -0
  14. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/_common/_time_utils.py +0 -0
  15. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/_common/api_calling/human_verification_manager.py +0 -0
  16. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/_common/base_model_type_attribute.py +0 -0
  17. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/_common/chunk_relevancy_sorter/config.py +0 -0
  18. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/_common/chunk_relevancy_sorter/exception.py +0 -0
  19. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/_common/chunk_relevancy_sorter/schemas.py +0 -0
  20. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/_common/chunk_relevancy_sorter/service.py +0 -0
  21. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/_common/chunk_relevancy_sorter/tests/test_service.py +0 -0
  22. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/_common/config_checker/README.md +0 -0
  23. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/_common/config_checker/__init__.py +0 -0
  24. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/_common/config_checker/__main__.py +0 -0
  25. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/_common/config_checker/cli.py +0 -0
  26. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/_common/config_checker/differ.py +0 -0
  27. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/_common/config_checker/exporter.py +0 -0
  28. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/_common/config_checker/models.py +0 -0
  29. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/_common/config_checker/registry.py +0 -0
  30. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/_common/config_checker/validator.py +0 -0
  31. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/_common/default_language_model.py +0 -0
  32. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/_common/docx_generator/__init__.py +0 -0
  33. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/_common/docx_generator/config.py +0 -0
  34. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/_common/docx_generator/pandoc_converter.py +0 -0
  35. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/_common/docx_generator/schemas.py +0 -0
  36. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/_common/docx_generator/service.py +0 -0
  37. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/_common/docx_generator/template/Doc Template.docx +0 -0
  38. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/_common/endpoint_builder.py +0 -0
  39. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/_common/endpoint_requestor.py +0 -0
  40. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/_common/event_bus.py +0 -0
  41. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/_common/exception.py +0 -0
  42. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/_common/execution.py +0 -0
  43. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/_common/experimental/endpoint_builder.py +0 -0
  44. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/_common/experimental/endpoint_requestor.py +0 -0
  45. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/_common/experimental/write_up_agent/README.md +0 -0
  46. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/_common/experimental/write_up_agent/__init__.py +0 -0
  47. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/_common/experimental/write_up_agent/agent.py +0 -0
  48. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/_common/experimental/write_up_agent/config.py +0 -0
  49. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/_common/experimental/write_up_agent/examples/data.csv +0 -0
  50. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/_common/experimental/write_up_agent/examples/example_usage.py +0 -0
  51. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/_common/experimental/write_up_agent/schemas.py +0 -0
  52. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/_common/experimental/write_up_agent/services/__init__.py +0 -0
  53. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/_common/experimental/write_up_agent/services/dataframe_handler/__init__.py +0 -0
  54. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/_common/experimental/write_up_agent/services/dataframe_handler/exceptions.py +0 -0
  55. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/_common/experimental/write_up_agent/services/dataframe_handler/service.py +0 -0
  56. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/_common/experimental/write_up_agent/services/dataframe_handler/utils.py +0 -0
  57. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/__init__.py +0 -0
  58. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/config.py +0 -0
  59. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/exceptions.py +0 -0
  60. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/prompts/config.py +0 -0
  61. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/prompts/system_prompt.j2 +0 -0
  62. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/prompts/user_prompt.j2 +0 -0
  63. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/service.py +0 -0
  64. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/_common/experimental/write_up_agent/services/template_handler/__init__.py +0 -0
  65. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/_common/experimental/write_up_agent/services/template_handler/default_template.j2 +0 -0
  66. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/_common/experimental/write_up_agent/services/template_handler/exceptions.py +0 -0
  67. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/_common/experimental/write_up_agent/services/template_handler/service.py +0 -0
  68. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/_common/experimental/write_up_agent/services/template_handler/utils.py +0 -0
  69. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/_common/experimental/write_up_agent/utils.py +0 -0
  70. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/_common/feature_flags/schema.py +0 -0
  71. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/_common/pydantic/rjsf_tags.py +0 -0
  72. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/_common/pydantic_helpers.py +0 -0
  73. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/_common/referencing.py +0 -0
  74. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/_common/string_utilities.py +0 -0
  75. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/_common/tests/test_referencing.py +0 -0
  76. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/_common/tests/test_string_utilities.py +0 -0
  77. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/_common/token/__init__.py +0 -0
  78. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/_common/token/image_token_counting.py +0 -0
  79. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/_common/token/token_counting.py +0 -0
  80. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/_common/token/tokenizers/deepseek/tokenizer.json +0 -0
  81. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/_common/token/tokenizers/qwen/tokenizer.json +0 -0
  82. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/_common/utils/__init__.py +0 -0
  83. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/_common/utils/files.py +0 -0
  84. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/_common/utils/image/encode.py +0 -0
  85. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/_common/utils/jinja/helpers.py +0 -0
  86. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/_common/utils/jinja/render.py +0 -0
  87. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/_common/utils/jinja/schema.py +0 -0
  88. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/_common/utils/jinja/utils.py +0 -0
  89. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/_common/utils/structured_output/__init__.py +0 -0
  90. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/_common/utils/structured_output/schema.py +0 -0
  91. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/_common/utils/write_configuration.py +0 -0
  92. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/_common/validate_required_values.py +0 -0
  93. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/_common/validators.py +0 -0
  94. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/agentic/__init__.py +0 -0
  95. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/agentic/debug_info_manager/debug_info_manager.py +0 -0
  96. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/agentic/debug_info_manager/test/test_debug_info_manager.py +0 -0
  97. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/agentic/evaluation/config.py +0 -0
  98. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/agentic/evaluation/context_relevancy/prompts/__init__.py +0 -0
  99. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/agentic/evaluation/context_relevancy/prompts/system_prompt.j2 +0 -0
  100. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/agentic/evaluation/context_relevancy/prompts/user_prompt.j2 +0 -0
  101. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/agentic/evaluation/context_relevancy/schema.py +0 -0
  102. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/agentic/evaluation/context_relevancy/service.py +0 -0
  103. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/agentic/evaluation/evaluation_manager.py +0 -0
  104. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/agentic/evaluation/exception.py +0 -0
  105. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/agentic/evaluation/hallucination/constants.py +0 -0
  106. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/agentic/evaluation/hallucination/hallucination_evaluation.py +0 -0
  107. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/agentic/evaluation/hallucination/prompts/__init__.py +0 -0
  108. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/agentic/evaluation/hallucination/prompts/system_prompt.j2 +0 -0
  109. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/agentic/evaluation/hallucination/prompts/user_prompt.j2 +0 -0
  110. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/agentic/evaluation/hallucination/service.py +0 -0
  111. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/agentic/evaluation/hallucination/utils.py +0 -0
  112. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/agentic/evaluation/output_parser.py +0 -0
  113. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/agentic/evaluation/schemas.py +0 -0
  114. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/agentic/evaluation/tests/fixtures.py +0 -0
  115. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/agentic/evaluation/tests/test_config.py +0 -0
  116. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/agentic/evaluation/tests/test_context_relevancy_service.py +0 -0
  117. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/agentic/evaluation/tests/test_hallucination_constants.py +0 -0
  118. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/agentic/evaluation/tests/test_hallucination_utils.py +0 -0
  119. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/agentic/evaluation/tests/test_output_parser.py +0 -0
  120. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/agentic/evaluation/tests/test_prompt_loaders.py +0 -0
  121. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/agentic/evaluation/utils.py +0 -0
  122. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/agentic/feature_flags/__init__.py +0 -0
  123. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/agentic/history_manager/history_construction_with_contents.py +0 -0
  124. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/agentic/history_manager/history_manager.py +0 -0
  125. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/agentic/history_manager/loop_token_reducer.py +0 -0
  126. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/agentic/history_manager/utils.py +0 -0
  127. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/agentic/loop_runner/__init__.py +0 -0
  128. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/agentic/loop_runner/_iteration_handler_utils.py +0 -0
  129. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/agentic/loop_runner/_responses_iteration_handler_utils.py +0 -0
  130. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/agentic/loop_runner/_responses_stream_handler_utils.py +0 -0
  131. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/agentic/loop_runner/_stream_handler_utils.py +0 -0
  132. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/agentic/loop_runner/base.py +0 -0
  133. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/agentic/loop_runner/middleware/__init__.py +0 -0
  134. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/agentic/loop_runner/middleware/planning/__init__.py +0 -0
  135. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/agentic/loop_runner/middleware/planning/planning.py +0 -0
  136. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/agentic/loop_runner/middleware/planning/schema.py +0 -0
  137. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/agentic/loop_runner/runners/__init__.py +0 -0
  138. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/agentic/loop_runner/runners/basic.py +0 -0
  139. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/agentic/loop_runner/runners/mistral/__init__.py +0 -0
  140. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/agentic/loop_runner/runners/mistral/mistral_runner.py +0 -0
  141. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/agentic/loop_runner/runners/qwen/__init__.py +0 -0
  142. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/agentic/loop_runner/runners/qwen/helpers.py +0 -0
  143. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/agentic/loop_runner/runners/qwen/qwen_runner.py +0 -0
  144. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/agentic/message_log_manager/__init__.py +0 -0
  145. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/agentic/message_log_manager/service.py +0 -0
  146. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/agentic/postprocessor/postprocessor_manager.py +0 -0
  147. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/agentic/reference_manager/reference_manager.py +0 -0
  148. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/agentic/responses_api/__init__.py +0 -0
  149. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/agentic/responses_api/postprocessors/code_display.py +0 -0
  150. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/agentic/responses_api/postprocessors/generated_files.py +0 -0
  151. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/agentic/responses_api/stream_handler.py +0 -0
  152. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/agentic/short_term_memory_manager/persistent_short_term_memory_manager.py +0 -0
  153. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/agentic/thinking_manager/thinking_manager.py +0 -0
  154. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/agentic/tools/__init__.py +0 -0
  155. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/agentic/tools/a2a/__init__.py +0 -0
  156. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/agentic/tools/a2a/config.py +0 -0
  157. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/agentic/tools/a2a/evaluation/__init__.py +0 -0
  158. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/agentic/tools/a2a/evaluation/_utils.py +0 -0
  159. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/agentic/tools/a2a/evaluation/config.py +0 -0
  160. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/agentic/tools/a2a/evaluation/evaluator.py +0 -0
  161. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/agentic/tools/a2a/evaluation/summarization_user_message.j2 +0 -0
  162. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/agentic/tools/a2a/manager.py +0 -0
  163. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/agentic/tools/a2a/postprocessing/__init__.py +0 -0
  164. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/agentic/tools/a2a/postprocessing/_display_utils.py +0 -0
  165. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/agentic/tools/a2a/postprocessing/_ref_utils.py +0 -0
  166. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/agentic/tools/a2a/postprocessing/config.py +0 -0
  167. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/agentic/tools/a2a/postprocessing/display.py +0 -0
  168. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/agentic/tools/a2a/postprocessing/references.py +0 -0
  169. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/agentic/tools/a2a/postprocessing/test/test_display.py +0 -0
  170. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/agentic/tools/a2a/postprocessing/test/test_display_utils.py +0 -0
  171. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/agentic/tools/a2a/postprocessing/test/test_ref_utils.py +0 -0
  172. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/agentic/tools/a2a/prompts.py +0 -0
  173. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/agentic/tools/a2a/response_watcher/__init__.py +0 -0
  174. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/agentic/tools/a2a/response_watcher/service.py +0 -0
  175. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/agentic/tools/a2a/tool/__init__.py +0 -0
  176. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/agentic/tools/a2a/tool/_memory.py +0 -0
  177. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/agentic/tools/a2a/tool/_schema.py +0 -0
  178. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/agentic/tools/a2a/tool/config.py +0 -0
  179. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/agentic/tools/a2a/tool/service.py +0 -0
  180. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/agentic/tools/a2a/tool/test/test_service_utils.py +0 -0
  181. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/agentic/tools/agent_chunks_hanlder.py +0 -0
  182. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/agentic/tools/config.py +0 -0
  183. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/agentic/tools/experimental/__init__.py +0 -0
  184. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/agentic/tools/experimental/open_file_tool/__init__.py +0 -0
  185. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/agentic/tools/experimental/open_file_tool/config.py +0 -0
  186. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/agentic/tools/experimental/open_file_tool/runtime.py +0 -0
  187. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/agentic/tools/experimental/open_file_tool/tool.py +0 -0
  188. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/agentic/tools/experimental/todo/__init__.py +0 -0
  189. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/agentic/tools/experimental/todo/config.py +0 -0
  190. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/agentic/tools/experimental/todo/prompts/__init__.py +0 -0
  191. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/agentic/tools/experimental/todo/prompts/execution_reminder.j2 +0 -0
  192. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/agentic/tools/experimental/todo/prompts/system_prompt.j2 +0 -0
  193. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/agentic/tools/experimental/todo/prompts/tool_description.j2 +0 -0
  194. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/agentic/tools/experimental/todo/prompts/verification_nudge.j2 +0 -0
  195. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/agentic/tools/experimental/todo/schemas.py +0 -0
  196. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/agentic/tools/experimental/todo/service.py +0 -0
  197. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/agentic/tools/factory.py +0 -0
  198. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/agentic/tools/mcp/__init__.py +0 -0
  199. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/agentic/tools/mcp/manager.py +0 -0
  200. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/agentic/tools/mcp/models.py +0 -0
  201. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/agentic/tools/mcp/tool_wrapper.py +0 -0
  202. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/agentic/tools/openai_builtin/__init__.py +0 -0
  203. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/agentic/tools/openai_builtin/base.py +0 -0
  204. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/__init__.py +0 -0
  205. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/config.py +0 -0
  206. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/postprocessors/__init__.py +0 -0
  207. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/postprocessors/code_display.py +0 -0
  208. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/postprocessors/generated_files.py +0 -0
  209. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/schemas.py +0 -0
  210. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/service.py +0 -0
  211. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/agentic/tools/openai_builtin/manager.py +0 -0
  212. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/agentic/tools/schemas.py +0 -0
  213. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/agentic/tools/test/test_mcp_manager.py +0 -0
  214. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/agentic/tools/test/test_tool_progress_reporter.py +0 -0
  215. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/agentic/tools/tool.py +0 -0
  216. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/agentic/tools/tool_manager.py +0 -0
  217. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/agentic/tools/tool_progress_reporter.py +0 -0
  218. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/agentic/tools/utils/__init__.py +0 -0
  219. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/agentic/tools/utils/source_handling/__init__.py +0 -0
  220. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/agentic/tools/utils/source_handling/schema.py +0 -0
  221. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/agentic/tools/utils/source_handling/source_formatting.py +0 -0
  222. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/agentic/tools/utils/source_handling/tests/test_source_formatting.py +0 -0
  223. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/agentic_table/__init__.py +0 -0
  224. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/agentic_table/schemas.py +0 -0
  225. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/agentic_table/service.py +0 -0
  226. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/app/__init__.py +0 -0
  227. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/app/chat_event_filter_options_settings.py +0 -0
  228. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/app/dev_util.py +0 -0
  229. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/app/fast_api_factory.py +0 -0
  230. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/app/feature_flags.py +0 -0
  231. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/app/find_env_file.py +0 -0
  232. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/app/init_logging.py +0 -0
  233. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/app/init_sdk.py +0 -0
  234. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/app/performance/async_tasks.py +0 -0
  235. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/app/performance/async_wrapper.py +0 -0
  236. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/app/schemas.py +0 -0
  237. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/app/verification.py +0 -0
  238. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/app/webhook.py +0 -0
  239. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/chat/__init__.py +0 -0
  240. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/chat/cancellation.py +0 -0
  241. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/chat/constants.py +0 -0
  242. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/chat/deprecated/service.py +0 -0
  243. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/chat/functions.py +0 -0
  244. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/chat/rendering.py +0 -0
  245. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/chat/responses_api.py +0 -0
  246. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/chat/schemas.py +0 -0
  247. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/chat/service.py +0 -0
  248. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/chat/state.py +0 -0
  249. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/chat/utils.py +0 -0
  250. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/content/__init__.py +0 -0
  251. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/content/constants.py +0 -0
  252. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/content/functions.py +0 -0
  253. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/content/schemas.py +0 -0
  254. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/content/service.py +0 -0
  255. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/content/smart_rules.py +0 -0
  256. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/content/utils.py +0 -0
  257. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/data_extraction/README.md +0 -0
  258. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/data_extraction/__init__.py +0 -0
  259. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/data_extraction/augmented/__init__.py +0 -0
  260. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/data_extraction/augmented/service.py +0 -0
  261. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/data_extraction/base.py +0 -0
  262. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/data_extraction/basic/__init__.py +0 -0
  263. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/data_extraction/basic/config.py +0 -0
  264. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/data_extraction/basic/prompt.py +0 -0
  265. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/data_extraction/basic/service.py +0 -0
  266. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/elicitation/__init__.py +0 -0
  267. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/elicitation/constants.py +0 -0
  268. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/elicitation/exceptions.py +0 -0
  269. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/elicitation/functions.py +0 -0
  270. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/elicitation/schemas.py +0 -0
  271. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/elicitation/service.py +0 -0
  272. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/embedding/__init__.py +0 -0
  273. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/embedding/constants.py +0 -0
  274. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/embedding/functions.py +0 -0
  275. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/embedding/schemas.py +0 -0
  276. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/embedding/service.py +0 -0
  277. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/embedding/utils.py +0 -0
  278. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/experimental/__init__.py +0 -0
  279. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/experimental/identity/__init__.py +0 -0
  280. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/experimental/identity/functions.py +0 -0
  281. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/experimental/identity/schemas.py +0 -0
  282. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/experimental/identity/service.py +0 -0
  283. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/experimental/scheduled_task/__init__.py +0 -0
  284. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/experimental/scheduled_task/cron.py +0 -0
  285. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/experimental/scheduled_task/functions.py +0 -0
  286. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/experimental/scheduled_task/schemas.py +0 -0
  287. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/experimental/scheduled_task/service.py +0 -0
  288. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/framework_utilities/__init__.py +0 -0
  289. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/framework_utilities/langchain/__init__.py +0 -0
  290. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/framework_utilities/langchain/client.py +0 -0
  291. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/framework_utilities/langchain/history.py +0 -0
  292. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/framework_utilities/openai/__init__.py +0 -0
  293. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/framework_utilities/openai/client.py +0 -0
  294. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/framework_utilities/openai/message_builder.py +0 -0
  295. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/framework_utilities/utils.py +0 -0
  296. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/language_model/__init__.py +0 -0
  297. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/language_model/_responses_api_utils.py +0 -0
  298. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/language_model/builder.py +0 -0
  299. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/language_model/constants.py +0 -0
  300. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/language_model/default_language_model.py +0 -0
  301. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/language_model/functions.py +0 -0
  302. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/language_model/infos.py +0 -0
  303. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/language_model/prompt.py +0 -0
  304. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/language_model/reference.py +0 -0
  305. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/language_model/schemas.py +0 -0
  306. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/language_model/service.py +0 -0
  307. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/language_model/stream_transform.py +0 -0
  308. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/language_model/utils.py +0 -0
  309. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/monitoring/__init__.py +0 -0
  310. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/monitoring/middleware.py +0 -0
  311. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/monitoring/registry.py +0 -0
  312. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/protocols/support.py +0 -0
  313. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/services/__init__.py +0 -0
  314. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/services/chat_service.py +0 -0
  315. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/services/knowledge_base.py +0 -0
  316. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/short_term_memory/__init__.py +0 -0
  317. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/short_term_memory/constants.py +0 -0
  318. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/short_term_memory/functions.py +0 -0
  319. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/short_term_memory/schemas.py +0 -0
  320. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/short_term_memory/service.py +0 -0
  321. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/smart_rules/__init__.py +0 -0
  322. {unique_toolkit-1.78.0 → unique_toolkit-1.79.0}/unique_toolkit/smart_rules/compile.py +0 -0
  323. {unique_toolkit-1.78.0 → unique_toolkit-1.79.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.78.0
3
+ Version: 1.79.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.78.0"
3
+ version = "1.79.0"
4
4
  description = ""
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.12"
@@ -91,6 +91,17 @@ class FeatureFlags(BaseSettings):
91
91
  description="Use selected_uploaded_files from event payload instead of querying uploaded files from the backend. Can be 'true' or comma-separated company IDs.",
92
92
  )
93
93
 
94
+ enable_mcp_metadata_fallback_un_19145: FeatureFlag = Field(
95
+ default=FeatureFlag(True),
96
+ description=(
97
+ "When namespaced MCP `_meta` keys (`unique.app/auth/user-id`, "
98
+ "`unique.app/chat/chat-id`, ...) are absent, fall back to the flat camelCase "
99
+ "keys (`userId`, `companyId`, `chatId`, `messageId`) still emitted "
100
+ "by pre-#22513 monorepo builds. Flip to `False` once the monorepo "
101
+ "rollout of namespaced keys is complete."
102
+ ),
103
+ )
104
+
94
105
  model_config = SettingsConfigDict(
95
106
  extra="ignore",
96
107
  env_prefix="FEATURE_FLAG_",
@@ -623,6 +623,22 @@ class UniqueSettings:
623
623
  env_file=self._env_file,
624
624
  )
625
625
 
626
+ def with_chat(self, chat: ChatContextProtocol | None) -> Self:
627
+ """Return a copy of the settings with the new chat context.
628
+
629
+ Passing ``None`` clears any existing chat context; this mirrors the
630
+ semantics of :meth:`with_auth` and is how MCP request handlers opt out
631
+ of chat scoping when the request does not carry chat identifiers.
632
+ """
633
+ return self.__class__(
634
+ auth=self._context.auth,
635
+ app=self.app,
636
+ api=self.api,
637
+ chat_event_filter_options=self.chat_event_filter_options,
638
+ chat=chat,
639
+ env_file=self._env_file,
640
+ )
641
+
626
642
  @property
627
643
  def api(self) -> UniqueApi:
628
644
  return self._env.api
@@ -0,0 +1,67 @@
1
+ """Folder (content-scope) management: :class:`ContentFolder`, schemas, and pure helpers.
2
+
3
+ A knowledge-base folder is a *content scope*; its primary key is ``scopeId`` in the HTTP
4
+ API. The toolkit uses **scope_id** for that value everywhere (same string as in responses).
5
+
6
+ **Creating folders** mirrors the backend in two ways:
7
+
8
+ - **Absolute paths** — full paths from the root, e.g. ``"/Legal/Contracts"`` (pass ``paths=`` as
9
+ ``str`` or ``list[str]``).
10
+ - **Under a parent** — ``parent_scope_id`` plus path **segments** (e.g. ``["2024", "Q1"]``),
11
+ not a second full path string.
12
+
13
+ By default, :class:`ContentFolder` grants the acting user READ+WRITE on each new folder
14
+ (``private_to_creator=True``) unless you inherit parent ACL or opt out—see service docs.
15
+ """
16
+
17
+ from __future__ import annotations
18
+
19
+ from unique_toolkit.experimental.content_folder.functions import (
20
+ create,
21
+ create_access,
22
+ create_access_async,
23
+ create_async,
24
+ creator_scope_access_grants,
25
+ delete,
26
+ delete_access,
27
+ delete_access_async,
28
+ delete_async,
29
+ read,
30
+ read_async,
31
+ )
32
+ from unique_toolkit.experimental.content_folder.schemas import (
33
+ AccessEntityType,
34
+ AccessType,
35
+ CreatedFolder,
36
+ DeleteFolderItem,
37
+ DeleteResult,
38
+ FolderChild,
39
+ FolderDetail,
40
+ FolderInfo,
41
+ ScopeAccess,
42
+ )
43
+ from unique_toolkit.experimental.content_folder.service import ContentFolder
44
+
45
+ __all__ = [
46
+ "AccessEntityType",
47
+ "AccessType",
48
+ "ContentFolder",
49
+ "CreatedFolder",
50
+ "DeleteFolderItem",
51
+ "DeleteResult",
52
+ "FolderChild",
53
+ "FolderDetail",
54
+ "FolderInfo",
55
+ "ScopeAccess",
56
+ "create",
57
+ "create_access",
58
+ "create_access_async",
59
+ "create_async",
60
+ "creator_scope_access_grants",
61
+ "delete",
62
+ "delete_access",
63
+ "delete_access_async",
64
+ "delete_async",
65
+ "read",
66
+ "read_async",
67
+ ]
@@ -0,0 +1,519 @@
1
+ """Low-level calls to ``unique_sdk.Folder``.
2
+
3
+ In the Unique API, a knowledge-base folder is a **content scope**; its primary key is
4
+ ``scopeId``. This module uses ``scope_id`` in Python signatures and passes it through
5
+ as ``scopeId`` to the SDK. ``parent_scope_id`` maps to ``parentScopeId`` when creating
6
+ under an existing folder.
7
+
8
+ Folder **creation** supports two shapes that match :class:`unique_sdk.Folder.CreateParams`:
9
+
10
+ 1. **Absolute paths** — full paths from the knowledge-base root, e.g. ``"/Reports/Q1"``.
11
+ Sent as ``paths`` in the API.
12
+ 2. **Under an existing parent** — the parent folder’s **scope id** plus path *segments*
13
+ to create under it, e.g. parent ``scope_abc`` and segments ``["2024", "Q1"]``. Sent as
14
+ ``parentScopeId`` + ``relativePaths`` in the API.
15
+
16
+ **Private to creator (toolkit default):** When ``private_to_creator`` is true (the default) and
17
+ ``inherit_access`` is false, after ``create_paths`` the toolkit grants the acting ``user_id``
18
+ READ and WRITE on **each** folder returned in ``createdFolders``. This makes the new chain
19
+ usable by the creator; it does **not** remove ACL entries the API may add for other principals—
20
+ for strict “only this user” guarantees, the backend would need to expose replace/clear ACL or
21
+ you must call :func:`delete_access` for unwanted grants when you know them.
22
+ """
23
+
24
+ from __future__ import annotations
25
+
26
+ import asyncio
27
+ from typing import cast
28
+
29
+ import unique_sdk
30
+
31
+ from unique_toolkit.experimental.content_folder.schemas import (
32
+ AccessEntityType,
33
+ AccessType,
34
+ CreatedFolder,
35
+ DeleteResult,
36
+ FolderDetail,
37
+ FolderInfo,
38
+ ScopeAccess,
39
+ )
40
+
41
+
42
+ def create(
43
+ user_id: str,
44
+ company_id: str,
45
+ *,
46
+ absolute_paths: list[str] | None = None,
47
+ parent_scope_id: str | None = None,
48
+ relative_path_segments: list[str] | None = None,
49
+ inherit_access: bool = False,
50
+ private_to_creator: bool = True,
51
+ ) -> list[CreatedFolder]:
52
+ """Create folders using exactly one of the two API modes (see module docstring).
53
+
54
+ Args:
55
+ user_id: Acting user (SDK requirement).
56
+ company_id: Owning company (SDK requirement).
57
+ absolute_paths: Full paths from root; mutually exclusive with parent mode.
58
+ parent_scope_id: Scope id of the parent folder; use with ``relative_path_segments``.
59
+ relative_path_segments: Path segments under that parent (not full paths).
60
+ inherit_access: When true, new folders copy access rules from the parent.
61
+ private_to_creator: When true (default) and ``inherit_access`` is false, grant the
62
+ acting user READ+WRITE on every created folder. Ignored when ``inherit_access`` is true.
63
+
64
+ Raises:
65
+ ValueError: If neither mode is specified correctly or both modes are mixed.
66
+ """
67
+ params = _build_create_params(
68
+ absolute_paths=absolute_paths,
69
+ parent_scope_id=parent_scope_id,
70
+ relative_path_segments=relative_path_segments,
71
+ inherit_access=inherit_access,
72
+ )
73
+
74
+ result = unique_sdk.Folder.create_paths(
75
+ user_id=user_id,
76
+ company_id=company_id,
77
+ **params,
78
+ )
79
+ created = [
80
+ CreatedFolder.model_validate(f, by_alias=True, by_name=True)
81
+ for f in result["createdFolders"]
82
+ ]
83
+ if private_to_creator and not inherit_access and created:
84
+ _grant_creator_access_on_created_folders(
85
+ user_id=user_id,
86
+ company_id=company_id,
87
+ created=created,
88
+ )
89
+ return created
90
+
91
+
92
+ async def create_async(
93
+ user_id: str,
94
+ company_id: str,
95
+ *,
96
+ absolute_paths: list[str] | None = None,
97
+ parent_scope_id: str | None = None,
98
+ relative_path_segments: list[str] | None = None,
99
+ inherit_access: bool = False,
100
+ private_to_creator: bool = True,
101
+ ) -> list[CreatedFolder]:
102
+ """Async variant of :func:`create`."""
103
+ params = _build_create_params(
104
+ absolute_paths=absolute_paths,
105
+ parent_scope_id=parent_scope_id,
106
+ relative_path_segments=relative_path_segments,
107
+ inherit_access=inherit_access,
108
+ )
109
+
110
+ result = await unique_sdk.Folder.create_paths_async(
111
+ user_id=user_id,
112
+ company_id=company_id,
113
+ **params,
114
+ )
115
+ created = [
116
+ CreatedFolder.model_validate(f, by_alias=True, by_name=True)
117
+ for f in result["createdFolders"]
118
+ ]
119
+ if private_to_creator and not inherit_access and created:
120
+ await _grant_creator_access_on_created_folders_async(
121
+ user_id=user_id,
122
+ company_id=company_id,
123
+ created=created,
124
+ )
125
+ return created
126
+
127
+
128
+ def _build_create_params(
129
+ *,
130
+ absolute_paths: list[str] | None,
131
+ parent_scope_id: str | None,
132
+ relative_path_segments: list[str] | None,
133
+ inherit_access: bool,
134
+ ) -> unique_sdk.Folder.CreateParams:
135
+ has_absolute = absolute_paths is not None
136
+ has_parent = parent_scope_id is not None or relative_path_segments is not None
137
+
138
+ if has_absolute and has_parent:
139
+ raise ValueError(
140
+ "Choose one creation style: either absolute_paths=[...] "
141
+ "or parent_scope_id=... with relative_path_segments=[...], not both."
142
+ )
143
+
144
+ if has_absolute:
145
+ if not absolute_paths:
146
+ raise ValueError("absolute_paths must be a non-empty list when provided.")
147
+ params: unique_sdk.Folder.CreateParams = unique_sdk.Folder.CreateParams(
148
+ paths=absolute_paths
149
+ )
150
+ elif parent_scope_id is not None and relative_path_segments is not None:
151
+ if not relative_path_segments:
152
+ raise ValueError(
153
+ "relative_path_segments must be a non-empty list when creating under a parent."
154
+ )
155
+ params = unique_sdk.Folder.CreateParams(
156
+ parentScopeId=parent_scope_id,
157
+ relativePaths=relative_path_segments,
158
+ )
159
+ else:
160
+ raise ValueError(
161
+ "Provide absolute_paths=[...] for full paths from the root, "
162
+ "or parent_scope_id=... together with relative_path_segments=[...] "
163
+ "to create nested folders under an existing folder."
164
+ )
165
+
166
+ if inherit_access:
167
+ params["inheritAccess"] = True
168
+ return params
169
+
170
+
171
+ def creator_scope_access_grants(user_id: str) -> list[ScopeAccess]:
172
+ """READ and WRITE for the acting user (used for creator-private folders)."""
173
+ return [
174
+ ScopeAccess(
175
+ entity_id=user_id,
176
+ type=AccessType.READ,
177
+ entity_type=AccessEntityType.USER,
178
+ ),
179
+ ScopeAccess(
180
+ entity_id=user_id,
181
+ type=AccessType.WRITE,
182
+ entity_type=AccessEntityType.USER,
183
+ ),
184
+ ]
185
+
186
+
187
+ def _grant_creator_access_on_created_folders(
188
+ *,
189
+ user_id: str,
190
+ company_id: str,
191
+ created: list[CreatedFolder],
192
+ ) -> None:
193
+ grants = creator_scope_access_grants(user_id)
194
+ for folder in created:
195
+ create_access(
196
+ user_id=user_id,
197
+ company_id=company_id,
198
+ scope_id=folder.id,
199
+ scope_accesses=grants,
200
+ apply_to_sub_scopes=False,
201
+ )
202
+
203
+
204
+ async def _grant_creator_access_on_created_folders_async(
205
+ *,
206
+ user_id: str,
207
+ company_id: str,
208
+ created: list[CreatedFolder],
209
+ ) -> None:
210
+ grants = creator_scope_access_grants(user_id)
211
+ await asyncio.gather(
212
+ *[
213
+ create_access_async(
214
+ user_id=user_id,
215
+ company_id=company_id,
216
+ scope_id=folder.id,
217
+ scope_accesses=grants,
218
+ apply_to_sub_scopes=False,
219
+ )
220
+ for folder in created
221
+ ]
222
+ )
223
+
224
+
225
+ # ── Read ──────────────────────────────────────────────────────────────────────
226
+
227
+
228
+ def read(
229
+ user_id: str,
230
+ company_id: str,
231
+ *,
232
+ scope_id: str | None = None,
233
+ folder_path: str | None = None,
234
+ ) -> FolderInfo:
235
+ """Load folder metadata by ``scope_id`` or ``folder_path`` (exactly one required)."""
236
+ params = _build_get_params(scope_id=scope_id, folder_path=folder_path)
237
+ info = unique_sdk.Folder.get_info(
238
+ user_id=user_id,
239
+ company_id=company_id,
240
+ **params,
241
+ )
242
+ return FolderInfo.model_validate(info, by_alias=True, by_name=True)
243
+
244
+
245
+ async def read_async(
246
+ user_id: str,
247
+ company_id: str,
248
+ *,
249
+ scope_id: str | None = None,
250
+ folder_path: str | None = None,
251
+ ) -> FolderInfo:
252
+ """Async variant of :func:`read`."""
253
+ params = _build_get_params(scope_id=scope_id, folder_path=folder_path)
254
+ info = await unique_sdk.Folder.get_info_async(
255
+ user_id=user_id,
256
+ company_id=company_id,
257
+ **params,
258
+ )
259
+ return FolderInfo.model_validate(info, by_alias=True, by_name=True)
260
+
261
+
262
+ # ── Access management ─────────────────────────────────────────────────────────
263
+
264
+
265
+ def _build_add_access_params(
266
+ *,
267
+ scope_id: str | None,
268
+ folder_path: str | None,
269
+ scope_accesses: list[ScopeAccess],
270
+ apply_to_sub_scopes: bool,
271
+ ) -> unique_sdk.Folder.AddAccessParams:
272
+ scope_id, folder_path = _validate_scope_address(
273
+ scope_id=scope_id, folder_path=folder_path
274
+ )
275
+ params = unique_sdk.Folder.AddAccessParams(
276
+ scopeAccesses=_to_sdk_scope_accesses(scope_accesses),
277
+ applyToSubScopes=apply_to_sub_scopes,
278
+ )
279
+ if scope_id is not None:
280
+ params["scopeId"] = scope_id
281
+ if folder_path is not None:
282
+ params["folderPath"] = folder_path
283
+ return params
284
+
285
+
286
+ def _build_remove_access_params(
287
+ *,
288
+ scope_id: str | None,
289
+ folder_path: str | None,
290
+ scope_accesses: list[ScopeAccess],
291
+ apply_to_sub_scopes: bool,
292
+ ) -> unique_sdk.Folder.RemoveAccessParams:
293
+ scope_id, folder_path = _validate_scope_address(
294
+ scope_id=scope_id, folder_path=folder_path
295
+ )
296
+ params = unique_sdk.Folder.RemoveAccessParams(
297
+ scopeAccesses=_to_sdk_scope_accesses(scope_accesses),
298
+ applyToSubScopes=apply_to_sub_scopes,
299
+ )
300
+ if scope_id is not None:
301
+ params["scopeId"] = scope_id
302
+ if folder_path is not None:
303
+ params["folderPath"] = folder_path
304
+ return params
305
+
306
+
307
+ def create_access(
308
+ user_id: str,
309
+ company_id: str,
310
+ *,
311
+ scope_id: str | None = None,
312
+ folder_path: str | None = None,
313
+ scope_accesses: list[ScopeAccess],
314
+ apply_to_sub_scopes: bool = False,
315
+ ) -> FolderDetail:
316
+ """Grant READ/WRITE to users or groups (address folder by ``scope_id`` or ``folder_path``)."""
317
+ params = _build_add_access_params(
318
+ scope_id=scope_id,
319
+ folder_path=folder_path,
320
+ scope_accesses=scope_accesses,
321
+ apply_to_sub_scopes=apply_to_sub_scopes,
322
+ )
323
+
324
+ result = unique_sdk.Folder.add_access(
325
+ user_id=user_id,
326
+ company_id=company_id,
327
+ **params,
328
+ )
329
+ return FolderDetail.model_validate(result, by_alias=True, by_name=True)
330
+
331
+
332
+ async def create_access_async(
333
+ user_id: str,
334
+ company_id: str,
335
+ *,
336
+ scope_id: str | None = None,
337
+ folder_path: str | None = None,
338
+ scope_accesses: list[ScopeAccess],
339
+ apply_to_sub_scopes: bool = False,
340
+ ) -> FolderDetail:
341
+ """Async variant of :func:`create_access`."""
342
+ params = _build_add_access_params(
343
+ scope_id=scope_id,
344
+ folder_path=folder_path,
345
+ scope_accesses=scope_accesses,
346
+ apply_to_sub_scopes=apply_to_sub_scopes,
347
+ )
348
+
349
+ result = await unique_sdk.Folder.add_access_async(
350
+ user_id=user_id,
351
+ company_id=company_id,
352
+ **params,
353
+ )
354
+ return FolderDetail.model_validate(result, by_alias=True, by_name=True)
355
+
356
+
357
+ def delete_access(
358
+ user_id: str,
359
+ company_id: str,
360
+ *,
361
+ scope_id: str | None = None,
362
+ folder_path: str | None = None,
363
+ scope_accesses: list[ScopeAccess],
364
+ apply_to_sub_scopes: bool = False,
365
+ ) -> FolderDetail:
366
+ """Revoke access entries (address folder by ``scope_id`` or ``folder_path``)."""
367
+ params = _build_remove_access_params(
368
+ scope_id=scope_id,
369
+ folder_path=folder_path,
370
+ scope_accesses=scope_accesses,
371
+ apply_to_sub_scopes=apply_to_sub_scopes,
372
+ )
373
+
374
+ result = unique_sdk.Folder.remove_access(
375
+ user_id=user_id,
376
+ company_id=company_id,
377
+ **params,
378
+ )
379
+ return FolderDetail.model_validate(result, by_alias=True, by_name=True)
380
+
381
+
382
+ async def delete_access_async(
383
+ user_id: str,
384
+ company_id: str,
385
+ *,
386
+ scope_id: str | None = None,
387
+ folder_path: str | None = None,
388
+ scope_accesses: list[ScopeAccess],
389
+ apply_to_sub_scopes: bool = False,
390
+ ) -> FolderDetail:
391
+ """Async variant of :func:`delete_access`."""
392
+ params = _build_remove_access_params(
393
+ scope_id=scope_id,
394
+ folder_path=folder_path,
395
+ scope_accesses=scope_accesses,
396
+ apply_to_sub_scopes=apply_to_sub_scopes,
397
+ )
398
+
399
+ result = await unique_sdk.Folder.remove_access_async(
400
+ user_id=user_id,
401
+ company_id=company_id,
402
+ **params,
403
+ )
404
+ return FolderDetail.model_validate(result, by_alias=True, by_name=True)
405
+
406
+
407
+ # ── Delete ────────────────────────────────────────────────────────────────────
408
+
409
+
410
+ def delete(
411
+ user_id: str,
412
+ company_id: str,
413
+ *,
414
+ scope_id: str | None = None,
415
+ folder_path: str | None = None,
416
+ recursive: bool = False,
417
+ ) -> DeleteResult:
418
+ """Delete a folder by ``scope_id`` or ``folder_path`` (exactly one required).
419
+
420
+ Args:
421
+ user_id: Acting user (SDK requirement).
422
+ company_id: Owning company (SDK requirement).
423
+ scope_id: Scope id of the folder to delete.
424
+ folder_path: Absolute path from the knowledge-base root.
425
+ recursive: When true, request recursive deletion per API semantics.
426
+ """
427
+ params = _build_delete_params(
428
+ scope_id=scope_id,
429
+ folder_path=folder_path,
430
+ recursive=recursive,
431
+ )
432
+ raw = unique_sdk.Folder.delete(
433
+ user_id=user_id,
434
+ company_id=company_id,
435
+ **params,
436
+ )
437
+ return DeleteResult.model_validate(raw, by_alias=True, by_name=True)
438
+
439
+
440
+ async def delete_async(
441
+ user_id: str,
442
+ company_id: str,
443
+ *,
444
+ scope_id: str | None = None,
445
+ folder_path: str | None = None,
446
+ recursive: bool = False,
447
+ ) -> DeleteResult:
448
+ """Async variant of :func:`delete`."""
449
+ params = _build_delete_params(
450
+ scope_id=scope_id,
451
+ folder_path=folder_path,
452
+ recursive=recursive,
453
+ )
454
+ raw = await unique_sdk.Folder.delete_async(
455
+ user_id=user_id,
456
+ company_id=company_id,
457
+ **params,
458
+ )
459
+ return DeleteResult.model_validate(raw, by_alias=True, by_name=True)
460
+
461
+
462
+ # ── Helpers ───────────────────────────────────────────────────────────────────
463
+
464
+
465
+ def _to_sdk_scope_accesses(
466
+ scope_accesses: list[ScopeAccess],
467
+ ) -> list[unique_sdk.Folder.ScopeAccess]:
468
+ return cast(
469
+ list[unique_sdk.Folder.ScopeAccess],
470
+ [a.model_dump(by_alias=True, exclude_none=True) for a in scope_accesses],
471
+ )
472
+
473
+
474
+ def _validate_scope_address(
475
+ *,
476
+ scope_id: str | None,
477
+ folder_path: str | None,
478
+ ) -> tuple[str | None, str | None]:
479
+ """Require exactly one of ``scope_id`` or ``folder_path``."""
480
+ if scope_id is None and folder_path is None:
481
+ raise ValueError("Pass exactly one of scope_id or folder_path.")
482
+ if scope_id is not None and folder_path is not None:
483
+ raise ValueError("Pass only one of scope_id or folder_path, not both.")
484
+ return scope_id, folder_path
485
+
486
+
487
+ def _build_get_params(
488
+ *,
489
+ scope_id: str | None,
490
+ folder_path: str | None,
491
+ ) -> unique_sdk.Folder.GetParams:
492
+ scope_id, folder_path = _validate_scope_address(
493
+ scope_id=scope_id, folder_path=folder_path
494
+ )
495
+ params = unique_sdk.Folder.GetParams()
496
+ if scope_id is not None:
497
+ params["scopeId"] = scope_id
498
+ if folder_path is not None:
499
+ params["folderPath"] = folder_path
500
+ return params
501
+
502
+
503
+ def _build_delete_params(
504
+ *,
505
+ scope_id: str | None,
506
+ folder_path: str | None,
507
+ recursive: bool,
508
+ ) -> unique_sdk.Folder.DeleteFolderParams:
509
+ scope_id, folder_path = _validate_scope_address(
510
+ scope_id=scope_id, folder_path=folder_path
511
+ )
512
+ params: unique_sdk.Folder.DeleteFolderParams = {}
513
+ if scope_id is not None:
514
+ params["scopeId"] = scope_id
515
+ if folder_path is not None:
516
+ params["folderPath"] = folder_path
517
+ if recursive:
518
+ params["recursive"] = True
519
+ return params