unique-toolkit 2026.24.0.dev7__tar.gz → 2026.24.0.dev8__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 (404) hide show
  1. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/PKG-INFO +3 -2
  2. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/pyproject.toml +6 -4
  3. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/experimental/README.md +11 -9
  4. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/experimental/resources/__init__.py +3 -1
  5. unique_toolkit-2026.24.0.dev8/unique_toolkit/experimental/resources/feature_flags/README.md +183 -0
  6. unique_toolkit-2026.24.0.dev8/unique_toolkit/experimental/resources/feature_flags/__init__.py +43 -0
  7. unique_toolkit-2026.24.0.dev8/unique_toolkit/experimental/resources/feature_flags/_graphql_client.py +57 -0
  8. unique_toolkit-2026.24.0.dev8/unique_toolkit/experimental/resources/feature_flags/_ttl_cache.py +65 -0
  9. unique_toolkit-2026.24.0.dev8/unique_toolkit/experimental/resources/feature_flags/client.py +215 -0
  10. unique_toolkit-2026.24.0.dev8/unique_toolkit/experimental/resources/feature_flags/schemas.py +17 -0
  11. unique_toolkit-2026.24.0.dev8/unique_toolkit/experimental/resources/feature_flags/settings.py +33 -0
  12. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/README.md +0 -0
  13. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/__init__.py +0 -0
  14. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/_common/__init__.py +0 -0
  15. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/_common/_base_service.py +0 -0
  16. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/_common/_time_utils.py +0 -0
  17. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/_common/api_calling/human_verification_manager.py +0 -0
  18. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/_common/base_model_type_attribute.py +0 -0
  19. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/_common/chunk_relevancy_sorter/config.py +0 -0
  20. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/_common/chunk_relevancy_sorter/exception.py +0 -0
  21. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/_common/chunk_relevancy_sorter/schemas.py +0 -0
  22. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/_common/chunk_relevancy_sorter/service.py +0 -0
  23. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/_common/chunk_relevancy_sorter/tests/test_service.py +0 -0
  24. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/_common/config_checker/README.md +0 -0
  25. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/_common/config_checker/__init__.py +0 -0
  26. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/_common/config_checker/__main__.py +0 -0
  27. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/_common/config_checker/cli.py +0 -0
  28. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/_common/config_checker/differ.py +0 -0
  29. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/_common/config_checker/exporter.py +0 -0
  30. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/_common/config_checker/models.py +0 -0
  31. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/_common/config_checker/registry.py +0 -0
  32. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/_common/config_checker/validator.py +0 -0
  33. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/_common/default_language_model.py +0 -0
  34. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/_common/docx_generator/__init__.py +0 -0
  35. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/_common/docx_generator/config.py +0 -0
  36. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/_common/docx_generator/pandoc_converter.py +0 -0
  37. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/_common/docx_generator/schemas.py +0 -0
  38. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/_common/docx_generator/service.py +0 -0
  39. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/_common/docx_generator/template/Doc Template.docx +0 -0
  40. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/_common/endpoint_builder.py +0 -0
  41. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/_common/endpoint_requestor.py +0 -0
  42. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/_common/event_bus.py +0 -0
  43. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/_common/exception.py +0 -0
  44. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/_common/execution.py +0 -0
  45. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/_common/experimental/endpoint_builder.py +0 -0
  46. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/_common/experimental/endpoint_requestor.py +0 -0
  47. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/_common/experimental/write_up_agent/README.md +0 -0
  48. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/_common/experimental/write_up_agent/__init__.py +0 -0
  49. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/_common/experimental/write_up_agent/agent.py +0 -0
  50. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/_common/experimental/write_up_agent/config.py +0 -0
  51. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/_common/experimental/write_up_agent/examples/data.csv +0 -0
  52. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/_common/experimental/write_up_agent/examples/example_usage.py +0 -0
  53. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/_common/experimental/write_up_agent/schemas.py +0 -0
  54. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/_common/experimental/write_up_agent/services/__init__.py +0 -0
  55. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/_common/experimental/write_up_agent/services/dataframe_handler/__init__.py +0 -0
  56. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/_common/experimental/write_up_agent/services/dataframe_handler/exceptions.py +0 -0
  57. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/_common/experimental/write_up_agent/services/dataframe_handler/service.py +0 -0
  58. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/_common/experimental/write_up_agent/services/dataframe_handler/utils.py +0 -0
  59. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/__init__.py +0 -0
  60. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/config.py +0 -0
  61. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/exceptions.py +0 -0
  62. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/prompts/config.py +0 -0
  63. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/prompts/system_prompt.j2 +0 -0
  64. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/prompts/user_prompt.j2 +0 -0
  65. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/service.py +0 -0
  66. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/_common/experimental/write_up_agent/services/template_handler/__init__.py +0 -0
  67. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/_common/experimental/write_up_agent/services/template_handler/default_template.j2 +0 -0
  68. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/_common/experimental/write_up_agent/services/template_handler/exceptions.py +0 -0
  69. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/_common/experimental/write_up_agent/services/template_handler/service.py +0 -0
  70. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/_common/experimental/write_up_agent/services/template_handler/utils.py +0 -0
  71. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/_common/experimental/write_up_agent/utils.py +0 -0
  72. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/_common/feature_flags/schema.py +0 -0
  73. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/_common/metadata_filter_scope.py +0 -0
  74. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/_common/pydantic/rjsf_tags.py +0 -0
  75. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/_common/pydantic_helpers.py +0 -0
  76. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/_common/referencing.py +0 -0
  77. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/_common/string_utilities.py +0 -0
  78. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/_common/tests/test_referencing.py +0 -0
  79. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/_common/tests/test_string_utilities.py +0 -0
  80. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/_common/token/__init__.py +0 -0
  81. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/_common/token/image_token_counting.py +0 -0
  82. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/_common/token/token_counting.py +0 -0
  83. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/_common/token/tokenizers/deepseek/tokenizer.json +0 -0
  84. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/_common/token/tokenizers/qwen/tokenizer.json +0 -0
  85. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/_common/utils/__init__.py +0 -0
  86. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/_common/utils/files.py +0 -0
  87. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/_common/utils/image/encode.py +0 -0
  88. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/_common/utils/jinja/helpers.py +0 -0
  89. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/_common/utils/jinja/render.py +0 -0
  90. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/_common/utils/jinja/schema.py +0 -0
  91. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/_common/utils/jinja/utils.py +0 -0
  92. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/_common/utils/structured_output/__init__.py +0 -0
  93. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/_common/utils/structured_output/schema.py +0 -0
  94. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/_common/utils/write_configuration.py +0 -0
  95. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/_common/validate_required_values.py +0 -0
  96. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/_common/validators.py +0 -0
  97. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/agentic/__init__.py +0 -0
  98. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/agentic/debug_info_manager/debug_info_manager.py +0 -0
  99. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/agentic/debug_info_manager/test/test_debug_info_manager.py +0 -0
  100. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/agentic/evaluation/config.py +0 -0
  101. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/agentic/evaluation/context_relevancy/prompts/__init__.py +0 -0
  102. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/agentic/evaluation/context_relevancy/prompts/system_prompt.j2 +0 -0
  103. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/agentic/evaluation/context_relevancy/prompts/user_prompt.j2 +0 -0
  104. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/agentic/evaluation/context_relevancy/schema.py +0 -0
  105. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/agentic/evaluation/context_relevancy/service.py +0 -0
  106. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/agentic/evaluation/evaluation_manager.py +0 -0
  107. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/agentic/evaluation/exception.py +0 -0
  108. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/agentic/evaluation/hallucination/constants.py +0 -0
  109. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/agentic/evaluation/hallucination/hallucination_evaluation.py +0 -0
  110. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/agentic/evaluation/hallucination/prompts/__init__.py +0 -0
  111. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/agentic/evaluation/hallucination/prompts/system_prompt.j2 +0 -0
  112. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/agentic/evaluation/hallucination/prompts/user_prompt.j2 +0 -0
  113. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/agentic/evaluation/hallucination/service.py +0 -0
  114. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/agentic/evaluation/hallucination/utils.py +0 -0
  115. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/agentic/evaluation/output_parser.py +0 -0
  116. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/agentic/evaluation/schemas.py +0 -0
  117. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/agentic/evaluation/tests/fixtures.py +0 -0
  118. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/agentic/evaluation/tests/test_config.py +0 -0
  119. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/agentic/evaluation/tests/test_context_relevancy_service.py +0 -0
  120. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/agentic/evaluation/tests/test_hallucination_constants.py +0 -0
  121. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/agentic/evaluation/tests/test_hallucination_utils.py +0 -0
  122. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/agentic/evaluation/tests/test_output_parser.py +0 -0
  123. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/agentic/evaluation/tests/test_prompt_loaders.py +0 -0
  124. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/agentic/evaluation/utils.py +0 -0
  125. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/agentic/feature_flags/__init__.py +0 -0
  126. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/agentic/feature_flags/feature_flags.py +0 -0
  127. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/agentic/history_manager/history_construction_with_contents.py +0 -0
  128. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/agentic/history_manager/history_manager.py +0 -0
  129. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/agentic/history_manager/loop_token_reducer.py +0 -0
  130. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/agentic/history_manager/settings.py +0 -0
  131. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/agentic/history_manager/utils.py +0 -0
  132. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/agentic/loop_runner/__init__.py +0 -0
  133. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/agentic/loop_runner/_iteration_handler_utils.py +0 -0
  134. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/agentic/loop_runner/_responses_iteration_handler_utils.py +0 -0
  135. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/agentic/loop_runner/_responses_stream_handler_utils.py +0 -0
  136. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/agentic/loop_runner/_stream_handler_utils.py +0 -0
  137. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/agentic/loop_runner/base.py +0 -0
  138. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/agentic/loop_runner/middleware/__init__.py +0 -0
  139. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/agentic/loop_runner/middleware/planning/__init__.py +0 -0
  140. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/agentic/loop_runner/middleware/planning/planning.py +0 -0
  141. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/agentic/loop_runner/middleware/planning/schema.py +0 -0
  142. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/agentic/loop_runner/runners/__init__.py +0 -0
  143. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/agentic/loop_runner/runners/basic.py +0 -0
  144. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/agentic/loop_runner/runners/mistral/__init__.py +0 -0
  145. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/agentic/loop_runner/runners/mistral/mistral_runner.py +0 -0
  146. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/agentic/loop_runner/runners/qwen/__init__.py +0 -0
  147. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/agentic/loop_runner/runners/qwen/helpers.py +0 -0
  148. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/agentic/loop_runner/runners/qwen/qwen_runner.py +0 -0
  149. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/agentic/message_log_manager/__init__.py +0 -0
  150. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/agentic/message_log_manager/service.py +0 -0
  151. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/agentic/message_log_order.py +0 -0
  152. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/agentic/postprocessor/postprocessor_manager.py +0 -0
  153. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/agentic/reference_manager/reference_manager.py +0 -0
  154. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/agentic/responses_api/__init__.py +0 -0
  155. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/agentic/responses_api/postprocessors/code_display.py +0 -0
  156. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/agentic/responses_api/postprocessors/generated_files.py +0 -0
  157. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/agentic/responses_api/stream_handler.py +0 -0
  158. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/agentic/short_term_memory_manager/persistent_short_term_memory_manager.py +0 -0
  159. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/agentic/thinking_manager/thinking_manager.py +0 -0
  160. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/agentic/tools/__init__.py +0 -0
  161. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/agentic/tools/a2a/__init__.py +0 -0
  162. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/agentic/tools/a2a/config.py +0 -0
  163. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/agentic/tools/a2a/evaluation/__init__.py +0 -0
  164. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/agentic/tools/a2a/evaluation/_utils.py +0 -0
  165. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/agentic/tools/a2a/evaluation/config.py +0 -0
  166. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/agentic/tools/a2a/evaluation/evaluator.py +0 -0
  167. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/agentic/tools/a2a/evaluation/summarization_user_message.j2 +0 -0
  168. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/agentic/tools/a2a/manager.py +0 -0
  169. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/agentic/tools/a2a/postprocessing/__init__.py +0 -0
  170. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/agentic/tools/a2a/postprocessing/_display_utils.py +0 -0
  171. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/agentic/tools/a2a/postprocessing/_ref_utils.py +0 -0
  172. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/agentic/tools/a2a/postprocessing/config.py +0 -0
  173. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/agentic/tools/a2a/postprocessing/display.py +0 -0
  174. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/agentic/tools/a2a/postprocessing/references.py +0 -0
  175. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/agentic/tools/a2a/postprocessing/test/test_display.py +0 -0
  176. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/agentic/tools/a2a/postprocessing/test/test_display_utils.py +0 -0
  177. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/agentic/tools/a2a/postprocessing/test/test_ref_utils.py +0 -0
  178. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/agentic/tools/a2a/postprocessing/test/test_references.py +0 -0
  179. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/agentic/tools/a2a/prompts.py +0 -0
  180. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/agentic/tools/a2a/response_watcher/__init__.py +0 -0
  181. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/agentic/tools/a2a/response_watcher/service.py +0 -0
  182. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/agentic/tools/a2a/tool/__init__.py +0 -0
  183. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/agentic/tools/a2a/tool/_memory.py +0 -0
  184. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/agentic/tools/a2a/tool/_schema.py +0 -0
  185. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/agentic/tools/a2a/tool/config.py +0 -0
  186. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/agentic/tools/a2a/tool/service.py +0 -0
  187. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/agentic/tools/a2a/tool/test/test_service_utils.py +0 -0
  188. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/agentic/tools/agent_chunks_hanlder.py +0 -0
  189. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/agentic/tools/config.py +0 -0
  190. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/agentic/tools/experimental/__init__.py +0 -0
  191. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/agentic/tools/experimental/open_file_tool/__init__.py +0 -0
  192. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/agentic/tools/experimental/open_file_tool/config.py +0 -0
  193. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/agentic/tools/experimental/open_file_tool/runtime.py +0 -0
  194. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/agentic/tools/experimental/open_file_tool/tool.py +0 -0
  195. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/agentic/tools/experimental/retrieve_search_scope_tool/__init__.py +0 -0
  196. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/agentic/tools/experimental/retrieve_search_scope_tool/config.py +0 -0
  197. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/agentic/tools/experimental/retrieve_search_scope_tool/tool.py +0 -0
  198. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/agentic/tools/experimental/todo/__init__.py +0 -0
  199. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/agentic/tools/experimental/todo/config.py +0 -0
  200. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/agentic/tools/experimental/todo/prompts/__init__.py +0 -0
  201. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/agentic/tools/experimental/todo/prompts/execution_reminder.j2 +0 -0
  202. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/agentic/tools/experimental/todo/prompts/system_prompt.j2 +0 -0
  203. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/agentic/tools/experimental/todo/prompts/tool_description.j2 +0 -0
  204. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/agentic/tools/experimental/todo/prompts/verification_nudge.j2 +0 -0
  205. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/agentic/tools/experimental/todo/schemas.py +0 -0
  206. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/agentic/tools/experimental/todo/service.py +0 -0
  207. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/agentic/tools/factory.py +0 -0
  208. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/agentic/tools/mcp/__init__.py +0 -0
  209. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/agentic/tools/mcp/manager.py +0 -0
  210. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/agentic/tools/mcp/models.py +0 -0
  211. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/agentic/tools/mcp/tool_wrapper.py +0 -0
  212. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/agentic/tools/names.py +0 -0
  213. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/agentic/tools/openai_builtin/__init__.py +0 -0
  214. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/agentic/tools/openai_builtin/base.py +0 -0
  215. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/__init__.py +0 -0
  216. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/config.py +0 -0
  217. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/postprocessors/__init__.py +0 -0
  218. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/postprocessors/artifacts.py +0 -0
  219. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/postprocessors/code_display.py +0 -0
  220. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/postprocessors/generated_files.py +0 -0
  221. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/schemas.py +0 -0
  222. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/service.py +0 -0
  223. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/agentic/tools/openai_builtin/manager.py +0 -0
  224. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/agentic/tools/schemas.py +0 -0
  225. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/agentic/tools/test/test_mcp_manager.py +0 -0
  226. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/agentic/tools/test/test_tool_progress_reporter.py +0 -0
  227. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/agentic/tools/tool.py +0 -0
  228. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/agentic/tools/tool_manager.py +0 -0
  229. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/agentic/tools/tool_progress_reporter.py +0 -0
  230. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/agentic/tools/utils/__init__.py +0 -0
  231. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/agentic/tools/utils/source_handling/__init__.py +0 -0
  232. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/agentic/tools/utils/source_handling/schema.py +0 -0
  233. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/agentic/tools/utils/source_handling/source_formatting.py +0 -0
  234. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/agentic/tools/utils/source_handling/tests/test_source_formatting.py +0 -0
  235. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/agentic_table/__init__.py +0 -0
  236. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/agentic_table/schemas.py +0 -0
  237. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/agentic_table/service.py +0 -0
  238. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/app/__init__.py +0 -0
  239. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/app/chat_event_filter_options_settings.py +0 -0
  240. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/app/dev_util.py +0 -0
  241. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/app/fast_api_factory.py +0 -0
  242. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/app/feature_flags.py +0 -0
  243. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/app/find_env_file.py +0 -0
  244. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/app/init_logging.py +0 -0
  245. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/app/init_sdk.py +0 -0
  246. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/app/performance/async_tasks.py +0 -0
  247. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/app/performance/async_wrapper.py +0 -0
  248. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/app/schemas.py +0 -0
  249. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/app/unique_settings.py +0 -0
  250. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/app/verification.py +0 -0
  251. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/app/webhook.py +0 -0
  252. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/chat/__init__.py +0 -0
  253. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/chat/cancellation.py +0 -0
  254. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/chat/constants.py +0 -0
  255. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/chat/deprecated/service.py +0 -0
  256. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/chat/functions.py +0 -0
  257. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/chat/rendering.py +0 -0
  258. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/chat/responses_api.py +0 -0
  259. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/chat/schemas.py +0 -0
  260. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/chat/service.py +0 -0
  261. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/chat/state.py +0 -0
  262. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/chat/utils.py +0 -0
  263. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/content/__init__.py +0 -0
  264. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/content/constants.py +0 -0
  265. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/content/functions.py +0 -0
  266. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/content/schemas.py +0 -0
  267. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/content/service.py +0 -0
  268. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/content/smart_rules.py +0 -0
  269. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/content/utils.py +0 -0
  270. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/data_extraction/README.md +0 -0
  271. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/data_extraction/__init__.py +0 -0
  272. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/data_extraction/augmented/__init__.py +0 -0
  273. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/data_extraction/augmented/service.py +0 -0
  274. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/data_extraction/base.py +0 -0
  275. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/data_extraction/basic/__init__.py +0 -0
  276. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/data_extraction/basic/config.py +0 -0
  277. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/data_extraction/basic/prompt.py +0 -0
  278. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/data_extraction/basic/service.py +0 -0
  279. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/elicitation/__init__.py +0 -0
  280. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/elicitation/constants.py +0 -0
  281. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/elicitation/exceptions.py +0 -0
  282. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/elicitation/functions.py +0 -0
  283. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/elicitation/schemas.py +0 -0
  284. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/elicitation/service.py +0 -0
  285. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/embedding/__init__.py +0 -0
  286. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/embedding/constants.py +0 -0
  287. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/embedding/functions.py +0 -0
  288. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/embedding/schemas.py +0 -0
  289. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/embedding/service.py +0 -0
  290. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/embedding/utils.py +0 -0
  291. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/experimental/__init__.py +0 -0
  292. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/experimental/_internal/__init__.py +0 -0
  293. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/experimental/_internal/streaming/__init__.py +0 -0
  294. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/experimental/_internal/streaming/common.py +0 -0
  295. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/experimental/_internal/streaming/pattern_replacer.py +0 -0
  296. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/experimental/components/__init__.py +0 -0
  297. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/experimental/components/_base.py +0 -0
  298. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/experimental/components/content_tree/__init__.py +0 -0
  299. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/experimental/components/content_tree/functions.py +0 -0
  300. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/experimental/components/content_tree/schemas.py +0 -0
  301. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/experimental/components/content_tree/service.py +0 -0
  302. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/experimental/components/internal_search/__init__.py +0 -0
  303. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/experimental/components/internal_search/base/__init__.py +0 -0
  304. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/experimental/components/internal_search/base/config.py +0 -0
  305. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/experimental/components/internal_search/base/schemas.py +0 -0
  306. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/experimental/components/internal_search/base/service.py +0 -0
  307. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/experimental/components/internal_search/base/utils.py +0 -0
  308. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/experimental/components/internal_search/chat/__init__.py +0 -0
  309. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/experimental/components/internal_search/chat/config.py +0 -0
  310. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/experimental/components/internal_search/chat/schemas.py +0 -0
  311. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/experimental/components/internal_search/chat/service.py +0 -0
  312. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/experimental/components/internal_search/knowledge_base/__init__.py +0 -0
  313. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/experimental/components/internal_search/knowledge_base/config.py +0 -0
  314. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/experimental/components/internal_search/knowledge_base/schemas.py +0 -0
  315. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/experimental/components/internal_search/knowledge_base/service.py +0 -0
  316. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/experimental/components/internal_search/post_processing/__init__.py +0 -0
  317. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/experimental/components/internal_search/post_processing/config.py +0 -0
  318. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/experimental/components/internal_search/post_processing/service.py +0 -0
  319. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/experimental/content_tree/__init__.py +0 -0
  320. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/experimental/identity/__init__.py +0 -0
  321. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/experimental/integrations/__init__.py +0 -0
  322. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/experimental/integrations/openai/__init__.py +0 -0
  323. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/experimental/integrations/openai/streaming/__init__.py +0 -0
  324. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/__init__.py +0 -0
  325. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/_async_bridge.py +0 -0
  326. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/chat_completions/__init__.py +0 -0
  327. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/chat_completions/complete_with_references.py +0 -0
  328. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/chat_completions/stream_event_router.py +0 -0
  329. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/chat_completions/text_event_handler.py +0 -0
  330. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/chat_completions/tool_call_event_handler.py +0 -0
  331. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/events.py +0 -0
  332. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/protocols/__init__.py +0 -0
  333. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/protocols/chat_completions.py +0 -0
  334. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/protocols/responses.py +0 -0
  335. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/responses/__init__.py +0 -0
  336. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/responses/code_interpreter_event_handler.py +0 -0
  337. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/responses/complete_with_references.py +0 -0
  338. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/responses/completed_event_handler.py +0 -0
  339. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/responses/stream_event_router.py +0 -0
  340. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/responses/text_delta_event_handler.py +0 -0
  341. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/responses/tool_call_event_handler.py +0 -0
  342. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/subscribers/__init__.py +0 -0
  343. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/subscribers/message_persister.py +0 -0
  344. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/subscribers/progress_log_persister.py +0 -0
  345. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/experimental/resources/content_folder/__init__.py +0 -0
  346. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/experimental/resources/content_folder/functions.py +0 -0
  347. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/experimental/resources/content_folder/schemas.py +0 -0
  348. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/experimental/resources/content_folder/service.py +0 -0
  349. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/experimental/resources/facades/__init__.py +0 -0
  350. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/experimental/resources/facades/identity/__init__.py +0 -0
  351. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/experimental/resources/facades/identity/service.py +0 -0
  352. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/experimental/resources/group/__init__.py +0 -0
  353. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/experimental/resources/group/functions.py +0 -0
  354. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/experimental/resources/group/schemas.py +0 -0
  355. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/experimental/resources/group/service.py +0 -0
  356. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/experimental/resources/scheduled_task/__init__.py +0 -0
  357. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/experimental/resources/scheduled_task/cron.py +0 -0
  358. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/experimental/resources/scheduled_task/functions.py +0 -0
  359. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/experimental/resources/scheduled_task/schemas.py +0 -0
  360. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/experimental/resources/scheduled_task/service.py +0 -0
  361. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/experimental/resources/user/__init__.py +0 -0
  362. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/experimental/resources/user/functions.py +0 -0
  363. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/experimental/resources/user/schemas.py +0 -0
  364. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/experimental/resources/user/service.py +0 -0
  365. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/experimental/testing/__init__.py +0 -0
  366. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/framework_utilities/__init__.py +0 -0
  367. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/framework_utilities/langchain/__init__.py +0 -0
  368. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/framework_utilities/langchain/client.py +0 -0
  369. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/framework_utilities/langchain/history.py +0 -0
  370. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/framework_utilities/openai/__init__.py +0 -0
  371. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/framework_utilities/openai/client.py +0 -0
  372. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/framework_utilities/openai/message_builder.py +0 -0
  373. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/framework_utilities/utils.py +0 -0
  374. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/language_model/__init__.py +0 -0
  375. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/language_model/_responses_api_utils.py +0 -0
  376. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/language_model/builder.py +0 -0
  377. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/language_model/constants.py +0 -0
  378. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/language_model/default_language_model.py +0 -0
  379. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/language_model/functions.py +0 -0
  380. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/language_model/infos.py +0 -0
  381. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/language_model/prompt.py +0 -0
  382. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/language_model/reference.py +0 -0
  383. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/language_model/schemas.py +0 -0
  384. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/language_model/service.py +0 -0
  385. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/language_model/settings.py +0 -0
  386. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/language_model/stream_transform.py +0 -0
  387. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/language_model/utils.py +0 -0
  388. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/monitoring/__init__.py +0 -0
  389. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/monitoring/gunicorn.py +0 -0
  390. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/monitoring/middleware.py +0 -0
  391. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/monitoring/registry.py +0 -0
  392. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/protocols/support.py +0 -0
  393. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/services/__init__.py +0 -0
  394. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/services/chat_service.py +0 -0
  395. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/services/factory.py +0 -0
  396. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/services/knowledge_base.py +0 -0
  397. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/short_term_memory/__init__.py +0 -0
  398. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/short_term_memory/constants.py +0 -0
  399. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/short_term_memory/functions.py +0 -0
  400. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/short_term_memory/schemas.py +0 -0
  401. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/short_term_memory/service.py +0 -0
  402. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/smart_rules/__init__.py +0 -0
  403. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/unique_toolkit/smart_rules/compile.py +0 -0
  404. {unique_toolkit-2026.24.0.dev7 → unique_toolkit-2026.24.0.dev8}/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.24.0.dev7
3
+ Version: 2026.24.0.dev8
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.24.0.dev2,<2026.24.0rc0
19
+ Requires-Dist: unique-sdk>=2026.24.0.dev3,<2026.24.0rc0
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
@@ -31,6 +31,7 @@ Requires-Dist: deepdiff>=8.6.1,<9
31
31
  Requires-Dist: pypandoc>=1.16.2,<2
32
32
  Requires-Dist: tenacity>=9.1.4
33
33
  Requires-Dist: pydantic-core>=2.41.5
34
+ Requires-Dist: cachetools>=5.0,<6
34
35
  Requires-Dist: fastapi>=0.121.0,<0.122 ; extra == 'fastapi'
35
36
  Requires-Dist: starlette>=0.49.1 ; extra == 'fastapi'
36
37
  Requires-Dist: uvicorn>=0.37.0,<0.38 ; extra == 'fastapi'
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "unique_toolkit"
3
- version = "2026.24.0.dev7"
3
+ version = "2026.24.0.dev8"
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.24.0.dev2,<2026.24.0rc0",
31
+ "unique-sdk>=2026.24.0.dev3,<2026.24.0rc0",
32
32
  "jambo>=0.1.2,<0.2",
33
33
  "jinja2>=3.1.6,<4",
34
34
  "docxtpl>=0.20.1,<0.21",
@@ -43,6 +43,7 @@ dependencies = [
43
43
  "pypandoc>=1.16.2,<2",
44
44
  "tenacity>=9.1.4",
45
45
  "pydantic-core>=2.41.5",
46
+ "cachetools>=5.0,<6",
46
47
  ]
47
48
 
48
49
  [project.optional-dependencies]
@@ -60,7 +61,6 @@ fastapi = [
60
61
  monitoring = [
61
62
  "prometheus_client>=0.24.1,<1",
62
63
  ]
63
-
64
64
  [build-system]
65
65
  requires = ["uv_build>=0.8.14,<0.9.0"]
66
66
  build-backend = "uv_build"
@@ -69,7 +69,9 @@ build-backend = "uv_build"
69
69
  module-root = ""
70
70
 
71
71
  [dependency-groups]
72
- dev = []
72
+ dev = [
73
+ "types-cachetools>=5.0,<6",
74
+ ]
73
75
 
74
76
  [tool.uv]
75
77
  exclude-newer = "2 weeks"
@@ -31,7 +31,7 @@ flowchart TD
31
31
  end
32
32
 
33
33
  internal["<b>_internal/</b><br/><i>package-private primitives</i>"]
34
- sdk[("<b>unique_sdk</b><br/><i>external</i>")]
34
+ sdk[("<b>unique_sdk / config-backend / …</b><br/><i>internal Unique AI backends</i>")]
35
35
 
36
36
  integrations ==> facades
37
37
  integrations -.-> primitives
@@ -75,9 +75,9 @@ API. Think: HTTP plumbing, Pydantic helpers, time/string/exception utilities.
75
75
  users, promote it into `resources/`, `components/`, or
76
76
  `integrations/` — whichever layer fits — and re-export it there.
77
77
 
78
- ### `resources/<name>/` — typed adapters over `unique_sdk`
78
+ ### `resources/<name>/` — typed adapters over internal Unique AI backends
79
79
 
80
- One subfolder per SDK resource family. The canonical shape is:
80
+ One subfolder per backend resource family. The canonical shape is:
81
81
 
82
82
  ```
83
83
  resources/<name>/
@@ -87,15 +87,17 @@ resources/<name>/
87
87
  __init__.py # re-exports
88
88
  ```
89
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.
90
+ "Backend" is deliberately broad: `unique_sdk`, configuration-backend,
91
+ and any other internal Unique AI service are all valid targets. A module
92
+ belongs here **iff** it is a thin, typed adapter — pure schemas + a
93
+ slightly nicer call surface — with no cross-cutting orchestration of its
94
+ own.
93
95
 
94
96
  - **May import:** `unique_sdk`, `_internal/`, stdlib, third-party libs.
95
97
  - **Must not import:** sibling resources (see `facades/` below for the
96
98
  exception), `components/`, `integrations/`.
97
99
  - **Concrete examples in-tree today:** `user/`, `group/`,
98
- `content_folder/`, `scheduled_task/`.
100
+ `content_folder/`, `scheduled_task/`, `feature_flags/`.
99
101
  - **Resources** should be stateless classes
100
102
 
101
103
  ### `resources/facades/<name>/` — aggregating resources
@@ -208,7 +210,7 @@ way to the bottom is a signal that the module probably does not belong in
208
210
  ```mermaid
209
211
  flowchart TD
210
212
  start(["I'm adding new code"])
211
- q1{"Calls <b>unique_sdk</b> directly?"}
213
+ q1{"Typed adapter over an internal<br/>Unique AI backend<br/>(unique_sdk, config-backend, …)?"}
212
214
  q2{"Resource-shaped facade —<br/>composes 2+ primitives with<br/>one-liner delegation methods?"}
213
215
  q3{"Adds behaviour beyond the SDK<br/>(orchestration, parallelism,<br/>derived views, evaluation, …)<br/><b>and</b> framework-agnostic?"}
214
216
  q4{"Adapter for a specific<br/>third-party framework?"}
@@ -223,7 +225,7 @@ flowchart TD
223
225
 
224
226
  start --> q1
225
227
  q1 -- yes --> primitive
226
- q1 -- no --> q2
228
+ q1 -- no --> q2
227
229
  q2 -- yes --> facade
228
230
  q2 -- no --> q3
229
231
  q3 -- yes --> component
@@ -1,4 +1,4 @@
1
- """Typed adapters over ``unique_sdk``.
1
+ """Typed adapters over internal Unique AI backends (``unique_sdk``, configuration-backend, etc.).
2
2
 
3
3
  Thin wrappers around individual SDK resources that add little beyond
4
4
  Pydantic schemas and sync/async function pairs. The canonical shape is::
@@ -53,6 +53,8 @@ Planned contents (current home → new home):
53
53
  * ``scheduled_task`` ← :mod:`unique_toolkit.experimental.scheduled_task`
54
54
  * ``facades.identity`` ← :mod:`unique_toolkit.experimental.identity`
55
55
  (the :class:`Identity` facade bundling the :class:`Users` and :class:`Groups` services)
56
+ * ``feature_flags`` — configuration-backend GraphQL adapter; evaluates feature flags
57
+ with TTL cache, stale-value fallback, and env-var fallback
56
58
 
57
59
  One thing that *looks* like it should live here but does not:
58
60
 
@@ -0,0 +1,183 @@
1
+ # `feature_flags` — Python feature flag client
2
+
3
+ Remote feature flag evaluation backed by configuration-backend's GraphQL API,
4
+ with in-process TTL caching and graceful env-var fallback.
5
+
6
+ Mirrors the OpenFeature `evaluate` / `isEnabled` semantics used by the
7
+ Node.js `@unique/feature-flags` package. The OpenFeature Python SDK is
8
+ deliberately **not** used as a dependency — the interface is implemented
9
+ directly to avoid SDK overhead.
10
+
11
+ ---
12
+
13
+ ## Environment variables
14
+
15
+ | Variable | Required | Default | Description |
16
+ |---|---|---|---|
17
+ | `CONFIGURATION_BACKEND_URL` | **Yes** | — | Base URL of your configuration-backend instance. |
18
+ | `FEATURE_FLAG_SERVICE_ID` | **Yes** | — | Service identifier sent as `x-service-id`. Must match a registered value in configuration-backend's `Service` enum. |
19
+ | `FEATURE_FLAG_CACHE_TTL_MS` | No | `5000` | In-process cache TTL in milliseconds. |
20
+
21
+ ---
22
+
23
+ ## `flag` argument convention
24
+
25
+ The `flag` argument to `evaluate()` / `is_enabled()` must be the
26
+ **upper-snake env-var-style key**, e.g.:
27
+
28
+ ```
29
+ FEATURE_FLAG_ENABLE_MY_FEATURE
30
+ FEATURE_FLAG_ENABLE_OTHER_FEATURE_UN_12345
31
+ ```
32
+
33
+ This matches both the configuration-backend registry key convention and the
34
+ existing env-var names in Python services, so the env-var fallback path
35
+ requires no transformation.
36
+
37
+ Define flag name constants in your service (not in the toolkit) to avoid
38
+ magic strings:
39
+
40
+ ```python
41
+ # in your service
42
+ class MyServiceFlags:
43
+ ENABLE_MY_FEATURE = "FEATURE_FLAG_ENABLE_MY_FEATURE"
44
+ ENABLE_OTHER_FEATURE = "FEATURE_FLAG_ENABLE_OTHER_FEATURE_UN_12345"
45
+ ```
46
+
47
+ ---
48
+
49
+ ## Usage
50
+
51
+ ### Constructor injection (recommended for testing)
52
+
53
+ ```python
54
+ from unique_toolkit.experimental.resources.feature_flags import FeatureFlagClient
55
+
56
+ client = FeatureFlagClient(
57
+ url="https://your-configuration-backend",
58
+ service_id="my-service",
59
+ ttl_ms=5_000,
60
+ )
61
+
62
+ result = await client.evaluate(
63
+ "FEATURE_FLAG_ENABLE_MY_FEATURE",
64
+ company_id=company_id,
65
+ user_id=user_id,
66
+ )
67
+ # result.value → bool
68
+ # result.reason → "remote" | "cached" | "stale" | "fallback"
69
+
70
+ enabled = await client.is_enabled(
71
+ "FEATURE_FLAG_ENABLE_MY_FEATURE",
72
+ company_id=company_id,
73
+ user_id=user_id,
74
+ )
75
+ ```
76
+
77
+ ### `from_settings()` factory (recommended for services)
78
+
79
+ `from_settings()` is a process-level singleton — repeated calls always return
80
+ the same instance, keeping the TTL cache warm across requests.
81
+
82
+ ```python
83
+ # Call lazily — inside a request handler or app startup hook,
84
+ # NOT at module import time. Env vars must be fully injected before
85
+ # the first call or a ValueError is raised.
86
+ client = FeatureFlagClient.from_settings()
87
+ ```
88
+
89
+ > **⚠️ Do not call `from_settings()` at module level.** In some container
90
+ > runtimes, env vars are not yet available when Python modules are imported.
91
+ > Call it inside your app's startup hook or on first request.
92
+
93
+ ### `bind_settings()` — per-request bound client
94
+
95
+ For services that use `UniqueSettings` / `AuthContext`, bind the singleton
96
+ once per request to avoid passing `company_id` / `user_id` at every call site:
97
+
98
+ ```python
99
+ from unique_toolkit.experimental.resources.feature_flags import (
100
+ BoundFeatureFlagClient,
101
+ FeatureFlagClient,
102
+ )
103
+
104
+ # once at startup
105
+ client = FeatureFlagClient.from_settings()
106
+
107
+ # once per request (settings carries company_id / user_id)
108
+ bound: BoundFeatureFlagClient = client.bind_settings(settings)
109
+
110
+ if await bound.is_enabled("FEATURE_FLAG_ENABLE_MY_FEATURE"):
111
+ ...
112
+ ```
113
+
114
+ ---
115
+
116
+ ## Evaluation order
117
+
118
+ 1. **TTL cache** — returns the cached value if present (within the TTL window).
119
+ 2. **Remote** — calls configuration-backend's `evaluateFlag` GraphQL query.
120
+ One retry on transient 5xx errors.
121
+ 3. **Stale cache** — on failure, returns the last successfully fetched value
122
+ for this `(flag, company_id, user_id)` key if one exists.
123
+ 4. **Env-var fallback** — if no stale value is available, reads the flag's
124
+ env var. Supports plain booleans (`"true"` / `"false"`) and
125
+ comma-separated company-ID allowlists (`"company1,company2"`), consistent
126
+ with `unique_toolkit.agentic.feature_flags.FeatureFlags`.
127
+
128
+ ```mermaid
129
+ flowchart TD
130
+ A(["evaluate(flag, company_id)"]) --> B{TTL cache hit?}
131
+
132
+ B -- yes --> C([return value, reason=cached])
133
+
134
+ B -- no --> D[fetch from\nconfiguration-backend GraphQL]
135
+ D -- 200 OK --> E[store in TTL cache\n+ stale cache]
136
+ E --> F([return value, reason=remote])
137
+
138
+ D -- 5xx --> G[retry once]
139
+ G -- 200 OK --> E
140
+ G -- 5xx again --> L[⚠ log.warning\nfetch failed — trying stale cache]
141
+
142
+ D -- timeout / network error --> L
143
+ L --> H{stale cache hit?}
144
+
145
+ H -- yes --> M[⚠ log.warning\nstale cache hit]
146
+ M --> I([return stale value, reason=stale])
147
+
148
+ H -- no --> N[⚠ log.warning\nno stale value — env var fallback]
149
+ N --> J[read env var\nbool or company-ID allowlist]
150
+ J --> K([return env value, reason=fallback])
151
+
152
+ style C fill:#22c55e,color:#fff
153
+ style F fill:#22c55e,color:#fff
154
+ style I fill:#f59e0b,color:#fff
155
+ style K fill:#ef4444,color:#fff
156
+ style L fill:#fef9c3,color:#713f12
157
+ style M fill:#fef9c3,color:#713f12
158
+ style N fill:#fef9c3,color:#713f12
159
+ ```
160
+
161
+ ---
162
+
163
+ ## `FlagEvaluation.reason` values
164
+
165
+ | Value | Meaning |
166
+ |---|---|
167
+ | `"remote"` | Value was freshly fetched from configuration-backend. |
168
+ | `"cached"` | Value was returned from the in-process TTL cache. |
169
+ | `"stale"` | Transport error; last-known-good value for this company returned. |
170
+ | `"fallback"` | No prior value available; env-var default used. |
171
+
172
+ ---
173
+
174
+ ## Adopting in another Python service
175
+
176
+ 1. Install `unique-toolkit` (cachetools is a core dep, no extra group needed): `uv add unique-toolkit`
177
+ 2. Set env vars: `CONFIGURATION_BACKEND_URL`, `FEATURE_FLAG_SERVICE_ID`
178
+ 3. Add the service ID to configuration-backend's `Service` enum (`tyk-auth`)
179
+ and to the `@AllowAccess` whitelist on the `evaluateFlag` resolver.
180
+ 4. Register any new flag keys in `feature-flag.registry.ts`.
181
+ 5. Define flag name constants in your service (see convention above).
182
+ 6. Replace `os.getenv("FEATURE_FLAG_*", "false")` call sites with
183
+ `await client.is_enabled("FEATURE_FLAG_*", company_id=..., user_id=...)`.
@@ -0,0 +1,43 @@
1
+ """Feature flag client backed by configuration-backend's GraphQL API.
2
+
3
+ Evaluates flags remotely with a 5 s TTL cache, stale-value fallback on
4
+ transport errors, and env-var fallback when no prior value exists.
5
+ Env-var values support both plain booleans and comma-separated company-ID
6
+ allowlists, consistent with ``unique_toolkit.agentic.feature_flags``.
7
+
8
+ Required env vars::
9
+
10
+ CONFIGURATION_BACKEND_URL=https://<your-configuration-backend>
11
+ FEATURE_FLAG_SERVICE_ID=your-service-name
12
+
13
+ Quick start — explicit IDs::
14
+
15
+ from unique_toolkit.experimental.resources.feature_flags import FeatureFlagClient
16
+
17
+ client = FeatureFlagClient.from_settings() # singleton; call at startup or first request
18
+ enabled = await client.is_enabled("FEATURE_FLAG_ENABLE_X", company_id=company_id)
19
+
20
+ Per-request binding (when you have UniqueSettings / AuthContext)::
21
+
22
+ bound = client.bind_settings(settings) # bind once per request
23
+ enabled = await bound.is_enabled("FEATURE_FLAG_ENABLE_X")
24
+
25
+ Define flag name constants in your service to avoid magic strings::
26
+
27
+ class MyServiceFlags:
28
+ ENABLE_X = "FEATURE_FLAG_ENABLE_X"
29
+ ENABLE_Y = "FEATURE_FLAG_ENABLE_Y"
30
+
31
+ See README.md for the full evaluation-order diagram and adoption steps.
32
+ """
33
+
34
+ from .client import BoundFeatureFlagClient, FeatureFlagClient
35
+ from .schemas import FlagEvaluation
36
+ from .settings import FeatureFlagSettings
37
+
38
+ __all__ = [
39
+ "BoundFeatureFlagClient",
40
+ "FeatureFlagClient",
41
+ "FlagEvaluation",
42
+ "FeatureFlagSettings",
43
+ ]
@@ -0,0 +1,57 @@
1
+ import httpx
2
+
3
+
4
+ async def evaluate_flag(
5
+ *,
6
+ http: httpx.AsyncClient,
7
+ url: str,
8
+ flag: str,
9
+ service_id: str,
10
+ company_id: str,
11
+ user_id: str | None = None,
12
+ ) -> bool:
13
+ """Call configuration-backend's ``evaluateFlag`` GraphQL query.
14
+
15
+ Args:
16
+ http: Shared HTTP client (caller owns lifecycle).
17
+ url: Base URL of configuration-backend (no trailing slash).
18
+ flag: Upper-snake flag key, e.g. ``FEATURE_FLAG_ENABLE_MY_FEATURE``.
19
+ service_id: Value sent as ``x-service-id`` header.
20
+ company_id: Value sent as ``x-company-id`` header.
21
+ user_id: Value sent as ``x-user-id`` header. Omitted when ``None``.
22
+
23
+ Returns:
24
+ The boolean evaluation result from the server.
25
+
26
+ Raises:
27
+ httpx.HTTPError: On transport or HTTP-level errors.
28
+ RuntimeError: On GraphQL errors or a non-boolean response value.
29
+ """
30
+ headers: dict[str, str] = {
31
+ "x-service-id": service_id,
32
+ "x-company-id": company_id,
33
+ "Content-Type": "application/json",
34
+ }
35
+ if user_id is not None:
36
+ headers["x-user-id"] = user_id
37
+
38
+ response = await http.post(
39
+ f"{url}/graphql",
40
+ json={
41
+ "query": "query EvaluateFlag($key: String!) { evaluateFlag(key: $key) }",
42
+ "variables": {"key": flag},
43
+ },
44
+ headers=headers,
45
+ )
46
+ response.raise_for_status()
47
+ data = response.json()
48
+
49
+ if "errors" in data:
50
+ raise RuntimeError(f"GraphQL error evaluating '{flag}': {data['errors']}")
51
+
52
+ value = data.get("data", {}).get("evaluateFlag")
53
+ if not isinstance(value, bool):
54
+ raise RuntimeError(
55
+ f"evaluateFlag returned unexpected value for '{flag}': {value!r}"
56
+ )
57
+ return value
@@ -0,0 +1,65 @@
1
+ import asyncio
2
+ from collections.abc import Awaitable, Callable
3
+ from typing import Any
4
+
5
+ from cachetools import LRUCache, TTLCache
6
+
7
+ # Sentinel for distinguishing a stored False/None from a missing key.
8
+ # Never stored as a value; only used as the default in .get() calls.
9
+ _MISSING = object()
10
+
11
+
12
+ class AsyncTTLCache:
13
+ """Per-key async TTL cache with stampede protection.
14
+
15
+ Uses a per-key asyncio.Lock to ensure only one coroutine fetches a
16
+ value on a cache miss; subsequent waiters reuse the fetched result.
17
+ Both the value cache and the lock dict are bounded by ``maxsize``.
18
+
19
+ Keys may be any hashable — strings, tuples, etc.
20
+ """
21
+
22
+ def __init__(self, *, maxsize: int = 1024, ttl_ms: float = 5_000) -> None:
23
+ self._cache: TTLCache[Any, Any] = TTLCache(maxsize=maxsize, ttl=ttl_ms / 1000)
24
+ self._stale: LRUCache[Any, Any] = LRUCache(maxsize=maxsize)
25
+ self._locks: LRUCache[Any, asyncio.Lock] = LRUCache(maxsize=maxsize)
26
+ self._dict_lock = asyncio.Lock()
27
+
28
+ async def _get_key_lock(self, key: Any) -> asyncio.Lock:
29
+ async with self._dict_lock:
30
+ lock = self._locks.get(key)
31
+ if lock is None:
32
+ lock = asyncio.Lock()
33
+ self._locks[key] = lock
34
+ return lock
35
+
36
+ async def get_or_fetch(
37
+ self,
38
+ key: Any,
39
+ fetcher: Callable[[], Awaitable[Any]],
40
+ ) -> tuple[Any, bool]:
41
+ """Return ``(value, from_cache)``, fetching on a miss with per-key stampede protection."""
42
+ cached = self._cache.get(key, _MISSING)
43
+ if cached is not _MISSING:
44
+ self._stale[key] = cached # keep stale warm while TTL cache is hot
45
+ return cached, True
46
+
47
+ # Acquire per-key lock; re-check inside in case another waiter already fetched.
48
+ key_lock = await self._get_key_lock(key)
49
+ async with key_lock:
50
+ cached = self._cache.get(key, _MISSING)
51
+ if cached is not _MISSING:
52
+ self._stale[key] = cached # keep stale warm while TTL cache is hot
53
+ return cached, True
54
+
55
+ value = await fetcher()
56
+ self._cache[key] = value
57
+ self._stale[key] = value
58
+ return value, False
59
+
60
+ def get_stale(self, key: Any) -> tuple[Any, bool]:
61
+ """Return ``(value, True)`` if a prior successful fetch exists for *key*, else ``(None, False)``."""
62
+ value = self._stale.get(key, _MISSING)
63
+ if value is _MISSING:
64
+ return None, False
65
+ return value, True