unique-toolkit 2026.20.0.dev7__tar.gz → 2026.20.0.dev9__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 (346) hide show
  1. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/PKG-INFO +2 -2
  2. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/pyproject.toml +117 -2
  3. unique_toolkit-2026.20.0.dev9/unique_toolkit/experimental/README.md +258 -0
  4. unique_toolkit-2026.20.0.dev9/unique_toolkit/experimental/_internal/__init__.py +21 -0
  5. unique_toolkit-2026.20.0.dev9/unique_toolkit/experimental/components/__init__.py +27 -0
  6. {unique_toolkit-2026.20.0.dev7/unique_toolkit/experimental → unique_toolkit-2026.20.0.dev9/unique_toolkit/experimental/components}/content_tree/__init__.py +7 -7
  7. {unique_toolkit-2026.20.0.dev7/unique_toolkit/experimental → unique_toolkit-2026.20.0.dev9/unique_toolkit/experimental/components}/content_tree/functions.py +3 -3
  8. {unique_toolkit-2026.20.0.dev7/unique_toolkit/experimental → unique_toolkit-2026.20.0.dev9/unique_toolkit/experimental/components}/content_tree/schemas.py +2 -2
  9. {unique_toolkit-2026.20.0.dev7/unique_toolkit/experimental → unique_toolkit-2026.20.0.dev9/unique_toolkit/experimental/components}/content_tree/service.py +4 -4
  10. unique_toolkit-2026.20.0.dev9/unique_toolkit/experimental/content_tree/__init__.py +35 -0
  11. unique_toolkit-2026.20.0.dev9/unique_toolkit/experimental/identity/__init__.py +38 -0
  12. unique_toolkit-2026.20.0.dev9/unique_toolkit/experimental/integrations/__init__.py +12 -0
  13. unique_toolkit-2026.20.0.dev9/unique_toolkit/experimental/resources/__init__.py +63 -0
  14. {unique_toolkit-2026.20.0.dev7/unique_toolkit/experimental → unique_toolkit-2026.20.0.dev9/unique_toolkit/experimental/resources}/content_folder/__init__.py +13 -3
  15. {unique_toolkit-2026.20.0.dev7/unique_toolkit/experimental → unique_toolkit-2026.20.0.dev9/unique_toolkit/experimental/resources}/content_folder/functions.py +1 -1
  16. {unique_toolkit-2026.20.0.dev7/unique_toolkit/experimental → unique_toolkit-2026.20.0.dev9/unique_toolkit/experimental/resources}/content_folder/schemas.py +2 -2
  17. {unique_toolkit-2026.20.0.dev7/unique_toolkit/experimental → unique_toolkit-2026.20.0.dev9/unique_toolkit/experimental/resources}/content_folder/service.py +4 -4
  18. unique_toolkit-2026.20.0.dev9/unique_toolkit/experimental/resources/facades/__init__.py +29 -0
  19. unique_toolkit-2026.20.0.dev9/unique_toolkit/experimental/resources/facades/identity/__init__.py +51 -0
  20. unique_toolkit-2026.20.0.dev9/unique_toolkit/experimental/resources/facades/identity/service.py +113 -0
  21. unique_toolkit-2026.20.0.dev9/unique_toolkit/experimental/resources/group/__init__.py +70 -0
  22. unique_toolkit-2026.20.0.dev9/unique_toolkit/experimental/resources/group/functions.py +298 -0
  23. unique_toolkit-2026.20.0.dev9/unique_toolkit/experimental/resources/group/schemas.py +97 -0
  24. unique_toolkit-2026.20.0.dev9/unique_toolkit/experimental/resources/group/service.py +255 -0
  25. unique_toolkit-2026.20.0.dev9/unique_toolkit/experimental/resources/scheduled_task/__init__.py +55 -0
  26. {unique_toolkit-2026.20.0.dev7/unique_toolkit/experimental → unique_toolkit-2026.20.0.dev9/unique_toolkit/experimental/resources}/scheduled_task/cron.py +1 -1
  27. {unique_toolkit-2026.20.0.dev7/unique_toolkit/experimental → unique_toolkit-2026.20.0.dev9/unique_toolkit/experimental/resources}/scheduled_task/functions.py +1 -1
  28. {unique_toolkit-2026.20.0.dev7/unique_toolkit/experimental → unique_toolkit-2026.20.0.dev9/unique_toolkit/experimental/resources}/scheduled_task/schemas.py +3 -3
  29. {unique_toolkit-2026.20.0.dev7/unique_toolkit/experimental → unique_toolkit-2026.20.0.dev9/unique_toolkit/experimental/resources}/scheduled_task/service.py +3 -3
  30. unique_toolkit-2026.20.0.dev9/unique_toolkit/experimental/resources/user/__init__.py +60 -0
  31. unique_toolkit-2026.20.0.dev9/unique_toolkit/experimental/resources/user/functions.py +285 -0
  32. {unique_toolkit-2026.20.0.dev7/unique_toolkit/experimental/identity → unique_toolkit-2026.20.0.dev9/unique_toolkit/experimental/resources/user}/schemas.py +13 -93
  33. unique_toolkit-2026.20.0.dev9/unique_toolkit/experimental/resources/user/service.py +363 -0
  34. unique_toolkit-2026.20.0.dev9/unique_toolkit/experimental/testing/__init__.py +10 -0
  35. unique_toolkit-2026.20.0.dev7/unique_toolkit/experimental/identity/__init__.py +0 -48
  36. unique_toolkit-2026.20.0.dev7/unique_toolkit/experimental/identity/functions.py +0 -579
  37. unique_toolkit-2026.20.0.dev7/unique_toolkit/experimental/identity/service.py +0 -715
  38. unique_toolkit-2026.20.0.dev7/unique_toolkit/experimental/scheduled_task/__init__.py +0 -71
  39. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/README.md +0 -0
  40. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/__init__.py +0 -0
  41. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/_common/__init__.py +0 -0
  42. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/_common/_base_service.py +0 -0
  43. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/_common/_time_utils.py +0 -0
  44. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/_common/api_calling/human_verification_manager.py +0 -0
  45. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/_common/base_model_type_attribute.py +0 -0
  46. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/_common/chunk_relevancy_sorter/config.py +0 -0
  47. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/_common/chunk_relevancy_sorter/exception.py +0 -0
  48. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/_common/chunk_relevancy_sorter/schemas.py +0 -0
  49. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/_common/chunk_relevancy_sorter/service.py +0 -0
  50. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/_common/chunk_relevancy_sorter/tests/test_service.py +0 -0
  51. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/_common/config_checker/README.md +0 -0
  52. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/_common/config_checker/__init__.py +0 -0
  53. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/_common/config_checker/__main__.py +0 -0
  54. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/_common/config_checker/cli.py +0 -0
  55. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/_common/config_checker/differ.py +0 -0
  56. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/_common/config_checker/exporter.py +0 -0
  57. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/_common/config_checker/models.py +0 -0
  58. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/_common/config_checker/registry.py +0 -0
  59. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/_common/config_checker/validator.py +0 -0
  60. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/_common/default_language_model.py +0 -0
  61. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/_common/docx_generator/__init__.py +0 -0
  62. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/_common/docx_generator/config.py +0 -0
  63. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/_common/docx_generator/pandoc_converter.py +0 -0
  64. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/_common/docx_generator/schemas.py +0 -0
  65. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/_common/docx_generator/service.py +0 -0
  66. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/_common/docx_generator/template/Doc Template.docx +0 -0
  67. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/_common/endpoint_builder.py +0 -0
  68. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/_common/endpoint_requestor.py +0 -0
  69. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/_common/event_bus.py +0 -0
  70. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/_common/exception.py +0 -0
  71. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/_common/execution.py +0 -0
  72. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/_common/experimental/endpoint_builder.py +0 -0
  73. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/_common/experimental/endpoint_requestor.py +0 -0
  74. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/_common/experimental/write_up_agent/README.md +0 -0
  75. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/_common/experimental/write_up_agent/__init__.py +0 -0
  76. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/_common/experimental/write_up_agent/agent.py +0 -0
  77. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/_common/experimental/write_up_agent/config.py +0 -0
  78. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/_common/experimental/write_up_agent/examples/data.csv +0 -0
  79. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/_common/experimental/write_up_agent/examples/example_usage.py +0 -0
  80. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/_common/experimental/write_up_agent/schemas.py +0 -0
  81. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/_common/experimental/write_up_agent/services/__init__.py +0 -0
  82. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/_common/experimental/write_up_agent/services/dataframe_handler/__init__.py +0 -0
  83. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/_common/experimental/write_up_agent/services/dataframe_handler/exceptions.py +0 -0
  84. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/_common/experimental/write_up_agent/services/dataframe_handler/service.py +0 -0
  85. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/_common/experimental/write_up_agent/services/dataframe_handler/utils.py +0 -0
  86. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/__init__.py +0 -0
  87. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/config.py +0 -0
  88. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/exceptions.py +0 -0
  89. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/prompts/config.py +0 -0
  90. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/prompts/system_prompt.j2 +0 -0
  91. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/prompts/user_prompt.j2 +0 -0
  92. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/service.py +0 -0
  93. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/_common/experimental/write_up_agent/services/template_handler/__init__.py +0 -0
  94. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/_common/experimental/write_up_agent/services/template_handler/default_template.j2 +0 -0
  95. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/_common/experimental/write_up_agent/services/template_handler/exceptions.py +0 -0
  96. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/_common/experimental/write_up_agent/services/template_handler/service.py +0 -0
  97. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/_common/experimental/write_up_agent/services/template_handler/utils.py +0 -0
  98. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/_common/experimental/write_up_agent/utils.py +0 -0
  99. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/_common/feature_flags/schema.py +0 -0
  100. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/_common/pydantic/rjsf_tags.py +0 -0
  101. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/_common/pydantic_helpers.py +0 -0
  102. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/_common/referencing.py +0 -0
  103. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/_common/string_utilities.py +0 -0
  104. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/_common/tests/test_referencing.py +0 -0
  105. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/_common/tests/test_string_utilities.py +0 -0
  106. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/_common/token/__init__.py +0 -0
  107. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/_common/token/image_token_counting.py +0 -0
  108. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/_common/token/token_counting.py +0 -0
  109. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/_common/token/tokenizers/deepseek/tokenizer.json +0 -0
  110. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/_common/token/tokenizers/qwen/tokenizer.json +0 -0
  111. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/_common/utils/__init__.py +0 -0
  112. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/_common/utils/files.py +0 -0
  113. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/_common/utils/image/encode.py +0 -0
  114. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/_common/utils/jinja/helpers.py +0 -0
  115. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/_common/utils/jinja/render.py +0 -0
  116. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/_common/utils/jinja/schema.py +0 -0
  117. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/_common/utils/jinja/utils.py +0 -0
  118. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/_common/utils/structured_output/__init__.py +0 -0
  119. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/_common/utils/structured_output/schema.py +0 -0
  120. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/_common/utils/write_configuration.py +0 -0
  121. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/_common/validate_required_values.py +0 -0
  122. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/_common/validators.py +0 -0
  123. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/agentic/__init__.py +0 -0
  124. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/agentic/debug_info_manager/debug_info_manager.py +0 -0
  125. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/agentic/debug_info_manager/test/test_debug_info_manager.py +0 -0
  126. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/agentic/evaluation/config.py +0 -0
  127. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/agentic/evaluation/context_relevancy/prompts/__init__.py +0 -0
  128. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/agentic/evaluation/context_relevancy/prompts/system_prompt.j2 +0 -0
  129. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/agentic/evaluation/context_relevancy/prompts/user_prompt.j2 +0 -0
  130. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/agentic/evaluation/context_relevancy/schema.py +0 -0
  131. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/agentic/evaluation/context_relevancy/service.py +0 -0
  132. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/agentic/evaluation/evaluation_manager.py +0 -0
  133. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/agentic/evaluation/exception.py +0 -0
  134. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/agentic/evaluation/hallucination/constants.py +0 -0
  135. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/agentic/evaluation/hallucination/hallucination_evaluation.py +0 -0
  136. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/agentic/evaluation/hallucination/prompts/__init__.py +0 -0
  137. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/agentic/evaluation/hallucination/prompts/system_prompt.j2 +0 -0
  138. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/agentic/evaluation/hallucination/prompts/user_prompt.j2 +0 -0
  139. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/agentic/evaluation/hallucination/service.py +0 -0
  140. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/agentic/evaluation/hallucination/utils.py +0 -0
  141. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/agentic/evaluation/output_parser.py +0 -0
  142. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/agentic/evaluation/schemas.py +0 -0
  143. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/agentic/evaluation/tests/fixtures.py +0 -0
  144. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/agentic/evaluation/tests/test_config.py +0 -0
  145. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/agentic/evaluation/tests/test_context_relevancy_service.py +0 -0
  146. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/agentic/evaluation/tests/test_hallucination_constants.py +0 -0
  147. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/agentic/evaluation/tests/test_hallucination_utils.py +0 -0
  148. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/agentic/evaluation/tests/test_output_parser.py +0 -0
  149. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/agentic/evaluation/tests/test_prompt_loaders.py +0 -0
  150. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/agentic/evaluation/utils.py +0 -0
  151. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/agentic/feature_flags/__init__.py +0 -0
  152. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/agentic/feature_flags/feature_flags.py +0 -0
  153. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/agentic/history_manager/history_construction_with_contents.py +0 -0
  154. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/agentic/history_manager/history_manager.py +0 -0
  155. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/agentic/history_manager/loop_token_reducer.py +0 -0
  156. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/agentic/history_manager/utils.py +0 -0
  157. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/agentic/loop_runner/__init__.py +0 -0
  158. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/agentic/loop_runner/_iteration_handler_utils.py +0 -0
  159. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/agentic/loop_runner/_responses_iteration_handler_utils.py +0 -0
  160. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/agentic/loop_runner/_responses_stream_handler_utils.py +0 -0
  161. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/agentic/loop_runner/_stream_handler_utils.py +0 -0
  162. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/agentic/loop_runner/base.py +0 -0
  163. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/agentic/loop_runner/middleware/__init__.py +0 -0
  164. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/agentic/loop_runner/middleware/planning/__init__.py +0 -0
  165. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/agentic/loop_runner/middleware/planning/planning.py +0 -0
  166. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/agentic/loop_runner/middleware/planning/schema.py +0 -0
  167. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/agentic/loop_runner/runners/__init__.py +0 -0
  168. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/agentic/loop_runner/runners/basic.py +0 -0
  169. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/agentic/loop_runner/runners/mistral/__init__.py +0 -0
  170. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/agentic/loop_runner/runners/mistral/mistral_runner.py +0 -0
  171. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/agentic/loop_runner/runners/qwen/__init__.py +0 -0
  172. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/agentic/loop_runner/runners/qwen/helpers.py +0 -0
  173. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/agentic/loop_runner/runners/qwen/qwen_runner.py +0 -0
  174. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/agentic/message_log_manager/__init__.py +0 -0
  175. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/agentic/message_log_manager/service.py +0 -0
  176. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/agentic/postprocessor/postprocessor_manager.py +0 -0
  177. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/agentic/reference_manager/reference_manager.py +0 -0
  178. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/agentic/responses_api/__init__.py +0 -0
  179. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/agentic/responses_api/postprocessors/code_display.py +0 -0
  180. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/agentic/responses_api/postprocessors/generated_files.py +0 -0
  181. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/agentic/responses_api/stream_handler.py +0 -0
  182. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/agentic/short_term_memory_manager/persistent_short_term_memory_manager.py +0 -0
  183. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/agentic/thinking_manager/thinking_manager.py +0 -0
  184. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/agentic/tools/__init__.py +0 -0
  185. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/agentic/tools/a2a/__init__.py +0 -0
  186. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/agentic/tools/a2a/config.py +0 -0
  187. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/agentic/tools/a2a/evaluation/__init__.py +0 -0
  188. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/agentic/tools/a2a/evaluation/_utils.py +0 -0
  189. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/agentic/tools/a2a/evaluation/config.py +0 -0
  190. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/agentic/tools/a2a/evaluation/evaluator.py +0 -0
  191. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/agentic/tools/a2a/evaluation/summarization_user_message.j2 +0 -0
  192. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/agentic/tools/a2a/manager.py +0 -0
  193. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/agentic/tools/a2a/postprocessing/__init__.py +0 -0
  194. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/agentic/tools/a2a/postprocessing/_display_utils.py +0 -0
  195. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/agentic/tools/a2a/postprocessing/_ref_utils.py +0 -0
  196. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/agentic/tools/a2a/postprocessing/config.py +0 -0
  197. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/agentic/tools/a2a/postprocessing/display.py +0 -0
  198. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/agentic/tools/a2a/postprocessing/references.py +0 -0
  199. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/agentic/tools/a2a/postprocessing/test/test_display.py +0 -0
  200. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/agentic/tools/a2a/postprocessing/test/test_display_utils.py +0 -0
  201. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/agentic/tools/a2a/postprocessing/test/test_ref_utils.py +0 -0
  202. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/agentic/tools/a2a/prompts.py +0 -0
  203. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/agentic/tools/a2a/response_watcher/__init__.py +0 -0
  204. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/agentic/tools/a2a/response_watcher/service.py +0 -0
  205. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/agentic/tools/a2a/tool/__init__.py +0 -0
  206. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/agentic/tools/a2a/tool/_memory.py +0 -0
  207. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/agentic/tools/a2a/tool/_schema.py +0 -0
  208. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/agentic/tools/a2a/tool/config.py +0 -0
  209. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/agentic/tools/a2a/tool/service.py +0 -0
  210. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/agentic/tools/a2a/tool/test/test_service_utils.py +0 -0
  211. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/agentic/tools/agent_chunks_hanlder.py +0 -0
  212. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/agentic/tools/config.py +0 -0
  213. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/agentic/tools/experimental/__init__.py +0 -0
  214. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/agentic/tools/experimental/open_file_tool/__init__.py +0 -0
  215. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/agentic/tools/experimental/open_file_tool/config.py +0 -0
  216. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/agentic/tools/experimental/open_file_tool/runtime.py +0 -0
  217. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/agentic/tools/experimental/open_file_tool/tool.py +0 -0
  218. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/agentic/tools/experimental/todo/__init__.py +0 -0
  219. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/agentic/tools/experimental/todo/config.py +0 -0
  220. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/agentic/tools/experimental/todo/prompts/__init__.py +0 -0
  221. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/agentic/tools/experimental/todo/prompts/execution_reminder.j2 +0 -0
  222. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/agentic/tools/experimental/todo/prompts/system_prompt.j2 +0 -0
  223. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/agentic/tools/experimental/todo/prompts/tool_description.j2 +0 -0
  224. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/agentic/tools/experimental/todo/prompts/verification_nudge.j2 +0 -0
  225. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/agentic/tools/experimental/todo/schemas.py +0 -0
  226. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/agentic/tools/experimental/todo/service.py +0 -0
  227. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/agentic/tools/factory.py +0 -0
  228. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/agentic/tools/mcp/__init__.py +0 -0
  229. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/agentic/tools/mcp/manager.py +0 -0
  230. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/agentic/tools/mcp/models.py +0 -0
  231. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/agentic/tools/mcp/tool_wrapper.py +0 -0
  232. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/agentic/tools/openai_builtin/__init__.py +0 -0
  233. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/agentic/tools/openai_builtin/base.py +0 -0
  234. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/__init__.py +0 -0
  235. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/config.py +0 -0
  236. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/postprocessors/__init__.py +0 -0
  237. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/postprocessors/code_display.py +0 -0
  238. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/postprocessors/generated_files.py +0 -0
  239. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/schemas.py +0 -0
  240. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/service.py +0 -0
  241. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/agentic/tools/openai_builtin/manager.py +0 -0
  242. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/agentic/tools/schemas.py +0 -0
  243. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/agentic/tools/test/test_mcp_manager.py +0 -0
  244. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/agentic/tools/test/test_tool_progress_reporter.py +0 -0
  245. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/agentic/tools/tool.py +0 -0
  246. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/agentic/tools/tool_manager.py +0 -0
  247. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/agentic/tools/tool_progress_reporter.py +0 -0
  248. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/agentic/tools/utils/__init__.py +0 -0
  249. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/agentic/tools/utils/source_handling/__init__.py +0 -0
  250. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/agentic/tools/utils/source_handling/schema.py +0 -0
  251. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/agentic/tools/utils/source_handling/source_formatting.py +0 -0
  252. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/agentic/tools/utils/source_handling/tests/test_source_formatting.py +0 -0
  253. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/agentic_table/__init__.py +0 -0
  254. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/agentic_table/schemas.py +0 -0
  255. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/agentic_table/service.py +0 -0
  256. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/app/__init__.py +0 -0
  257. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/app/chat_event_filter_options_settings.py +0 -0
  258. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/app/dev_util.py +0 -0
  259. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/app/fast_api_factory.py +0 -0
  260. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/app/feature_flags.py +0 -0
  261. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/app/find_env_file.py +0 -0
  262. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/app/init_logging.py +0 -0
  263. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/app/init_sdk.py +0 -0
  264. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/app/performance/async_tasks.py +0 -0
  265. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/app/performance/async_wrapper.py +0 -0
  266. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/app/schemas.py +0 -0
  267. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/app/unique_settings.py +0 -0
  268. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/app/verification.py +0 -0
  269. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/app/webhook.py +0 -0
  270. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/chat/__init__.py +0 -0
  271. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/chat/cancellation.py +0 -0
  272. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/chat/constants.py +0 -0
  273. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/chat/deprecated/service.py +0 -0
  274. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/chat/functions.py +0 -0
  275. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/chat/rendering.py +0 -0
  276. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/chat/responses_api.py +0 -0
  277. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/chat/schemas.py +0 -0
  278. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/chat/service.py +0 -0
  279. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/chat/state.py +0 -0
  280. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/chat/utils.py +0 -0
  281. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/content/__init__.py +0 -0
  282. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/content/constants.py +0 -0
  283. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/content/functions.py +0 -0
  284. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/content/schemas.py +0 -0
  285. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/content/service.py +0 -0
  286. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/content/smart_rules.py +0 -0
  287. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/content/utils.py +0 -0
  288. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/data_extraction/README.md +0 -0
  289. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/data_extraction/__init__.py +0 -0
  290. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/data_extraction/augmented/__init__.py +0 -0
  291. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/data_extraction/augmented/service.py +0 -0
  292. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/data_extraction/base.py +0 -0
  293. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/data_extraction/basic/__init__.py +0 -0
  294. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/data_extraction/basic/config.py +0 -0
  295. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/data_extraction/basic/prompt.py +0 -0
  296. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/data_extraction/basic/service.py +0 -0
  297. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/elicitation/__init__.py +0 -0
  298. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/elicitation/constants.py +0 -0
  299. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/elicitation/exceptions.py +0 -0
  300. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/elicitation/functions.py +0 -0
  301. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/elicitation/schemas.py +0 -0
  302. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/elicitation/service.py +0 -0
  303. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/embedding/__init__.py +0 -0
  304. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/embedding/constants.py +0 -0
  305. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/embedding/functions.py +0 -0
  306. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/embedding/schemas.py +0 -0
  307. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/embedding/service.py +0 -0
  308. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/embedding/utils.py +0 -0
  309. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/experimental/__init__.py +0 -0
  310. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/framework_utilities/__init__.py +0 -0
  311. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/framework_utilities/langchain/__init__.py +0 -0
  312. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/framework_utilities/langchain/client.py +0 -0
  313. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/framework_utilities/langchain/history.py +0 -0
  314. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/framework_utilities/openai/__init__.py +0 -0
  315. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/framework_utilities/openai/client.py +0 -0
  316. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/framework_utilities/openai/message_builder.py +0 -0
  317. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/framework_utilities/utils.py +0 -0
  318. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/language_model/__init__.py +0 -0
  319. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/language_model/_responses_api_utils.py +0 -0
  320. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/language_model/builder.py +0 -0
  321. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/language_model/constants.py +0 -0
  322. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/language_model/default_language_model.py +0 -0
  323. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/language_model/functions.py +0 -0
  324. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/language_model/infos.py +0 -0
  325. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/language_model/prompt.py +0 -0
  326. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/language_model/reference.py +0 -0
  327. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/language_model/schemas.py +0 -0
  328. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/language_model/service.py +0 -0
  329. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/language_model/stream_transform.py +0 -0
  330. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/language_model/utils.py +0 -0
  331. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/monitoring/__init__.py +0 -0
  332. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/monitoring/middleware.py +0 -0
  333. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/monitoring/registry.py +0 -0
  334. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/protocols/support.py +0 -0
  335. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/services/__init__.py +0 -0
  336. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/services/chat_service.py +0 -0
  337. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/services/factory.py +0 -0
  338. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/services/knowledge_base.py +0 -0
  339. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/short_term_memory/__init__.py +0 -0
  340. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/short_term_memory/constants.py +0 -0
  341. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/short_term_memory/functions.py +0 -0
  342. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/short_term_memory/schemas.py +0 -0
  343. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/short_term_memory/service.py +0 -0
  344. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/smart_rules/__init__.py +0 -0
  345. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/unique_toolkit/smart_rules/compile.py +0 -0
  346. {unique_toolkit-2026.20.0.dev7 → unique_toolkit-2026.20.0.dev9}/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: 2026.20.0.dev7
3
+ Version: 2026.20.0.dev9
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>
@@ -16,7 +16,7 @@ Requires-Dist: sseclient>=0.0.27,<0.0.28
16
16
  Requires-Dist: openai>=1.105.0,<3
17
17
  Requires-Dist: platformdirs>=4.0.0,<5
18
18
  Requires-Dist: pillow>=12.1.1
19
- Requires-Dist: unique-sdk>=2026.20.0.dev8
19
+ Requires-Dist: unique-sdk>=2026.20.0.dev9
20
20
  Requires-Dist: jambo>=0.1.2,<0.2
21
21
  Requires-Dist: jinja2>=3.1.6,<4
22
22
  Requires-Dist: docxtpl>=0.20.1,<0.21
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "unique_toolkit"
3
- version = "2026.20.0.dev7"
3
+ version = "2026.20.0.dev9"
4
4
  description = ""
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.12"
@@ -28,7 +28,7 @@ dependencies = [
28
28
  "openai>=1.105.0,<3",
29
29
  "platformdirs>=4.0.0,<5",
30
30
  "pillow>=12.1.1",
31
- "unique-sdk>=2026.20.0.dev8",
31
+ "unique-sdk>=2026.20.0.dev9",
32
32
  "jambo>=0.1.2,<0.2",
33
33
  "jinja2>=3.1.6,<4",
34
34
  "docxtpl>=0.20.1,<0.21",
@@ -91,6 +91,7 @@ format = "ruff format ."
91
91
  test = "pytest"
92
92
  typecheck = "basedpyright"
93
93
  depcheck = "deptry ."
94
+ check-imports = "lint-imports"
94
95
  coverage = "pytest --cov=unique_toolkit --cov-report=term-missing"
95
96
  ci-typecheck = { shell = "bash $(git rev-parse --show-toplevel)/.github/scripts/dev.sh typecheck" }
96
97
  ci-coverage = { shell = "bash $(git rev-parse --show-toplevel)/.github/scripts/dev.sh coverage" }
@@ -118,6 +119,120 @@ extend_exclude = ["docs", "tests", "unique_toolkit/.*/test", "unique_toolkit/.*/
118
119
  DEP002 = ["langchain", "fastapi", "starlette", "uvicorn"]
119
120
  DEP004 = ["langchain_openai", "langchain_core"]
120
121
 
122
+ # -----------------------------------------------------------------------------
123
+ # import-linter — enforces the layered architecture documented in
124
+ # unique_toolkit/experimental/README.md. Contracts are scoped to the
125
+ # experimental/ subpackage; the rest of the toolkit keeps its existing
126
+ # (un-layered) shape until modules graduate into the new layout.
127
+ #
128
+ # Run: uv run poe check-imports (or: uv run lint-imports)
129
+ #
130
+ # Rules encoded below:
131
+ # 1. integrations → resources → _internal (layers)
132
+ # 2. components → resources → _internal (layers; peer of integrations)
133
+ # 3. components never import integrations (keeps orchestration framework-agnostic)
134
+ # 4. primitive resources are mutually independent
135
+ # 5. primitives never import facades (dependency direction inside resources/)
136
+ # 6. facades compose primitives only — never unique_sdk / components / integrations
137
+ # 7. components never call unique_sdk directly (go through a resource)
138
+ # 8. each integrations/<framework>/ stands alone — enabled when real modules land
139
+ #
140
+ # Preference rules from the README that are NOT machine-enforced (import-linter
141
+ # is pass/fail, not tiered): integrations prefer facades over primitives;
142
+ # integrations importing components is "discouraged but allowed".
143
+ # -----------------------------------------------------------------------------
144
+ [tool.importlinter]
145
+ root_packages = ["unique_toolkit"]
146
+ include_external_packages = true
147
+
148
+ [[tool.importlinter.contracts]]
149
+ name = "experimental: integrations stack (integrations → resources → _internal)"
150
+ type = "layers"
151
+ layers = [
152
+ "unique_toolkit.experimental.integrations",
153
+ "unique_toolkit.experimental.resources",
154
+ "unique_toolkit.experimental._internal",
155
+ ]
156
+
157
+ [[tool.importlinter.contracts]]
158
+ name = "experimental: components stack (components → resources → _internal)"
159
+ type = "layers"
160
+ layers = [
161
+ "unique_toolkit.experimental.components",
162
+ "unique_toolkit.experimental.resources",
163
+ "unique_toolkit.experimental._internal",
164
+ ]
165
+
166
+ [[tool.importlinter.contracts]]
167
+ name = "experimental: components never import integrations"
168
+ type = "forbidden"
169
+ source_modules = ["unique_toolkit.experimental.components"]
170
+ forbidden_modules = ["unique_toolkit.experimental.integrations"]
171
+
172
+ [[tool.importlinter.contracts]]
173
+ name = "experimental: primitive resources are independent"
174
+ type = "independence"
175
+ modules = [
176
+ "unique_toolkit.experimental.resources.user",
177
+ "unique_toolkit.experimental.resources.group",
178
+ "unique_toolkit.experimental.resources.content_folder",
179
+ "unique_toolkit.experimental.resources.scheduled_task",
180
+ ]
181
+
182
+ [[tool.importlinter.contracts]]
183
+ name = "experimental: primitives never import facades"
184
+ type = "forbidden"
185
+ source_modules = [
186
+ "unique_toolkit.experimental.resources.user",
187
+ "unique_toolkit.experimental.resources.group",
188
+ "unique_toolkit.experimental.resources.content_folder",
189
+ "unique_toolkit.experimental.resources.scheduled_task",
190
+ ]
191
+ forbidden_modules = ["unique_toolkit.experimental.resources.facades"]
192
+
193
+ [[tool.importlinter.contracts]]
194
+ name = "experimental: facades never import other facades"
195
+ type = "independence"
196
+ modules = ["unique_toolkit.experimental.resources.facades.*"]
197
+
198
+ [[tool.importlinter.contracts]]
199
+ name = "experimental: facades compose primitives only"
200
+ type = "forbidden"
201
+ source_modules = ["unique_toolkit.experimental.resources.facades"]
202
+ forbidden_modules = [
203
+ "unique_sdk",
204
+ "unique_toolkit.experimental.components",
205
+ "unique_toolkit.experimental.integrations",
206
+ ]
207
+ # Facades legitimately reach `unique_sdk` transitively through primitive
208
+ # resources (that's the whole point). This flag restricts the check to
209
+ # *direct* `import unique_sdk` statements inside facade modules.
210
+ allow_indirect_imports = true
211
+
212
+ [[tool.importlinter.contracts]]
213
+ name = "experimental: components never call unique_sdk directly"
214
+ type = "forbidden"
215
+ source_modules = ["unique_toolkit.experimental.components"]
216
+ forbidden_modules = ["unique_sdk"]
217
+ # Components are allowed to reach `unique_sdk` indirectly through a
218
+ # resource or an existing toolkit service; the rule only bans a *direct*
219
+ # `import unique_sdk` inside a component module.
220
+ allow_indirect_imports = true
221
+
222
+ # Uncomment and populate once concrete integrations exist under
223
+ # unique_toolkit/experimental/integrations/<framework>/.
224
+ # [[tool.importlinter.contracts]]
225
+ # name = "experimental: integrations are mutually independent"
226
+ # type = "independence"
227
+ # modules = [
228
+ # "unique_toolkit.experimental.integrations.openai",
229
+ # "unique_toolkit.experimental.integrations.langchain",
230
+ # ]
231
+
232
+
233
+
234
+
235
+
121
236
  [tool.ruff]
122
237
  target-version = "py312"
123
238
  exclude = [".venv", "docs"]
@@ -0,0 +1,258 @@
1
+ # `experimental/` — reorg proposal
2
+
3
+ This subpackage is the **staging area for the next-generation toolkit
4
+ layout**. Nothing here is stable; the public API, import paths, and class
5
+ names may change without notice and are not covered by the toolkit's normal
6
+ stability guarantees.
7
+
8
+ The goal of the reorganization is to replace the current "organize by file
9
+ type" layout with a layered layout where the **direction of dependencies is
10
+ visible at the folder level**. If you know which layer something lives in,
11
+ you know what it's allowed to import.
12
+
13
+ > **Contract:** every module in `experimental/` belongs to exactly one
14
+ > layer, and a layer may only import from layers *below* it. Violations are
15
+ > bugs; please fix them as you find them.
16
+
17
+ ---
18
+
19
+ ## The stack
20
+
21
+ ```mermaid
22
+ flowchart TD
23
+ integrations["<b>integrations/</b><br/><i>third-party framework glue</i>"]
24
+ components["<b>components/</b><br/><i>orchestration &amp; derived views</i>"]
25
+
26
+ subgraph resources ["<b>resources/</b>"]
27
+ direction TB
28
+ facades["<b>facades/</b><br/><i>resource-shaped aggregators</i><br/>(identity)"]
29
+ primitives["<b>primitives</b><br/><i>typed SDK wrappers</i><br/>(user, group, content_folder,<br/>scheduled_task, …)"]
30
+ facades --> primitives
31
+ end
32
+
33
+ internal["<b>_internal/</b><br/><i>package-private primitives</i>"]
34
+ sdk[("<b>unique_sdk</b><br/><i>external</i>")]
35
+
36
+ integrations ==> facades
37
+ integrations -.-> primitives
38
+ integrations -.-> components
39
+ components --> resources
40
+ resources --> internal
41
+ primitives -.-> sdk
42
+
43
+ classDef external fill:#f6f8fa,stroke-dasharray: 5 5
44
+ class sdk external
45
+ ```
46
+
47
+ **Reading the arrows:**
48
+
49
+ - **Solid arrows** are the default dependency path for a layer.
50
+ - **Dotted arrows** are allowed but discouraged — use them when the default
51
+ path does not cover your case, and consider whether the missing path is
52
+ a signal that something should be refactored.
53
+ - `integrations/` and `components/` are **peers**, not stacked. Both
54
+ sit directly above `resources/`. An integration's default path is a
55
+ facade (which is why `integrations ==> facades` is drawn bold); reaching
56
+ a primitive resource is fine when no facade fits; reaching into
57
+ `components/` is the escape hatch of last resort.
58
+ - `components/` never imports `integrations/`. Orchestration must stay
59
+ framework-agnostic — that is the entire reason integrations are a
60
+ separate layer.
61
+
62
+ ---
63
+
64
+ ## What goes where
65
+
66
+ ### `_internal/` — package-private primitives
67
+
68
+ Shared low-level helpers that are deliberately **not** part of the public
69
+ API. Think: HTTP plumbing, Pydantic helpers, time/string/exception utilities.
70
+
71
+ - **May import:** stdlib, third-party libs (Pydantic, etc.).
72
+ - **Must not import:** anything else in `experimental/`. This is the
73
+ bottom of the stack; it would be a dependency inversion.
74
+ - **Public exposure:** none. If something here is genuinely useful to
75
+ users, promote it into `resources/`, `components/`, or
76
+ `integrations/` — whichever layer fits — and re-export it there.
77
+
78
+ ### `resources/<name>/` — typed adapters over `unique_sdk`
79
+
80
+ One subfolder per SDK resource family. The canonical shape is:
81
+
82
+ ```
83
+ resources/<name>/
84
+ schemas.py # Pydantic models for request/response payloads
85
+ functions.py # (optional) free-standing sync + async call pairs
86
+ service.py # stateful, keyword-only class over functions.py
87
+ __init__.py # re-exports
88
+ ```
89
+
90
+ A module belongs here **iff** it could be deleted without losing any
91
+ functionality relative to raw `unique_sdk` usage — it's pure typing + a
92
+ slightly nicer call surface, nothing more.
93
+
94
+ - **May import:** `unique_sdk`, `_internal/`, stdlib, third-party libs.
95
+ - **Must not import:** sibling resources (see `facades/` below for the
96
+ exception), `components/`, `integrations/`.
97
+ - **Concrete examples in-tree today:** `user/`, `group/`,
98
+ `content_folder/`, `scheduled_task/`.
99
+ - **Resources** should be stateless classes
100
+
101
+ ### `resources/facades/<name>/` — aggregating resources
102
+
103
+ A **facade** (GoF pattern) is a resource-shaped object with no SDK calls
104
+ of its own that composes two or more sibling resources behind a single
105
+ `(user_id, company_id)` context. Constructor shape and keyword-only
106
+ convention match the sibling resources, so callers cannot tell the
107
+ difference at the call site.
108
+
109
+ Facades are the **preferred entry point for `integrations/`** — they give
110
+ framework adapters a single object to bridge instead of N resource
111
+ services to wire up individually.
112
+
113
+ - **May import:** two or more sibling `resources/<primitive>/` packages,
114
+ `_internal/`, stdlib, third-party libs.
115
+ - **Must not import:** `unique_sdk` directly (go through a sibling
116
+ resource instead — a facade that calls the SDK directly is actually a
117
+ primitive resource with an identity crisis), `components/`,
118
+ `integrations/`.
119
+ - **Test to decide "facade vs component":** if every public method is a
120
+ one-liner that forwards to a sub-resource attribute, it is a facade.
121
+ As soon as a method adds orchestration (parallel fan-out, caching,
122
+ derived views, retry/fallback, cross-resource validation), it belongs
123
+ in `components/` instead.
124
+ - **Concrete example in-tree today:** `facades/identity/` composes
125
+ `user/` + `group/` behind `Identity.users` / `Identity.groups`.
126
+
127
+ ### `components/<name>/` — behaviour beyond the SDK
128
+
129
+ Everything the SDK does not provide by itself: agent loops, evaluation,
130
+ rule compilation, tokenization, data extraction, derived views (e.g. a
131
+ trie over content), parallel pagination, post-processing.
132
+
133
+ - **May import:** `resources/` (primitives and facades), `_internal/`,
134
+ stdlib, third-party libs.
135
+ - **Must not import:** `integrations/`, `unique_sdk` directly (every SDK
136
+ call lives in a `resources/` module so there is exactly one place to
137
+ patch when the SDK changes).
138
+ - **Concrete example in-tree today:** `components/content_tree/` — a
139
+ derived trie + fuzzy-search view over the `content` resource.
140
+
141
+ ### `integrations/<framework>/` — third-party framework adapters
142
+
143
+ Leaf layer. One subfolder per external framework (OpenAI SDK, LangChain,
144
+ LlamaIndex, …). Every module here is a thin adapter that maps toolkit
145
+ types to a framework's types.
146
+
147
+ - **May import (default path):** `resources/facades/` — the one-object
148
+ entry point that a framework adapter typically wants to bridge.
149
+ - **May import (fine when no facade fits):** primitive `resources/<x>/`.
150
+ - **May import (escape hatch — discouraged):** `components/`. If you
151
+ reach for this, stop and consider: is the orchestration you need truly
152
+ framework-specific (then it belongs inside this `integrations/<x>/`
153
+ module)? Or is it general-purpose orchestration that any caller would
154
+ want (then it stays in `components/`, and you import it, but
155
+ double-check whether another integration will need the same pass and
156
+ whether a facade could replace the dependency entirely)?
157
+ - **Always may import:** `_internal/`, stdlib, third-party libs
158
+ (including the framework itself).
159
+ - **Must not import:** another `integrations/<framework>/` — each
160
+ framework adapter stands alone. Share code via `_internal/` or by
161
+ lifting it into `components/`.
162
+ - **Optional dependencies:** integrations that depend on libraries the
163
+ toolkit does not pin (e.g. LangChain) stay importable even when the
164
+ library is missing; the framework itself is loaded lazily inside the
165
+ adapter.
166
+
167
+ ---
168
+
169
+ ## Import-rule cheat sheet
170
+
171
+ | From ↓ \ May import → | `_internal` | `resources/<primitive>` | `resources/facades` | `components` | `integrations` |
172
+ | --- | :-: | :-: | :-: | :-: | :-: |
173
+ | `_internal` | — | no | no | no | no |
174
+ | `resources/<primitive>` | yes | no¹ | no | no | no |
175
+ | `resources/facades` | yes | **yes** | no² | no | no |
176
+ | `components` | yes | yes | yes | yes³ | no |
177
+ | `integrations/<framework>` | yes | ok⁴ | **yes** | discouraged⁵ | no⁶ |
178
+
179
+ ¹ A primitive resource imports only `unique_sdk`, not sibling resources.
180
+ If two primitives need to call each other, you have discovered a facade.
181
+
182
+ ² Facades do not import other facades; they compose primitives. Stacking
183
+ facades is an orchestration concern — that lives in `components/`.
184
+
185
+ ³ Importing a *sibling* module inside the same layer is fine when the
186
+ dependency is genuinely intra-layer (one component building on another).
187
+ Cross-layer is what the rules above constrain.
188
+
189
+ ⁴ Primitive resources are a fine fallback when no facade covers the
190
+ integration's use case. Prefer the facade when one exists so there is a
191
+ single bridge to maintain per framework.
192
+
193
+ ⁵ Allowed but flagged as a smell. Ask whether the orchestration you need
194
+ is framework-specific (belongs in this integration) or general-purpose
195
+ (stays in `components/`, possibly behind a new facade).
196
+
197
+ ⁶ One integration never imports another integration. Share via
198
+ `_internal/` or promote to `components/`.
199
+
200
+ ---
201
+
202
+ ## Decision tree — "I'm adding new code"
203
+
204
+ Walk the diagram top to bottom; the first **yes** wins. A **no** all the
205
+ way to the bottom is a signal that the module probably does not belong in
206
+ `experimental/` at all.
207
+
208
+ ```mermaid
209
+ flowchart TD
210
+ start(["I'm adding new code"])
211
+ q1{"Calls <b>unique_sdk</b> directly?"}
212
+ q2{"Resource-shaped facade —<br/>composes 2+ primitives with<br/>one-liner delegation methods?"}
213
+ q3{"Adds behaviour beyond the SDK<br/>(orchestration, parallelism,<br/>derived views, evaluation, …)<br/><b>and</b> framework-agnostic?"}
214
+ q4{"Adapter for a specific<br/>third-party framework?"}
215
+ q5{"Shared primitive with<br/>no public API story?"}
216
+
217
+ primitive["<b>resources/&lt;name&gt;/</b><br/>primitive resource"]
218
+ facade["<b>resources/facades/&lt;name&gt;/</b>"]
219
+ component["<b>components/&lt;name&gt;/</b>"]
220
+ integration["<b>integrations/&lt;framework&gt;/</b>"]
221
+ internal["<b>_internal/</b>"]
222
+ discuss["<i>Probably not experimental/ at all —<br/>open a discussion first</i>"]
223
+
224
+ start --> q1
225
+ q1 -- yes --> primitive
226
+ q1 -- no --> q2
227
+ q2 -- yes --> facade
228
+ q2 -- no --> q3
229
+ q3 -- yes --> component
230
+ q3 -- no --> q4
231
+ q4 -- yes --> integration
232
+ q4 -- no --> q5
233
+ q5 -- yes --> internal
234
+ q5 -- no --> discuss
235
+
236
+ classDef target fill:#e7f5ff,stroke:#1971c2,stroke-width:2px,color:#0b4a80
237
+ classDef escape fill:#fff4e6,stroke:#e8590c,color:#7a3b00
238
+ class primitive,facade,component,integration,internal target
239
+ class discuss escape
240
+ ```
241
+
242
+ ---
243
+
244
+ ## Experimental ≠ "hidden"
245
+
246
+ The point of `experimental/` is **staging**, not secrecy. Modules here are
247
+ expected to graduate into the stable tree once:
248
+
249
+ - their public API has survived at least one integration at a customer
250
+ site or internal app,
251
+ - the naming and boundaries match the final-state convention documented
252
+ above,
253
+ - they have tests and Google-style docstrings on public symbols.
254
+
255
+ Graduation is a straight-through move: delete the `experimental/` ancestor
256
+ from the import path, keep everything else identical. Because layers and
257
+ sub-bucket names are the same in both places, the graduation diff is a
258
+ `git mv` plus an import sweep — no architectural rework.
@@ -0,0 +1,21 @@
1
+ """Package-private primitives — not part of the public API.
2
+
3
+ Replaces the current :mod:`unique_toolkit._common` junk drawer. Modules
4
+ here are implementation details; anything users are expected to import must
5
+ be promoted into :mod:`..resources`, :mod:`..components`, or
6
+ :mod:`..integrations` first.
7
+
8
+ Planned contents (current home → new home):
9
+
10
+ * ``http`` ← :mod:`unique_toolkit._common.endpoint_builder`,
11
+ :mod:`unique_toolkit._common.endpoint_requestor`,
12
+ :mod:`unique_toolkit._common.api_calling`
13
+ * ``pydantic`` ← :mod:`unique_toolkit._common.pydantic`,
14
+ :mod:`unique_toolkit._common.pydantic_helpers`,
15
+ :mod:`unique_toolkit._common.validators`,
16
+ :mod:`unique_toolkit._common.base_model_type_attribute`
17
+ * ``utils`` ← :mod:`unique_toolkit._common.utils` plus the loose
18
+ modules in :mod:`unique_toolkit._common` (``_time_utils``,
19
+ ``string_utilities``, ``execution``, ``exception``, ``event_bus``,
20
+ ``referencing``, ``validate_required_values``, ``_base_service``)
21
+ """
@@ -0,0 +1,27 @@
1
+ """Components — orchestration and derived behaviour on top of :mod:`..resources`.
2
+
3
+ Everything here adds behavior the SDK does not provide: orchestration,
4
+ post-processing, evaluation, rule compilation, tokenization, etc. If a
5
+ module could be deleted without losing any functionality relative to raw
6
+ ``unique_sdk`` usage, it belongs in :mod:`..resources`, not here.
7
+
8
+ Planned contents (current home → new home):
9
+
10
+ * ``agentic`` ← :mod:`unique_toolkit.agentic`
11
+ (subpackages: ``tools``, ``loop_runner``, ``evaluation``,
12
+ ``managers`` — collects the sibling ``*_manager`` packages —,
13
+ ``feature_flags`` — single canonical home, collapses duplicates in
14
+ :mod:`unique_toolkit.app.feature_flags` and
15
+ :mod:`unique_toolkit._common.feature_flags`)
16
+ * ``data_extraction`` ← :mod:`unique_toolkit.data_extraction`
17
+ * ``smart_rules`` ← :mod:`unique_toolkit.smart_rules`
18
+ + :mod:`unique_toolkit.content.smart_rules` (unified)
19
+ * ``chunk_relevancy_sorter`` ← :mod:`unique_toolkit._common.chunk_relevancy_sorter`
20
+ * ``config_checker`` ← :mod:`unique_toolkit._common.config_checker`
21
+ * ``docx_generator`` ← :mod:`unique_toolkit._common.docx_generator`
22
+ * ``tokenization`` ← :mod:`unique_toolkit._common.token`
23
+ * ``content_tree`` ← :mod:`unique_toolkit.experimental.components.content_tree`
24
+ (re-export: :mod:`unique_toolkit.experimental.content_tree`); a derived
25
+ tree/fuzzy-search view over the ``content`` resource; does not wrap an SDK
26
+ endpoint of its own
27
+ """
@@ -7,7 +7,7 @@
7
7
 
8
8
  Typical usage::
9
9
 
10
- from unique_toolkit.experimental.content_tree import ContentTree
10
+ from unique_toolkit.experimental.components.content_tree import ContentTree
11
11
 
12
12
  tree = ContentTree.from_settings()
13
13
  print(await tree.render_visible_tree_async(max_depth=2))
@@ -16,16 +16,16 @@ Typical usage::
16
16
  The subpackage is split into three modules to mirror the rest of the
17
17
  ``content`` domain:
18
18
 
19
- - :mod:`unique_toolkit.experimental.content_tree.schemas` — data classes
19
+ - :mod:`unique_toolkit.experimental.components.content_tree.schemas` — data classes
20
20
  (:class:`PathTrieNode`, :class:`FuzzyMatch`, :data:`MatchTarget`).
21
- - :mod:`unique_toolkit.experimental.content_tree.functions` — pure helpers
21
+ - :mod:`unique_toolkit.experimental.components.content_tree.functions` — pure helpers
22
22
  for listing, scope-id resolution, trie construction, and ``tree(1)``-style
23
23
  formatting.
24
- - :mod:`unique_toolkit.experimental.content_tree.service` —
24
+ - :mod:`unique_toolkit.experimental.components.content_tree.service` —
25
25
  :class:`ContentTree`, the orchestrating service with per-instance caching.
26
26
  """
27
27
 
28
- from unique_toolkit.experimental.content_tree.functions import (
28
+ from unique_toolkit.experimental.components.content_tree.functions import (
29
29
  build_trie_from_resolved_paths,
30
30
  extract_scope_ids_from_content_infos,
31
31
  format_path_trie,
@@ -35,12 +35,12 @@ from unique_toolkit.experimental.content_tree.functions import (
35
35
  translate_scope_ids_async,
36
36
  translate_scope_ids_batch,
37
37
  )
38
- from unique_toolkit.experimental.content_tree.schemas import (
38
+ from unique_toolkit.experimental.components.content_tree.schemas import (
39
39
  FuzzyMatch,
40
40
  MatchTarget,
41
41
  PathTrieNode,
42
42
  )
43
- from unique_toolkit.experimental.content_tree.service import ContentTree
43
+ from unique_toolkit.experimental.components.content_tree.service import ContentTree
44
44
 
45
45
  __all__ = [
46
46
  "ContentTree",
@@ -1,6 +1,6 @@
1
1
  """Pure functions behind the content-tree view.
2
2
 
3
- These helpers are decoupled from :class:`~unique_toolkit.experimental.content_tree.service.ContentTree`
3
+ These helpers are decoupled from :class:`~unique_toolkit.experimental.components.content_tree.service.ContentTree`
4
4
  so that other callers (scripts, notebooks, ad-hoc tooling) can compose the same
5
5
  listing + scope-id-resolution logic without constructing a service instance.
6
6
 
@@ -29,9 +29,9 @@ from unique_toolkit.content.functions import (
29
29
  get_folder_info_async,
30
30
  )
31
31
  from unique_toolkit.content.schemas import ContentInfo, PaginatedContentInfos
32
- from unique_toolkit.experimental.content_tree.schemas import PathTrieNode
32
+ from unique_toolkit.experimental.components.content_tree.schemas import PathTrieNode
33
33
 
34
- _LOGGER = logging.getLogger(f"toolkit.experimental.content_tree.{__name__}")
34
+ _LOGGER = logging.getLogger(f"toolkit.experimental.components.content_tree.{__name__}")
35
35
 
36
36
 
37
37
  def serialize_filter(metadata_filter: dict[str, Any] | None) -> str:
@@ -5,10 +5,10 @@ These types describe the *shape* of a content-tree snapshot:
5
5
  - :class:`PathTrieNode` is the in-memory directory structure built from resolved
6
6
  file paths.
7
7
  - :class:`FuzzyMatch` is the result record returned by
8
- :meth:`unique_toolkit.experimental.content_tree.service.ContentTree.search_visible_files_fuzzy_async`.
8
+ :meth:`unique_toolkit.experimental.components.content_tree.service.ContentTree.search_visible_files_fuzzy_async`.
9
9
 
10
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`.
11
+ in the SDK/HTTP stack used by :mod:`unique_toolkit.experimental.components.content_tree.functions`.
12
12
  """
13
13
 
14
14
  from __future__ import annotations
@@ -12,7 +12,7 @@ user (via ``folderIdPath`` metadata) and exposes it through three lenses:
12
12
  The service is intentionally **decoupled** from
13
13
  :class:`~unique_toolkit.services.knowledge_base.KnowledgeBaseService`: it talks
14
14
  to the same backend through the functional helpers in
15
- :mod:`unique_toolkit.experimental.content_tree.functions` so it can be constructed and used
15
+ :mod:`unique_toolkit.experimental.components.content_tree.functions` so it can be constructed and used
16
16
  on its own.
17
17
  """
18
18
 
@@ -28,13 +28,13 @@ from typing import TYPE_CHECKING, Any, Protocol, Self, overload
28
28
  from unique_toolkit._common.validate_required_values import validate_required_values
29
29
  from unique_toolkit.app.unique_settings import UniqueSettings
30
30
  from unique_toolkit.content.schemas import ContentInfo
31
- from unique_toolkit.experimental.content_tree.functions import (
31
+ from unique_toolkit.experimental.components.content_tree.functions import (
32
32
  build_trie_from_resolved_paths,
33
33
  format_path_trie,
34
34
  resolve_visible_file_paths_core,
35
35
  serialize_filter,
36
36
  )
37
- from unique_toolkit.experimental.content_tree.schemas import (
37
+ from unique_toolkit.experimental.components.content_tree.schemas import (
38
38
  FuzzyMatch,
39
39
  MatchTarget,
40
40
  PathTrieNode,
@@ -67,7 +67,7 @@ class ContentTree:
67
67
  """Resolve visible content paths, render trees, and search files.
68
68
 
69
69
  The service is a thin orchestrator around the functional helpers in
70
- :mod:`unique_toolkit.experimental.content_tree.functions`. It takes the same identity
70
+ :mod:`unique_toolkit.experimental.components.content_tree.functions`. It takes the same identity
71
71
  parameters as the other toolkit services (``company_id`` / ``user_id`` /
72
72
  optional ``metadata_filter``) so it can be instantiated and tested without
73
73
  a :class:`~unique_toolkit.services.knowledge_base.KnowledgeBaseService`.
@@ -0,0 +1,35 @@
1
+ """Convenience re-export; implementation in :mod:`..components.content_tree`."""
2
+
3
+ from __future__ import annotations
4
+
5
+ from unique_toolkit.experimental.components.content_tree.functions import (
6
+ build_trie_from_resolved_paths,
7
+ extract_scope_ids_from_content_infos,
8
+ format_path_trie,
9
+ get_all_content_infos_async,
10
+ resolve_visible_file_paths_core,
11
+ translate_scope_id_async,
12
+ translate_scope_ids_async,
13
+ translate_scope_ids_batch,
14
+ )
15
+ from unique_toolkit.experimental.components.content_tree.schemas import (
16
+ FuzzyMatch,
17
+ MatchTarget,
18
+ PathTrieNode,
19
+ )
20
+ from unique_toolkit.experimental.components.content_tree.service import ContentTree
21
+
22
+ __all__ = [
23
+ "ContentTree",
24
+ "FuzzyMatch",
25
+ "MatchTarget",
26
+ "PathTrieNode",
27
+ "build_trie_from_resolved_paths",
28
+ "extract_scope_ids_from_content_infos",
29
+ "format_path_trie",
30
+ "get_all_content_infos_async",
31
+ "resolve_visible_file_paths_core",
32
+ "translate_scope_id_async",
33
+ "translate_scope_ids_async",
34
+ "translate_scope_ids_batch",
35
+ ]
@@ -0,0 +1,38 @@
1
+ """Barrel for the :class:`Identity` facade and related types.
2
+
3
+ The implementation lives in
4
+ :mod:`unique_toolkit.experimental.resources.facades.identity`; this package
5
+ re-exports the same public names for a shorter import path.
6
+ """
7
+
8
+ from __future__ import annotations
9
+
10
+ from unique_toolkit.experimental.resources.facades.identity.service import Identity
11
+ from unique_toolkit.experimental.resources.group import (
12
+ GroupDeleted,
13
+ GroupInfo,
14
+ GroupMember,
15
+ GroupMembership,
16
+ Groups,
17
+ GroupWithConfiguration,
18
+ )
19
+ from unique_toolkit.experimental.resources.user import (
20
+ UserGroupMembership,
21
+ UserInfo,
22
+ Users,
23
+ UserWithConfiguration,
24
+ )
25
+
26
+ __all__ = [
27
+ "GroupDeleted",
28
+ "GroupInfo",
29
+ "GroupMember",
30
+ "GroupMembership",
31
+ "GroupWithConfiguration",
32
+ "Groups",
33
+ "Identity",
34
+ "UserGroupMembership",
35
+ "UserInfo",
36
+ "UserWithConfiguration",
37
+ "Users",
38
+ ]
@@ -0,0 +1,12 @@
1
+ """Adapters for third-party frameworks.
2
+
3
+ Renamed from ``framework_utilities`` to reflect that these subpackages are
4
+ integrations with external libraries, not general-purpose utilities.
5
+
6
+ Planned contents (current home → new home):
7
+
8
+ * ``openai`` ← :mod:`unique_toolkit.framework_utilities.openai`
9
+ * ``langchain`` ← :mod:`unique_toolkit.framework_utilities.langchain`
10
+ (remains an optional dependency, surfaced via a conditional re-export in
11
+ the top-level ``__init__``)
12
+ """