unique-toolkit 2026.36.0.dev13__tar.gz → 2026.38.0.dev0__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 (429) hide show
  1. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/PKG-INFO +2 -2
  2. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/pyproject.toml +2 -2
  3. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/content/functions.py +34 -0
  4. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/experimental/components/__init__.py +6 -3
  5. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/experimental/components/content_tree/__init__.py +14 -18
  6. unique_toolkit-2026.38.0.dev0/unique_toolkit/experimental/components/content_tree/functions.py +380 -0
  7. unique_toolkit-2026.38.0.dev0/unique_toolkit/experimental/components/content_tree/schemas.py +261 -0
  8. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/experimental/components/content_tree/service.py +244 -83
  9. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/experimental/content_tree/__init__.py +4 -10
  10. unique_toolkit-2026.36.0.dev13/unique_toolkit/experimental/components/content_tree/functions.py +0 -247
  11. unique_toolkit-2026.36.0.dev13/unique_toolkit/experimental/components/content_tree/schemas.py +0 -106
  12. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/README.md +0 -0
  13. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/__init__.py +0 -0
  14. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/_common/__init__.py +0 -0
  15. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/_common/_base_service.py +0 -0
  16. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/_common/_time_utils.py +0 -0
  17. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/_common/api_calling/human_verification_manager.py +0 -0
  18. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/_common/base_model_type_attribute.py +0 -0
  19. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/_common/chunk_relevancy_sorter/config.py +0 -0
  20. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/_common/chunk_relevancy_sorter/exception.py +0 -0
  21. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/_common/chunk_relevancy_sorter/schemas.py +0 -0
  22. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/_common/chunk_relevancy_sorter/service.py +0 -0
  23. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/_common/chunk_relevancy_sorter/tests/test_service.py +0 -0
  24. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/_common/config_checker/README.md +0 -0
  25. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/_common/config_checker/__init__.py +0 -0
  26. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/_common/config_checker/__main__.py +0 -0
  27. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/_common/config_checker/cli.py +0 -0
  28. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/_common/config_checker/differ.py +0 -0
  29. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/_common/config_checker/exporter.py +0 -0
  30. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/_common/config_checker/models.py +0 -0
  31. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/_common/config_checker/registry.py +0 -0
  32. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/_common/config_checker/validator.py +0 -0
  33. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/_common/default_language_model.py +0 -0
  34. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/_common/docx_generator/__init__.py +0 -0
  35. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/_common/docx_generator/config.py +0 -0
  36. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/_common/docx_generator/pandoc_converter.py +0 -0
  37. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/_common/docx_generator/schemas.py +0 -0
  38. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/_common/docx_generator/service.py +0 -0
  39. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/_common/docx_generator/template/Doc Template.docx +0 -0
  40. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/_common/endpoint_builder.py +0 -0
  41. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/_common/endpoint_requestor.py +0 -0
  42. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/_common/event_bus.py +0 -0
  43. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/_common/exception.py +0 -0
  44. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/_common/execution.py +0 -0
  45. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/_common/experimental/endpoint_builder.py +0 -0
  46. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/_common/experimental/endpoint_requestor.py +0 -0
  47. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/_common/experimental/write_up_agent/README.md +0 -0
  48. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/_common/experimental/write_up_agent/__init__.py +0 -0
  49. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/_common/experimental/write_up_agent/agent.py +0 -0
  50. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/_common/experimental/write_up_agent/config.py +0 -0
  51. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/_common/experimental/write_up_agent/examples/data.csv +0 -0
  52. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/_common/experimental/write_up_agent/examples/example_usage.py +0 -0
  53. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/_common/experimental/write_up_agent/schemas.py +0 -0
  54. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/_common/experimental/write_up_agent/services/__init__.py +0 -0
  55. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/_common/experimental/write_up_agent/services/dataframe_handler/__init__.py +0 -0
  56. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/_common/experimental/write_up_agent/services/dataframe_handler/exceptions.py +0 -0
  57. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/_common/experimental/write_up_agent/services/dataframe_handler/service.py +0 -0
  58. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/_common/experimental/write_up_agent/services/dataframe_handler/utils.py +0 -0
  59. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/__init__.py +0 -0
  60. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/config.py +0 -0
  61. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/exceptions.py +0 -0
  62. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/prompts/config.py +0 -0
  63. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/prompts/system_prompt.j2 +0 -0
  64. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/prompts/user_prompt.j2 +0 -0
  65. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/service.py +0 -0
  66. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/_common/experimental/write_up_agent/services/template_handler/__init__.py +0 -0
  67. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/_common/experimental/write_up_agent/services/template_handler/default_template.j2 +0 -0
  68. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/_common/experimental/write_up_agent/services/template_handler/exceptions.py +0 -0
  69. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/_common/experimental/write_up_agent/services/template_handler/service.py +0 -0
  70. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/_common/experimental/write_up_agent/services/template_handler/utils.py +0 -0
  71. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/_common/experimental/write_up_agent/utils.py +0 -0
  72. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/_common/feature_flags/schema.py +0 -0
  73. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/_common/metadata_filter_scope.py +0 -0
  74. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/_common/pydantic/rjsf_tags.py +0 -0
  75. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/_common/pydantic_helpers.py +0 -0
  76. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/_common/referencing.py +0 -0
  77. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/_common/string_utilities.py +0 -0
  78. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/_common/tests/test_referencing.py +0 -0
  79. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/_common/tests/test_string_utilities.py +0 -0
  80. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/_common/token/__init__.py +0 -0
  81. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/_common/token/image_token_counting.py +0 -0
  82. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/_common/token/token_counting.py +0 -0
  83. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/_common/token/tokenizers/deepseek/tokenizer.json +0 -0
  84. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/_common/token/tokenizers/qwen/tokenizer.json +0 -0
  85. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/_common/utils/__init__.py +0 -0
  86. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/_common/utils/files.py +0 -0
  87. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/_common/utils/image/encode.py +0 -0
  88. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/_common/utils/jinja/helpers.py +0 -0
  89. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/_common/utils/jinja/render.py +0 -0
  90. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/_common/utils/jinja/schema.py +0 -0
  91. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/_common/utils/jinja/utils.py +0 -0
  92. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/_common/utils/structured_output/__init__.py +0 -0
  93. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/_common/utils/structured_output/schema.py +0 -0
  94. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/_common/utils/write_configuration.py +0 -0
  95. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/_common/validate_required_values.py +0 -0
  96. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/_common/validators.py +0 -0
  97. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/agentic/__init__.py +0 -0
  98. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/agentic/debug_info_manager/debug_info_manager.py +0 -0
  99. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/agentic/debug_info_manager/test/test_debug_info_manager.py +0 -0
  100. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/agentic/evaluation/config.py +0 -0
  101. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/agentic/evaluation/context_relevancy/prompts/__init__.py +0 -0
  102. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/agentic/evaluation/context_relevancy/prompts/system_prompt.j2 +0 -0
  103. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/agentic/evaluation/context_relevancy/prompts/user_prompt.j2 +0 -0
  104. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/agentic/evaluation/context_relevancy/schema.py +0 -0
  105. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/agentic/evaluation/context_relevancy/service.py +0 -0
  106. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/agentic/evaluation/evaluation_manager.py +0 -0
  107. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/agentic/evaluation/exception.py +0 -0
  108. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/agentic/evaluation/hallucination/constants.py +0 -0
  109. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/agentic/evaluation/hallucination/hallucination_evaluation.py +0 -0
  110. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/agentic/evaluation/hallucination/prompts/__init__.py +0 -0
  111. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/agentic/evaluation/hallucination/prompts/system_prompt.j2 +0 -0
  112. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/agentic/evaluation/hallucination/prompts/user_prompt.j2 +0 -0
  113. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/agentic/evaluation/hallucination/service.py +0 -0
  114. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/agentic/evaluation/hallucination/utils.py +0 -0
  115. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/agentic/evaluation/output_parser.py +0 -0
  116. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/agentic/evaluation/schemas.py +0 -0
  117. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/agentic/evaluation/tests/fixtures.py +0 -0
  118. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/agentic/evaluation/tests/test_config.py +0 -0
  119. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/agentic/evaluation/tests/test_context_relevancy_service.py +0 -0
  120. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/agentic/evaluation/tests/test_hallucination_constants.py +0 -0
  121. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/agentic/evaluation/tests/test_hallucination_external_context.py +0 -0
  122. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/agentic/evaluation/tests/test_hallucination_utils.py +0 -0
  123. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/agentic/evaluation/tests/test_output_parser.py +0 -0
  124. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/agentic/evaluation/tests/test_prompt_loaders.py +0 -0
  125. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/agentic/evaluation/utils.py +0 -0
  126. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/agentic/feature_flags/__init__.py +0 -0
  127. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/agentic/feature_flags/feature_flags.py +0 -0
  128. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/agentic/history_manager/history_construction_with_contents.py +0 -0
  129. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/agentic/history_manager/history_manager.py +0 -0
  130. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/agentic/history_manager/loop_token_reducer.py +0 -0
  131. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/agentic/history_manager/settings.py +0 -0
  132. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/agentic/history_manager/utils.py +0 -0
  133. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/agentic/loop_runner/__init__.py +0 -0
  134. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/agentic/loop_runner/_iteration_handler_utils.py +0 -0
  135. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/agentic/loop_runner/_responses_iteration_handler_utils.py +0 -0
  136. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/agentic/loop_runner/_responses_stream_handler_utils.py +0 -0
  137. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/agentic/loop_runner/_stream_handler_utils.py +0 -0
  138. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/agentic/loop_runner/base.py +0 -0
  139. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/agentic/loop_runner/middleware/__init__.py +0 -0
  140. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/agentic/loop_runner/middleware/planning/__init__.py +0 -0
  141. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/agentic/loop_runner/middleware/planning/planning.py +0 -0
  142. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/agentic/loop_runner/middleware/planning/schema.py +0 -0
  143. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/agentic/loop_runner/runners/__init__.py +0 -0
  144. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/agentic/loop_runner/runners/basic.py +0 -0
  145. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/agentic/loop_runner/runners/mistral/__init__.py +0 -0
  146. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/agentic/loop_runner/runners/mistral/mistral_runner.py +0 -0
  147. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/agentic/loop_runner/runners/qwen/__init__.py +0 -0
  148. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/agentic/loop_runner/runners/qwen/helpers.py +0 -0
  149. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/agentic/loop_runner/runners/qwen/qwen_runner.py +0 -0
  150. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/agentic/message_log_manager/__init__.py +0 -0
  151. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/agentic/message_log_manager/service.py +0 -0
  152. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/agentic/message_log_order.py +0 -0
  153. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/agentic/postprocessor/postprocessor_manager.py +0 -0
  154. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/agentic/reference_manager/reference_manager.py +0 -0
  155. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/agentic/reference_manager/tests/test_external_context.py +0 -0
  156. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/agentic/responses_api/__init__.py +0 -0
  157. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/agentic/responses_api/postprocessors/code_display.py +0 -0
  158. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/agentic/responses_api/postprocessors/generated_files.py +0 -0
  159. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/agentic/responses_api/stream_handler.py +0 -0
  160. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/agentic/short_term_memory_manager/persistent_short_term_memory_manager.py +0 -0
  161. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/agentic/thinking_manager/thinking_manager.py +0 -0
  162. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/agentic/tools/__init__.py +0 -0
  163. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/agentic/tools/a2a/__init__.py +0 -0
  164. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/agentic/tools/a2a/config.py +0 -0
  165. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/agentic/tools/a2a/evaluation/__init__.py +0 -0
  166. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/agentic/tools/a2a/evaluation/_utils.py +0 -0
  167. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/agentic/tools/a2a/evaluation/config.py +0 -0
  168. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/agentic/tools/a2a/evaluation/evaluator.py +0 -0
  169. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/agentic/tools/a2a/evaluation/summarization_user_message.j2 +0 -0
  170. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/agentic/tools/a2a/manager.py +0 -0
  171. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/agentic/tools/a2a/postprocessing/__init__.py +0 -0
  172. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/agentic/tools/a2a/postprocessing/_display_utils.py +0 -0
  173. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/agentic/tools/a2a/postprocessing/_ref_utils.py +0 -0
  174. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/agentic/tools/a2a/postprocessing/config.py +0 -0
  175. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/agentic/tools/a2a/postprocessing/display.py +0 -0
  176. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/agentic/tools/a2a/postprocessing/references.py +0 -0
  177. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/agentic/tools/a2a/postprocessing/test/test_display.py +0 -0
  178. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/agentic/tools/a2a/postprocessing/test/test_display_utils.py +0 -0
  179. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/agentic/tools/a2a/postprocessing/test/test_ref_utils.py +0 -0
  180. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/agentic/tools/a2a/postprocessing/test/test_references.py +0 -0
  181. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/agentic/tools/a2a/prompts.py +0 -0
  182. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/agentic/tools/a2a/response_watcher/__init__.py +0 -0
  183. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/agentic/tools/a2a/response_watcher/service.py +0 -0
  184. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/agentic/tools/a2a/tool/__init__.py +0 -0
  185. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/agentic/tools/a2a/tool/_memory.py +0 -0
  186. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/agentic/tools/a2a/tool/_schema.py +0 -0
  187. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/agentic/tools/a2a/tool/config.py +0 -0
  188. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/agentic/tools/a2a/tool/service.py +0 -0
  189. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/agentic/tools/a2a/tool/test/test_service_utils.py +0 -0
  190. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/agentic/tools/agent_chunks_hanlder.py +0 -0
  191. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/agentic/tools/config.py +0 -0
  192. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/agentic/tools/experimental/__init__.py +0 -0
  193. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/agentic/tools/experimental/ask_user_tool/__init__.py +0 -0
  194. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/agentic/tools/experimental/ask_user_tool/config.py +0 -0
  195. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/agentic/tools/experimental/ask_user_tool/tool.py +0 -0
  196. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/agentic/tools/experimental/open_file_tool/__init__.py +0 -0
  197. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/agentic/tools/experimental/open_file_tool/config.py +0 -0
  198. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/agentic/tools/experimental/open_file_tool/runtime.py +0 -0
  199. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/agentic/tools/experimental/open_file_tool/tool.py +0 -0
  200. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/agentic/tools/experimental/retrieve_search_scope_tool/__init__.py +0 -0
  201. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/agentic/tools/experimental/retrieve_search_scope_tool/config.py +0 -0
  202. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/agentic/tools/experimental/retrieve_search_scope_tool/tool.py +0 -0
  203. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/agentic/tools/experimental/todo/__init__.py +0 -0
  204. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/agentic/tools/experimental/todo/config.py +0 -0
  205. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/agentic/tools/experimental/todo/prompts/__init__.py +0 -0
  206. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/agentic/tools/experimental/todo/prompts/execution_reminder.j2 +0 -0
  207. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/agentic/tools/experimental/todo/prompts/system_prompt.j2 +0 -0
  208. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/agentic/tools/experimental/todo/prompts/tool_description.j2 +0 -0
  209. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/agentic/tools/experimental/todo/prompts/verification_nudge.j2 +0 -0
  210. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/agentic/tools/experimental/todo/schemas.py +0 -0
  211. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/agentic/tools/experimental/todo/service.py +0 -0
  212. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/agentic/tools/factory.py +0 -0
  213. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/agentic/tools/mcp/__init__.py +0 -0
  214. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/agentic/tools/mcp/manager.py +0 -0
  215. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/agentic/tools/mcp/models.py +0 -0
  216. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/agentic/tools/mcp/tool_wrapper.py +0 -0
  217. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/agentic/tools/names.py +0 -0
  218. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/agentic/tools/openai_builtin/__init__.py +0 -0
  219. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/agentic/tools/openai_builtin/base.py +0 -0
  220. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/__init__.py +0 -0
  221. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/activator/__init__.py +0 -0
  222. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/activator/config.py +0 -0
  223. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/activator/service.py +0 -0
  224. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/builder/__init__.py +0 -0
  225. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/builder/_container.py +0 -0
  226. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/builder/_files.py +0 -0
  227. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/builder/_memory.py +0 -0
  228. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/builder/builder.py +0 -0
  229. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/config.py +0 -0
  230. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/postprocessors/__init__.py +0 -0
  231. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/postprocessors/artifacts.py +0 -0
  232. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/postprocessors/code_display.py +0 -0
  233. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/postprocessors/generated_files.py +0 -0
  234. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/postprocessors/office_preview.py +0 -0
  235. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/schemas.py +0 -0
  236. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/tool/__init__.py +0 -0
  237. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/tool/config.py +0 -0
  238. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/tool/service.py +0 -0
  239. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/agentic/tools/openai_builtin/manager.py +0 -0
  240. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/agentic/tools/run_context.py +0 -0
  241. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/agentic/tools/schemas.py +0 -0
  242. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/agentic/tools/test/test_mcp_manager.py +0 -0
  243. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/agentic/tools/test/test_tool_progress_reporter.py +0 -0
  244. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/agentic/tools/tool.py +0 -0
  245. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/agentic/tools/tool_manager.py +0 -0
  246. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/agentic/tools/tool_progress_reporter.py +0 -0
  247. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/agentic/tools/utils/__init__.py +0 -0
  248. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/agentic/tools/utils/source_handling/__init__.py +0 -0
  249. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/agentic/tools/utils/source_handling/schema.py +0 -0
  250. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/agentic/tools/utils/source_handling/source_formatting.py +0 -0
  251. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/agentic/tools/utils/source_handling/tests/test_source_formatting.py +0 -0
  252. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/agentic_table/__init__.py +0 -0
  253. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/agentic_table/schemas.py +0 -0
  254. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/agentic_table/service.py +0 -0
  255. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/agentic_table/synthetic_chat_event.py +0 -0
  256. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/app/__init__.py +0 -0
  257. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/app/chat_event_filter_options_settings.py +0 -0
  258. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/app/dev_util.py +0 -0
  259. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/app/fast_api_factory.py +0 -0
  260. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/app/feature_flags.py +0 -0
  261. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/app/find_env_file.py +0 -0
  262. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/app/init_logging.py +0 -0
  263. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/app/init_sdk.py +0 -0
  264. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/app/performance/async_tasks.py +0 -0
  265. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/app/performance/async_wrapper.py +0 -0
  266. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/app/schemas.py +0 -0
  267. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/app/unique_settings.py +0 -0
  268. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/app/verification.py +0 -0
  269. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/app/webhook.py +0 -0
  270. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/chat/__init__.py +0 -0
  271. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/chat/cancellation.py +0 -0
  272. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/chat/constants.py +0 -0
  273. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/chat/deprecated/__init__.py +0 -0
  274. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/chat/deprecated/service.py +0 -0
  275. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/chat/functions.py +0 -0
  276. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/chat/rendering.py +0 -0
  277. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/chat/responses_api.py +0 -0
  278. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/chat/schemas.py +0 -0
  279. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/chat/service.py +0 -0
  280. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/chat/state.py +0 -0
  281. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/chat/utils.py +0 -0
  282. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/content/__init__.py +0 -0
  283. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/content/constants.py +0 -0
  284. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/content/schemas.py +0 -0
  285. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/content/service.py +0 -0
  286. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/content/smart_rules.py +0 -0
  287. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/content/utils.py +0 -0
  288. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/data_extraction/README.md +0 -0
  289. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/data_extraction/__init__.py +0 -0
  290. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/data_extraction/augmented/__init__.py +0 -0
  291. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/data_extraction/augmented/service.py +0 -0
  292. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/data_extraction/base.py +0 -0
  293. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/data_extraction/basic/__init__.py +0 -0
  294. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/data_extraction/basic/config.py +0 -0
  295. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/data_extraction/basic/prompt.py +0 -0
  296. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/data_extraction/basic/service.py +0 -0
  297. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/elicitation/__init__.py +0 -0
  298. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/elicitation/constants.py +0 -0
  299. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/elicitation/exceptions.py +0 -0
  300. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/elicitation/functions.py +0 -0
  301. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/elicitation/schemas.py +0 -0
  302. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/elicitation/service.py +0 -0
  303. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/embedding/__init__.py +0 -0
  304. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/embedding/constants.py +0 -0
  305. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/embedding/functions.py +0 -0
  306. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/embedding/schemas.py +0 -0
  307. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/embedding/service.py +0 -0
  308. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/embedding/utils.py +0 -0
  309. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/experimental/README.md +0 -0
  310. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/experimental/__init__.py +0 -0
  311. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/experimental/_internal/__init__.py +0 -0
  312. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/experimental/_internal/streaming/__init__.py +0 -0
  313. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/experimental/_internal/streaming/common.py +0 -0
  314. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/experimental/_internal/streaming/pattern_replacer.py +0 -0
  315. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/experimental/components/_base.py +0 -0
  316. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/experimental/components/internal_search/__init__.py +0 -0
  317. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/experimental/components/internal_search/base/__init__.py +0 -0
  318. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/experimental/components/internal_search/base/config.py +0 -0
  319. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/experimental/components/internal_search/base/schemas.py +0 -0
  320. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/experimental/components/internal_search/base/service.py +0 -0
  321. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/experimental/components/internal_search/base/utils.py +0 -0
  322. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/experimental/components/internal_search/chat/__init__.py +0 -0
  323. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/experimental/components/internal_search/chat/config.py +0 -0
  324. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/experimental/components/internal_search/chat/schemas.py +0 -0
  325. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/experimental/components/internal_search/chat/service.py +0 -0
  326. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/experimental/components/internal_search/knowledge_base/__init__.py +0 -0
  327. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/experimental/components/internal_search/knowledge_base/config.py +0 -0
  328. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/experimental/components/internal_search/knowledge_base/schemas.py +0 -0
  329. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/experimental/components/internal_search/knowledge_base/service.py +0 -0
  330. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/experimental/components/internal_search/post_processing/__init__.py +0 -0
  331. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/experimental/components/internal_search/post_processing/config.py +0 -0
  332. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/experimental/components/internal_search/post_processing/service.py +0 -0
  333. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/experimental/identity/__init__.py +0 -0
  334. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/experimental/integrations/__init__.py +0 -0
  335. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/experimental/integrations/openai/__init__.py +0 -0
  336. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/experimental/integrations/openai/streaming/__init__.py +0 -0
  337. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/__init__.py +0 -0
  338. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/_async_bridge.py +0 -0
  339. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/_model_params.py +0 -0
  340. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/chat_completions/__init__.py +0 -0
  341. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/chat_completions/complete_with_references.py +0 -0
  342. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/chat_completions/stream_event_router.py +0 -0
  343. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/chat_completions/text_event_handler.py +0 -0
  344. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/chat_completions/tool_call_event_handler.py +0 -0
  345. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/events.py +0 -0
  346. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/protocols/__init__.py +0 -0
  347. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/protocols/chat_completions.py +0 -0
  348. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/protocols/responses.py +0 -0
  349. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/responses/__init__.py +0 -0
  350. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/responses/code_interpreter_event_handler.py +0 -0
  351. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/responses/complete_with_references.py +0 -0
  352. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/responses/completed_event_handler.py +0 -0
  353. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/responses/stream_event_router.py +0 -0
  354. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/responses/text_delta_event_handler.py +0 -0
  355. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/responses/tool_call_event_handler.py +0 -0
  356. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/subscribers/__init__.py +0 -0
  357. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/subscribers/message_persister.py +0 -0
  358. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/subscribers/progress_log_persister.py +0 -0
  359. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/experimental/resources/__init__.py +0 -0
  360. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/experimental/resources/content_folder/__init__.py +0 -0
  361. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/experimental/resources/content_folder/functions.py +0 -0
  362. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/experimental/resources/content_folder/schemas.py +0 -0
  363. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/experimental/resources/content_folder/service.py +0 -0
  364. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/experimental/resources/facades/__init__.py +0 -0
  365. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/experimental/resources/facades/identity/__init__.py +0 -0
  366. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/experimental/resources/facades/identity/service.py +0 -0
  367. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/experimental/resources/feature_flags/README.md +0 -0
  368. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/experimental/resources/feature_flags/__init__.py +0 -0
  369. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/experimental/resources/feature_flags/_graphql_client.py +0 -0
  370. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/experimental/resources/feature_flags/_ttl_cache.py +0 -0
  371. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/experimental/resources/feature_flags/client.py +0 -0
  372. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/experimental/resources/feature_flags/schemas.py +0 -0
  373. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/experimental/resources/feature_flags/settings.py +0 -0
  374. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/experimental/resources/group/__init__.py +0 -0
  375. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/experimental/resources/group/functions.py +0 -0
  376. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/experimental/resources/group/schemas.py +0 -0
  377. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/experimental/resources/group/service.py +0 -0
  378. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/experimental/resources/scheduled_task/__init__.py +0 -0
  379. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/experimental/resources/scheduled_task/cron.py +0 -0
  380. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/experimental/resources/scheduled_task/functions.py +0 -0
  381. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/experimental/resources/scheduled_task/schemas.py +0 -0
  382. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/experimental/resources/scheduled_task/service.py +0 -0
  383. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/experimental/resources/user/__init__.py +0 -0
  384. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/experimental/resources/user/functions.py +0 -0
  385. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/experimental/resources/user/schemas.py +0 -0
  386. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/experimental/resources/user/service.py +0 -0
  387. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/experimental/testing/__init__.py +0 -0
  388. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/framework_utilities/__init__.py +0 -0
  389. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/framework_utilities/langchain/__init__.py +0 -0
  390. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/framework_utilities/langchain/client.py +0 -0
  391. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/framework_utilities/langchain/history.py +0 -0
  392. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/framework_utilities/openai/__init__.py +0 -0
  393. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/framework_utilities/openai/client.py +0 -0
  394. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/framework_utilities/openai/message_builder.py +0 -0
  395. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/framework_utilities/utils.py +0 -0
  396. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/language_model/__init__.py +0 -0
  397. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/language_model/_responses_api_utils.py +0 -0
  398. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/language_model/builder.py +0 -0
  399. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/language_model/constants.py +0 -0
  400. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/language_model/default_language_model.py +0 -0
  401. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/language_model/functions.py +0 -0
  402. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/language_model/infos.py +0 -0
  403. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/language_model/invocation_stats.py +0 -0
  404. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/language_model/model_costs.py +0 -0
  405. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/language_model/prompt.py +0 -0
  406. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/language_model/reference.py +0 -0
  407. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/language_model/schemas.py +0 -0
  408. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/language_model/service.py +0 -0
  409. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/language_model/settings.py +0 -0
  410. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/language_model/stream_transform.py +0 -0
  411. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/language_model/utils.py +0 -0
  412. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/monitoring/__init__.py +0 -0
  413. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/monitoring/gunicorn.py +0 -0
  414. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/monitoring/middleware.py +0 -0
  415. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/monitoring/registry.py +0 -0
  416. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/monitoring/tracing.py +0 -0
  417. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/protocols/support.py +0 -0
  418. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/services/__init__.py +0 -0
  419. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/services/chat_service.py +0 -0
  420. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/services/factory.py +0 -0
  421. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/services/knowledge_base.py +0 -0
  422. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/short_term_memory/__init__.py +0 -0
  423. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/short_term_memory/constants.py +0 -0
  424. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/short_term_memory/functions.py +0 -0
  425. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/short_term_memory/schemas.py +0 -0
  426. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/short_term_memory/service.py +0 -0
  427. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/smart_rules/__init__.py +0 -0
  428. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/unique_toolkit/smart_rules/compile.py +0 -0
  429. {unique_toolkit-2026.36.0.dev13 → unique_toolkit-2026.38.0.dev0}/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.36.0.dev13
3
+ Version: 2026.38.0.dev0
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.36.0.dev6,<2026.36.0rc0
19
+ Requires-Dist: unique-sdk>=2026.38.0.dev0,<2026.38.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
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "unique_toolkit"
3
- version = "2026.36.0.dev13"
3
+ version = "2026.38.0.dev0"
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.36.0.dev6,<2026.36.0rc0",
31
+ "unique-sdk>=2026.38.0.dev0,<2026.38.0rc0",
32
32
  "jambo>=0.1.2,<0.2",
33
33
  "jinja2>=3.1.6,<4",
34
34
  "docxtpl>=0.20.1,<0.21",
@@ -973,6 +973,40 @@ async def get_folder_info_async(
973
973
  return FolderInfo.model_validate(await info, by_alias=True, by_name=True)
974
974
 
975
975
 
976
+ def get_folder_path(user_id: str, company_id: str, *, scope_id: str) -> str:
977
+ """Return the named folder path for ``scope_id`` (e.g. ``/Company/Reports``).
978
+
979
+ Args:
980
+ user_id (str): Confidential user id of the caller.
981
+ company_id (str): Confidential company id of the caller.
982
+ scope_id (str): Folder scope id to resolve.
983
+
984
+ Returns:
985
+ str: Absolute folder path as returned by ``GET /folder/{id}/path``.
986
+ """
987
+ info = unique_sdk.Folder.get_folder_path(
988
+ user_id=user_id, company_id=company_id, scope_id=scope_id
989
+ )
990
+ return info["folderPath"]
991
+
992
+
993
+ async def get_folder_path_async(user_id: str, company_id: str, *, scope_id: str) -> str:
994
+ """Async variant of :func:`get_folder_path`.
995
+
996
+ Args:
997
+ user_id (str): Confidential user id of the caller.
998
+ company_id (str): Confidential company id of the caller.
999
+ scope_id (str): Folder scope id to resolve.
1000
+
1001
+ Returns:
1002
+ str: Absolute folder path as returned by ``GET /folder/{id}/path``.
1003
+ """
1004
+ info = await unique_sdk.Folder.get_folder_path_async(
1005
+ user_id=user_id, company_id=company_id, scope_id=scope_id
1006
+ )
1007
+ return info["folderPath"]
1008
+
1009
+
976
1010
  def update_content(
977
1011
  user_id: str,
978
1012
  company_id: str,
@@ -21,9 +21,12 @@ Planned contents (current home → new home):
21
21
  * ``docx_generator`` ← :mod:`unique_toolkit._common.docx_generator`
22
22
  * ``tokenization`` ← :mod:`unique_toolkit._common.token`
23
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
24
+ (re-export: :mod:`unique_toolkit.experimental.content_tree`); tree rendering
25
+ walks ``Folder.get_infos`` (depth + timeout)
26
+ * ``content_navigation`` ← :mod:`unique_toolkit.experimental.components.content_navigation`
27
+ (re-export: :mod:`unique_toolkit.experimental.content_navigation`); one-level
28
+ ``ls`` over ``Folder.get_infos`` + ``Content.get_infos``; cwd is injected
29
+ per call (stateless, MCP-safe)
27
30
  * ``internal_search`` ← :mod:`unique_toolkit.experimental.components.internal_search`
28
31
  (UN-19039 / UN-20075); pure-retrieval KB and chat search services plus an
29
32
  optional post-processing pipeline (:class:`InternalSearchPostProcessor`)
@@ -10,32 +10,31 @@ Typical usage::
10
10
  from unique_toolkit.experimental.components.content_tree import ContentTree
11
11
 
12
12
  tree = ContentTree.from_settings()
13
- print(await tree.render_visible_tree_async(max_depth=2))
14
- hits = await tree.search_visible_files_fuzzy_async("annual_report")
13
+ snapshot = await tree.resolve_visible_file_paths_via_folders_async(
14
+ max_depth=2, timeout=5.0
15
+ )
16
+ print(snapshot.render(show_files=False))
17
+ print(await tree.render_visible_tree_via_folders_async(max_depth=2))
15
18
 
16
- The subpackage is split into three modules to mirror the rest of the
17
- ``content`` domain:
19
+ The subpackage is split into:
18
20
 
19
21
  - :mod:`unique_toolkit.experimental.components.content_tree.schemas` — data classes
20
- (:class:`PathTrieNode`, :class:`FuzzyMatch`, :data:`MatchTarget`).
21
- - :mod:`unique_toolkit.experimental.components.content_tree.functions` — pure helpers
22
- for listing, scope-id resolution, trie construction, and ``tree(1)``-style
23
- formatting.
22
+ (:class:`PathTrieNode`, :class:`FuzzyMatch`, :class:`FolderWalkSnapshot`;
23
+ file locations are :class:`~pathlib.PurePosixPath`).
24
+ - :mod:`unique_toolkit.experimental.components.content_tree.functions` — folder-walk
25
+ helpers and ``tree(1)``-style formatting.
24
26
  - :mod:`unique_toolkit.experimental.components.content_tree.service` —
25
27
  :class:`ContentTree`, the orchestrating service with per-instance caching.
26
28
  """
27
29
 
28
30
  from unique_toolkit.experimental.components.content_tree.functions import (
29
31
  build_trie_from_resolved_paths,
30
- extract_scope_ids_from_content_infos,
31
32
  format_path_trie,
32
- get_all_content_infos_async,
33
33
  resolve_visible_file_paths_core,
34
- translate_scope_id_async,
35
- translate_scope_ids_async,
36
- translate_scope_ids_batch,
34
+ walk_visible_paths_via_folders_async,
37
35
  )
38
36
  from unique_toolkit.experimental.components.content_tree.schemas import (
37
+ FolderWalkSnapshot,
39
38
  FuzzyMatch,
40
39
  MatchTarget,
41
40
  PathTrieNode,
@@ -48,11 +47,8 @@ __all__ = [
48
47
  "MatchTarget",
49
48
  "PathTrieNode",
50
49
  "build_trie_from_resolved_paths",
51
- "extract_scope_ids_from_content_infos",
52
50
  "format_path_trie",
53
- "get_all_content_infos_async",
51
+ "FolderWalkSnapshot",
54
52
  "resolve_visible_file_paths_core",
55
- "translate_scope_id_async",
56
- "translate_scope_ids_async",
57
- "translate_scope_ids_batch",
53
+ "walk_visible_paths_via_folders_async",
58
54
  ]
@@ -0,0 +1,380 @@
1
+ """Pure functions behind the folder-walk content-tree view.
2
+
3
+ These helpers are decoupled from :class:`~unique_toolkit.experimental.components.content_tree.service.ContentTree`
4
+ so that other callers (scripts, notebooks, ad-hoc tooling) can compose the same
5
+ ``Folder.get_infos`` walk without constructing a service instance.
6
+
7
+ - :func:`walk_visible_paths_via_folders_async` — snapshot via recursive
8
+ ``Folder.get_infos`` + ``Content.get_infos(parentId)``. ``max_depth`` stops
9
+ the walk; optional ``timeout`` returns a partial snapshot. Render with
10
+ :meth:`~unique_toolkit.experimental.components.content_tree.schemas.FolderWalkSnapshot.render`.
11
+ - :func:`resolve_visible_file_paths_core` — deprecated adapter that returns
12
+ ``list[tuple[ContentInfo, list[str]]]`` from that walk.
13
+ - :func:`format_path_trie` — render a :class:`PathTrieNode` as a ``tree(1)``-style
14
+ multi-line string (prefer :meth:`FolderWalkSnapshot.render`).
15
+ """
16
+
17
+ from __future__ import annotations
18
+
19
+ import asyncio
20
+ import json
21
+ import logging
22
+ from collections.abc import Awaitable, Callable
23
+ from pathlib import PurePosixPath
24
+ from typing import Any
25
+
26
+ import unique_sdk
27
+ from typing_extensions import deprecated
28
+
29
+ from unique_toolkit.content.schemas import BaseFolderInfo, ContentInfo
30
+ from unique_toolkit.experimental.components.content_tree.schemas import (
31
+ FolderWalkSnapshot,
32
+ PathTrieNode,
33
+ )
34
+
35
+ __all__ = [
36
+ "build_trie_from_resolved_paths",
37
+ "format_path_trie",
38
+ "resolve_visible_file_paths_core",
39
+ "serialize_filter",
40
+ "walk_visible_paths_via_folders_async",
41
+ ]
42
+
43
+ _LOGGER = logging.getLogger(f"toolkit.experimental.components.content_tree.{__name__}")
44
+
45
+
46
+ def serialize_filter(metadata_filter: dict[str, Any] | None) -> str:
47
+ """Serialize a filter dict to a stable, hashable cache key."""
48
+ try:
49
+ return json.dumps(metadata_filter, sort_keys=True, default=str)
50
+ except TypeError:
51
+ return repr(metadata_filter)
52
+
53
+
54
+ def _parse_folder_infos_payload(payload: Any) -> tuple[list[BaseFolderInfo], int]:
55
+ raw = payload.get("folderInfos") or []
56
+ folders = [
57
+ BaseFolderInfo.model_validate(item, by_alias=True, by_name=True) for item in raw
58
+ ]
59
+ total = int(payload.get("totalCount", len(folders)))
60
+ return folders, total
61
+
62
+
63
+ def _parse_content_infos_payload(payload: Any) -> tuple[list[ContentInfo], int]:
64
+ raw = payload.get("contentInfos") or []
65
+ files = [
66
+ ContentInfo.model_validate(item, by_alias=True, by_name=True) for item in raw
67
+ ]
68
+ total = int(payload.get("totalCount", len(files)))
69
+ return files, total
70
+
71
+
72
+ def _propagate_wait_interrupt(result: object) -> None:
73
+ """Re-raise timeout/cancellation so callers can return a partial snapshot."""
74
+ if isinstance(result, (asyncio.CancelledError, TimeoutError)):
75
+ raise result
76
+
77
+
78
+ def _log_skipped_listing(message: str, err: BaseException, *args: object) -> None:
79
+ """Log a skipped listing with stack info, without interpolating the error."""
80
+ _LOGGER.warning(message, *args, exc_info=err)
81
+
82
+
83
+ async def _paginate_parent_listing[T](
84
+ fetch_page: Callable[[int], Awaitable[Any]],
85
+ parse_page: Callable[[Any], tuple[list[T], int]],
86
+ *,
87
+ step_size: int,
88
+ max_concurrent_requests: int,
89
+ on_page: Callable[[list[T]], None] | None = None,
90
+ ) -> list[T]:
91
+ """Fetch skip=0 at ``step_size``, then remaining pages concurrently.
92
+
93
+ ``on_page`` runs after each page so callers can publish partial progress
94
+ before the full listing finishes.
95
+ """
96
+ first_payload = await fetch_page(0)
97
+ items, total_count = parse_page(first_payload)
98
+ if on_page:
99
+ on_page(items)
100
+ remaining_skips = list(range(step_size, total_count, step_size))
101
+ if not remaining_skips:
102
+ return items
103
+
104
+ semaphore = asyncio.Semaphore(max_concurrent_requests)
105
+
106
+ async def _fetch(skip: int) -> list[T]:
107
+ async with semaphore:
108
+ payload = await fetch_page(skip)
109
+ page_items, _total = parse_page(payload)
110
+ if on_page:
111
+ on_page(page_items)
112
+ return page_items
113
+
114
+ extra = await asyncio.gather(
115
+ *[_fetch(skip) for skip in remaining_skips],
116
+ return_exceptions=True,
117
+ )
118
+ for page in extra:
119
+ _propagate_wait_interrupt(page)
120
+ if isinstance(page, BaseException):
121
+ _log_skipped_listing("Skipping listing page after fetch error", page)
122
+ continue
123
+ items.extend(page)
124
+ return items
125
+
126
+
127
+ async def _list_direct_children_async(
128
+ user_id: str,
129
+ company_id: str,
130
+ *,
131
+ scope_id: str | None,
132
+ metadata_filter: dict[str, Any] | None,
133
+ step_size: int,
134
+ max_concurrent_page_fetches: int,
135
+ on_folders: Callable[[list[BaseFolderInfo]], None] | None = None,
136
+ on_files: Callable[[list[ContentInfo]], None] | None = None,
137
+ ) -> list[BaseFolderInfo]:
138
+ """Child folders (and files when ``scope_id`` is set) of one parent.
139
+
140
+ ``scope_id=None`` is the knowledge-base root. ``Content.get_infos`` without
141
+ ``parentId`` lists the **entire** catalog, so root only fetches folders.
142
+ Files are listed per folder with ``parentId``.
143
+ """
144
+ parent_params: dict[str, Any] = {}
145
+ if scope_id:
146
+ parent_params["parentId"] = scope_id
147
+
148
+ async def _folder_page(skip: int) -> Any:
149
+ return await unique_sdk.Folder.get_infos_async(
150
+ user_id=user_id,
151
+ company_id=company_id,
152
+ skip=skip,
153
+ take=step_size,
154
+ **parent_params,
155
+ )
156
+
157
+ folders_task = _paginate_parent_listing(
158
+ _folder_page,
159
+ _parse_folder_infos_payload,
160
+ step_size=step_size,
161
+ max_concurrent_requests=max_concurrent_page_fetches,
162
+ on_page=on_folders,
163
+ )
164
+ if not scope_id:
165
+ return await folders_task
166
+
167
+ async def _content_page(skip: int) -> Any:
168
+ params = dict(parent_params)
169
+ if metadata_filter:
170
+ params["metadataFilter"] = metadata_filter
171
+ return await unique_sdk.Content.get_infos_async(
172
+ user_id=user_id,
173
+ company_id=company_id,
174
+ skip=skip,
175
+ take=step_size,
176
+ **params,
177
+ )
178
+
179
+ folder_result, file_result = await asyncio.gather(
180
+ folders_task,
181
+ _paginate_parent_listing(
182
+ _content_page,
183
+ _parse_content_infos_payload,
184
+ step_size=step_size,
185
+ max_concurrent_requests=max_concurrent_page_fetches,
186
+ on_page=on_files,
187
+ ),
188
+ return_exceptions=True,
189
+ )
190
+ _propagate_wait_interrupt(folder_result)
191
+ _propagate_wait_interrupt(file_result)
192
+ if isinstance(folder_result, BaseException):
193
+ _log_skipped_listing(
194
+ "Skipping folder listing for parent %s", folder_result, scope_id
195
+ )
196
+ return []
197
+ if isinstance(file_result, BaseException):
198
+ _log_skipped_listing(
199
+ "Skipping content listing for parent %s", file_result, scope_id
200
+ )
201
+ return folder_result
202
+
203
+
204
+ async def walk_visible_paths_via_folders_async(
205
+ user_id: str,
206
+ company_id: str,
207
+ *,
208
+ metadata_filter: dict[str, Any] | None = None,
209
+ max_concurrent_scope_lookups: int = 25,
210
+ max_depth: int | None = None,
211
+ max_concurrent_directory_listings: int | None = None,
212
+ step_size: int = 100,
213
+ timeout: float | None = None,
214
+ progress: FolderWalkSnapshot | None = None,
215
+ ) -> FolderWalkSnapshot:
216
+ """Build a visible-path snapshot by walking ``Folder.get_infos``.
217
+
218
+ Each directory is ``Folder.get_infos(parentId)`` plus, when the parent is
219
+ a real folder, ``Content.get_infos(parentId)`` (paginated). The synthetic
220
+ root lists **folders only**: ``Content.get_infos`` without ``parentId``
221
+ dumps every visible file and would stall the walk. Folder names come from
222
+ the folder listing, so this does not call ``get_folder_path``. ``max_depth``
223
+ stops recursion (``tree -L``): depth ``1`` lists only the knowledge-base
224
+ root's children.
225
+
226
+ Results are appended to ``progress`` as each listing **page** arrives, so a
227
+ ``timeout`` can return a valid partial tree (``complete=False``) instead of
228
+ raising. Directory listings that already started are shielded so their
229
+ rows still land in the snapshot.
230
+
231
+ Args:
232
+ user_id (str): Confidential user id of the caller.
233
+ company_id (str): Confidential company id of the caller.
234
+ metadata_filter (dict[str, Any] | None): Optional UniqueQL filter
235
+ applied to per-folder content listings.
236
+ max_concurrent_scope_lookups (int): Backward-compatible alias for
237
+ ``max_concurrent_directory_listings`` when that argument is omitted.
238
+ max_depth (int | None): Maximum directory depth under the synthetic
239
+ root (``None`` = unlimited).
240
+ max_concurrent_directory_listings (int | None): Bound on concurrent
241
+ directory visits. Defaults to ``max_concurrent_scope_lookups``.
242
+ step_size (int): Page size for folder and content listings (max 100).
243
+ timeout (float | None): Seconds after which further visits are
244
+ cancelled. ``None`` waits for the full walk.
245
+ progress (FolderWalkSnapshot | None): Shared accumulator mutated as
246
+ directories complete. When omitted, a fresh snapshot is used.
247
+ :class:`~unique_toolkit.experimental.components.content_tree.service.ContentTree`
248
+ passes this so a timed-out wait can still read rows while the
249
+ cached walk continues.
250
+
251
+ Returns:
252
+ FolderWalkSnapshot: File rows plus every visited folder prefix
253
+ (including empty directories). ``complete`` is ``False`` on timeout.
254
+ The snapshot is also a sequence of ``(content_info, path)`` rows.
255
+ """
256
+ concurrency = (
257
+ max_concurrent_directory_listings
258
+ if max_concurrent_directory_listings is not None
259
+ else max_concurrent_scope_lookups
260
+ )
261
+ acc = progress or FolderWalkSnapshot(files=[], folder_paths=[], complete=False)
262
+ dir_semaphore = asyncio.Semaphore(concurrency)
263
+
264
+ async def _list_and_record(
265
+ scope_id: str | None, path: PurePosixPath
266
+ ) -> list[BaseFolderInfo]:
267
+ def _record_folders(page: list[BaseFolderInfo]) -> None:
268
+ acc.folder_paths.extend(path / folder.name for folder in page)
269
+
270
+ def _record_files(page: list[ContentInfo]) -> None:
271
+ acc.files.extend((content, path / content.key) for content in page)
272
+
273
+ return await _list_direct_children_async(
274
+ user_id,
275
+ company_id,
276
+ scope_id=scope_id,
277
+ metadata_filter=metadata_filter,
278
+ step_size=step_size,
279
+ max_concurrent_page_fetches=10,
280
+ on_folders=_record_folders,
281
+ on_files=_record_files,
282
+ )
283
+
284
+ async def _visit(scope_id: str | None, path: PurePosixPath, depth: int) -> None:
285
+ async with dir_semaphore:
286
+ folders = await asyncio.shield(_list_and_record(scope_id, path))
287
+ recurse = max_depth is None or depth + 1 < max_depth
288
+ if recurse and folders:
289
+ child_results = await asyncio.gather(
290
+ *[
291
+ _visit(folder.id, path / folder.name, depth + 1)
292
+ for folder in folders
293
+ ],
294
+ return_exceptions=True,
295
+ )
296
+ for folder, result in zip(folders, child_results, strict=True):
297
+ _propagate_wait_interrupt(result)
298
+ if isinstance(result, BaseException):
299
+ _log_skipped_listing("Skipping subtree %s", result, folder.id)
300
+
301
+ try:
302
+ if timeout is None:
303
+ await _visit(scope_id=None, path=PurePosixPath(), depth=0)
304
+ else:
305
+ async with asyncio.timeout(timeout):
306
+ await _visit(scope_id=None, path=PurePosixPath(), depth=0)
307
+ except TimeoutError:
308
+ acc.complete = False
309
+ return acc.copy(complete=False)
310
+
311
+ acc.complete = True
312
+ return acc.copy(complete=True)
313
+
314
+
315
+ @deprecated(
316
+ "Use walk_visible_paths_via_folders_async; it returns FolderWalkSnapshot "
317
+ "with PurePosixPath rows, max_depth, and timeout."
318
+ )
319
+ async def resolve_visible_file_paths_core(
320
+ user_id: str,
321
+ company_id: str,
322
+ *,
323
+ metadata_filter: dict[str, Any] | None = None,
324
+ max_concurrent_scope_lookups: int = 25,
325
+ ) -> list[tuple[ContentInfo, list[str]]]:
326
+ """Walk visible folders and return path segments as lists of strings.
327
+
328
+ Deprecated wrapper around :func:`walk_visible_paths_via_folders_async`.
329
+
330
+ Args:
331
+ user_id (str): Confidential user id of the caller.
332
+ company_id (str): Confidential company id of the caller.
333
+ metadata_filter (dict[str, Any] | None): Optional UniqueQL filter
334
+ applied to per-folder content listings.
335
+ max_concurrent_scope_lookups (int): Bound on concurrent directory
336
+ visits.
337
+
338
+ Returns:
339
+ list[tuple[ContentInfo, list[str]]]: Each file paired with POSIX path
340
+ segments (``["Legal", "Contracts", "nda.pdf"]``).
341
+ """
342
+ snapshot = await walk_visible_paths_via_folders_async(
343
+ user_id,
344
+ company_id,
345
+ metadata_filter=metadata_filter,
346
+ max_concurrent_scope_lookups=max_concurrent_scope_lookups,
347
+ )
348
+ return [
349
+ (content_info, [part for part in path.parts if part != "."])
350
+ for content_info, path in snapshot.files
351
+ ]
352
+
353
+
354
+ def build_trie_from_resolved_paths(
355
+ resolved: list[tuple[ContentInfo, PurePosixPath]],
356
+ *,
357
+ extra_folder_paths: list[PurePosixPath] | None = None,
358
+ ) -> PathTrieNode:
359
+ """Insert each ``(content, path)`` pair into a trie.
360
+
361
+ Args:
362
+ resolved (list[tuple[ContentInfo, PurePosixPath]]): File rows.
363
+ ``path.parent`` is the folder, ``path.name`` is the filename.
364
+ extra_folder_paths (list[PurePosixPath] | None): Folder-only prefixes so
365
+ empty directories still appear (used by the folder-walk snapshot).
366
+ """
367
+ return FolderWalkSnapshot(
368
+ files=list(resolved),
369
+ folder_paths=list(extra_folder_paths or []),
370
+ ).to_trie()
371
+
372
+
373
+ def format_path_trie(
374
+ root: PathTrieNode,
375
+ *,
376
+ max_depth: int | None = None,
377
+ show_files: bool = True,
378
+ ) -> str:
379
+ """Render *root* with UTF-8 box drawing (like ``tree``)."""
380
+ return root.render(max_depth=max_depth, show_files=show_files)