unique-toolkit 2026.30.0.dev22__tar.gz → 2026.30.0.dev24__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 (423) hide show
  1. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/PKG-INFO +2 -2
  2. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/pyproject.toml +2 -2
  3. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/agentic/debug_info_manager/debug_info_manager.py +6 -2
  4. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/postprocessors/generated_files.py +31 -9
  5. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/agentic_table/__init__.py +19 -1
  6. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/agentic_table/schemas.py +51 -0
  7. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/agentic_table/service.py +312 -0
  8. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/README.md +0 -0
  9. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/__init__.py +0 -0
  10. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/_common/__init__.py +0 -0
  11. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/_common/_base_service.py +0 -0
  12. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/_common/_time_utils.py +0 -0
  13. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/_common/api_calling/human_verification_manager.py +0 -0
  14. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/_common/base_model_type_attribute.py +0 -0
  15. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/_common/chunk_relevancy_sorter/config.py +0 -0
  16. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/_common/chunk_relevancy_sorter/exception.py +0 -0
  17. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/_common/chunk_relevancy_sorter/schemas.py +0 -0
  18. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/_common/chunk_relevancy_sorter/service.py +0 -0
  19. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/_common/chunk_relevancy_sorter/tests/test_service.py +0 -0
  20. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/_common/config_checker/README.md +0 -0
  21. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/_common/config_checker/__init__.py +0 -0
  22. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/_common/config_checker/__main__.py +0 -0
  23. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/_common/config_checker/cli.py +0 -0
  24. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/_common/config_checker/differ.py +0 -0
  25. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/_common/config_checker/exporter.py +0 -0
  26. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/_common/config_checker/models.py +0 -0
  27. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/_common/config_checker/registry.py +0 -0
  28. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/_common/config_checker/validator.py +0 -0
  29. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/_common/default_language_model.py +0 -0
  30. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/_common/docx_generator/__init__.py +0 -0
  31. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/_common/docx_generator/config.py +0 -0
  32. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/_common/docx_generator/pandoc_converter.py +0 -0
  33. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/_common/docx_generator/schemas.py +0 -0
  34. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/_common/docx_generator/service.py +0 -0
  35. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/_common/docx_generator/template/Doc Template.docx +0 -0
  36. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/_common/endpoint_builder.py +0 -0
  37. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/_common/endpoint_requestor.py +0 -0
  38. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/_common/event_bus.py +0 -0
  39. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/_common/exception.py +0 -0
  40. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/_common/execution.py +0 -0
  41. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/_common/experimental/endpoint_builder.py +0 -0
  42. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/_common/experimental/endpoint_requestor.py +0 -0
  43. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/_common/experimental/write_up_agent/README.md +0 -0
  44. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/_common/experimental/write_up_agent/__init__.py +0 -0
  45. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/_common/experimental/write_up_agent/agent.py +0 -0
  46. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/_common/experimental/write_up_agent/config.py +0 -0
  47. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/_common/experimental/write_up_agent/examples/data.csv +0 -0
  48. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/_common/experimental/write_up_agent/examples/example_usage.py +0 -0
  49. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/_common/experimental/write_up_agent/schemas.py +0 -0
  50. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/_common/experimental/write_up_agent/services/__init__.py +0 -0
  51. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/_common/experimental/write_up_agent/services/dataframe_handler/__init__.py +0 -0
  52. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/_common/experimental/write_up_agent/services/dataframe_handler/exceptions.py +0 -0
  53. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/_common/experimental/write_up_agent/services/dataframe_handler/service.py +0 -0
  54. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/_common/experimental/write_up_agent/services/dataframe_handler/utils.py +0 -0
  55. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/__init__.py +0 -0
  56. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/config.py +0 -0
  57. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/exceptions.py +0 -0
  58. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/prompts/config.py +0 -0
  59. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/prompts/system_prompt.j2 +0 -0
  60. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/prompts/user_prompt.j2 +0 -0
  61. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/service.py +0 -0
  62. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/_common/experimental/write_up_agent/services/template_handler/__init__.py +0 -0
  63. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/_common/experimental/write_up_agent/services/template_handler/default_template.j2 +0 -0
  64. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/_common/experimental/write_up_agent/services/template_handler/exceptions.py +0 -0
  65. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/_common/experimental/write_up_agent/services/template_handler/service.py +0 -0
  66. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/_common/experimental/write_up_agent/services/template_handler/utils.py +0 -0
  67. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/_common/experimental/write_up_agent/utils.py +0 -0
  68. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/_common/feature_flags/schema.py +0 -0
  69. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/_common/metadata_filter_scope.py +0 -0
  70. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/_common/pydantic/rjsf_tags.py +0 -0
  71. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/_common/pydantic_helpers.py +0 -0
  72. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/_common/referencing.py +0 -0
  73. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/_common/string_utilities.py +0 -0
  74. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/_common/tests/test_referencing.py +0 -0
  75. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/_common/tests/test_string_utilities.py +0 -0
  76. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/_common/token/__init__.py +0 -0
  77. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/_common/token/image_token_counting.py +0 -0
  78. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/_common/token/token_counting.py +0 -0
  79. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/_common/token/tokenizers/deepseek/tokenizer.json +0 -0
  80. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/_common/token/tokenizers/qwen/tokenizer.json +0 -0
  81. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/_common/utils/__init__.py +0 -0
  82. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/_common/utils/files.py +0 -0
  83. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/_common/utils/image/encode.py +0 -0
  84. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/_common/utils/jinja/helpers.py +0 -0
  85. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/_common/utils/jinja/render.py +0 -0
  86. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/_common/utils/jinja/schema.py +0 -0
  87. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/_common/utils/jinja/utils.py +0 -0
  88. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/_common/utils/structured_output/__init__.py +0 -0
  89. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/_common/utils/structured_output/schema.py +0 -0
  90. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/_common/utils/write_configuration.py +0 -0
  91. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/_common/validate_required_values.py +0 -0
  92. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/_common/validators.py +0 -0
  93. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/agentic/__init__.py +0 -0
  94. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/agentic/debug_info_manager/test/test_debug_info_manager.py +0 -0
  95. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/agentic/evaluation/config.py +0 -0
  96. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/agentic/evaluation/context_relevancy/prompts/__init__.py +0 -0
  97. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/agentic/evaluation/context_relevancy/prompts/system_prompt.j2 +0 -0
  98. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/agentic/evaluation/context_relevancy/prompts/user_prompt.j2 +0 -0
  99. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/agentic/evaluation/context_relevancy/schema.py +0 -0
  100. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/agentic/evaluation/context_relevancy/service.py +0 -0
  101. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/agentic/evaluation/evaluation_manager.py +0 -0
  102. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/agentic/evaluation/exception.py +0 -0
  103. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/agentic/evaluation/hallucination/constants.py +0 -0
  104. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/agentic/evaluation/hallucination/hallucination_evaluation.py +0 -0
  105. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/agentic/evaluation/hallucination/prompts/__init__.py +0 -0
  106. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/agentic/evaluation/hallucination/prompts/system_prompt.j2 +0 -0
  107. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/agentic/evaluation/hallucination/prompts/user_prompt.j2 +0 -0
  108. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/agentic/evaluation/hallucination/service.py +0 -0
  109. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/agentic/evaluation/hallucination/utils.py +0 -0
  110. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/agentic/evaluation/output_parser.py +0 -0
  111. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/agentic/evaluation/schemas.py +0 -0
  112. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/agentic/evaluation/tests/fixtures.py +0 -0
  113. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/agentic/evaluation/tests/test_config.py +0 -0
  114. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/agentic/evaluation/tests/test_context_relevancy_service.py +0 -0
  115. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/agentic/evaluation/tests/test_hallucination_constants.py +0 -0
  116. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/agentic/evaluation/tests/test_hallucination_external_context.py +0 -0
  117. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/agentic/evaluation/tests/test_hallucination_utils.py +0 -0
  118. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/agentic/evaluation/tests/test_output_parser.py +0 -0
  119. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/agentic/evaluation/tests/test_prompt_loaders.py +0 -0
  120. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/agentic/evaluation/utils.py +0 -0
  121. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/agentic/feature_flags/__init__.py +0 -0
  122. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/agentic/feature_flags/feature_flags.py +0 -0
  123. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/agentic/history_manager/history_construction_with_contents.py +0 -0
  124. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/agentic/history_manager/history_manager.py +0 -0
  125. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/agentic/history_manager/loop_token_reducer.py +0 -0
  126. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/agentic/history_manager/settings.py +0 -0
  127. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/agentic/history_manager/utils.py +0 -0
  128. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/agentic/loop_runner/__init__.py +0 -0
  129. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/agentic/loop_runner/_iteration_handler_utils.py +0 -0
  130. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/agentic/loop_runner/_responses_iteration_handler_utils.py +0 -0
  131. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/agentic/loop_runner/_responses_stream_handler_utils.py +0 -0
  132. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/agentic/loop_runner/_stream_handler_utils.py +0 -0
  133. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/agentic/loop_runner/base.py +0 -0
  134. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/agentic/loop_runner/middleware/__init__.py +0 -0
  135. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/agentic/loop_runner/middleware/planning/__init__.py +0 -0
  136. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/agentic/loop_runner/middleware/planning/planning.py +0 -0
  137. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/agentic/loop_runner/middleware/planning/schema.py +0 -0
  138. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/agentic/loop_runner/runners/__init__.py +0 -0
  139. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/agentic/loop_runner/runners/basic.py +0 -0
  140. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/agentic/loop_runner/runners/mistral/__init__.py +0 -0
  141. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/agentic/loop_runner/runners/mistral/mistral_runner.py +0 -0
  142. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/agentic/loop_runner/runners/qwen/__init__.py +0 -0
  143. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/agentic/loop_runner/runners/qwen/helpers.py +0 -0
  144. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/agentic/loop_runner/runners/qwen/qwen_runner.py +0 -0
  145. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/agentic/message_log_manager/__init__.py +0 -0
  146. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/agentic/message_log_manager/service.py +0 -0
  147. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/agentic/message_log_order.py +0 -0
  148. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/agentic/postprocessor/postprocessor_manager.py +0 -0
  149. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/agentic/reference_manager/reference_manager.py +0 -0
  150. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/agentic/reference_manager/tests/test_external_context.py +0 -0
  151. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/agentic/responses_api/__init__.py +0 -0
  152. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/agentic/responses_api/postprocessors/code_display.py +0 -0
  153. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/agentic/responses_api/postprocessors/generated_files.py +0 -0
  154. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/agentic/responses_api/stream_handler.py +0 -0
  155. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/agentic/short_term_memory_manager/persistent_short_term_memory_manager.py +0 -0
  156. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/agentic/thinking_manager/thinking_manager.py +0 -0
  157. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/agentic/tools/__init__.py +0 -0
  158. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/agentic/tools/a2a/__init__.py +0 -0
  159. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/agentic/tools/a2a/config.py +0 -0
  160. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/agentic/tools/a2a/evaluation/__init__.py +0 -0
  161. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/agentic/tools/a2a/evaluation/_utils.py +0 -0
  162. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/agentic/tools/a2a/evaluation/config.py +0 -0
  163. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/agentic/tools/a2a/evaluation/evaluator.py +0 -0
  164. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/agentic/tools/a2a/evaluation/summarization_user_message.j2 +0 -0
  165. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/agentic/tools/a2a/manager.py +0 -0
  166. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/agentic/tools/a2a/postprocessing/__init__.py +0 -0
  167. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/agentic/tools/a2a/postprocessing/_display_utils.py +0 -0
  168. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/agentic/tools/a2a/postprocessing/_ref_utils.py +0 -0
  169. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/agentic/tools/a2a/postprocessing/config.py +0 -0
  170. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/agentic/tools/a2a/postprocessing/display.py +0 -0
  171. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/agentic/tools/a2a/postprocessing/references.py +0 -0
  172. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/agentic/tools/a2a/postprocessing/test/test_display.py +0 -0
  173. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/agentic/tools/a2a/postprocessing/test/test_display_utils.py +0 -0
  174. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/agentic/tools/a2a/postprocessing/test/test_ref_utils.py +0 -0
  175. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/agentic/tools/a2a/postprocessing/test/test_references.py +0 -0
  176. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/agentic/tools/a2a/prompts.py +0 -0
  177. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/agentic/tools/a2a/response_watcher/__init__.py +0 -0
  178. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/agentic/tools/a2a/response_watcher/service.py +0 -0
  179. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/agentic/tools/a2a/tool/__init__.py +0 -0
  180. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/agentic/tools/a2a/tool/_memory.py +0 -0
  181. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/agentic/tools/a2a/tool/_schema.py +0 -0
  182. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/agentic/tools/a2a/tool/config.py +0 -0
  183. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/agentic/tools/a2a/tool/service.py +0 -0
  184. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/agentic/tools/a2a/tool/test/test_service_utils.py +0 -0
  185. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/agentic/tools/agent_chunks_hanlder.py +0 -0
  186. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/agentic/tools/config.py +0 -0
  187. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/agentic/tools/experimental/__init__.py +0 -0
  188. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/agentic/tools/experimental/ask_user_tool/__init__.py +0 -0
  189. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/agentic/tools/experimental/ask_user_tool/config.py +0 -0
  190. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/agentic/tools/experimental/ask_user_tool/tool.py +0 -0
  191. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/agentic/tools/experimental/open_file_tool/__init__.py +0 -0
  192. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/agentic/tools/experimental/open_file_tool/config.py +0 -0
  193. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/agentic/tools/experimental/open_file_tool/runtime.py +0 -0
  194. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/agentic/tools/experimental/open_file_tool/tool.py +0 -0
  195. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/agentic/tools/experimental/retrieve_search_scope_tool/__init__.py +0 -0
  196. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/agentic/tools/experimental/retrieve_search_scope_tool/config.py +0 -0
  197. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/agentic/tools/experimental/retrieve_search_scope_tool/tool.py +0 -0
  198. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/agentic/tools/experimental/todo/__init__.py +0 -0
  199. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/agentic/tools/experimental/todo/config.py +0 -0
  200. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/agentic/tools/experimental/todo/prompts/__init__.py +0 -0
  201. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/agentic/tools/experimental/todo/prompts/execution_reminder.j2 +0 -0
  202. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/agentic/tools/experimental/todo/prompts/system_prompt.j2 +0 -0
  203. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/agentic/tools/experimental/todo/prompts/tool_description.j2 +0 -0
  204. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/agentic/tools/experimental/todo/prompts/verification_nudge.j2 +0 -0
  205. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/agentic/tools/experimental/todo/schemas.py +0 -0
  206. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/agentic/tools/experimental/todo/service.py +0 -0
  207. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/agentic/tools/factory.py +0 -0
  208. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/agentic/tools/mcp/__init__.py +0 -0
  209. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/agentic/tools/mcp/manager.py +0 -0
  210. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/agentic/tools/mcp/models.py +0 -0
  211. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/agentic/tools/mcp/tool_wrapper.py +0 -0
  212. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/agentic/tools/names.py +0 -0
  213. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/agentic/tools/openai_builtin/__init__.py +0 -0
  214. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/agentic/tools/openai_builtin/base.py +0 -0
  215. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/__init__.py +0 -0
  216. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/activator/__init__.py +0 -0
  217. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/activator/config.py +0 -0
  218. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/activator/service.py +0 -0
  219. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/builder/__init__.py +0 -0
  220. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/builder/_container.py +0 -0
  221. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/builder/_files.py +0 -0
  222. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/builder/_memory.py +0 -0
  223. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/builder/builder.py +0 -0
  224. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/config.py +0 -0
  225. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/postprocessors/__init__.py +0 -0
  226. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/postprocessors/artifacts.py +0 -0
  227. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/postprocessors/code_display.py +0 -0
  228. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/schemas.py +0 -0
  229. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/tool/__init__.py +0 -0
  230. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/tool/config.py +0 -0
  231. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/tool/service.py +0 -0
  232. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/agentic/tools/openai_builtin/manager.py +0 -0
  233. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/agentic/tools/run_context.py +0 -0
  234. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/agentic/tools/schemas.py +0 -0
  235. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/agentic/tools/test/test_mcp_manager.py +0 -0
  236. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/agentic/tools/test/test_tool_progress_reporter.py +0 -0
  237. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/agentic/tools/tool.py +0 -0
  238. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/agentic/tools/tool_manager.py +0 -0
  239. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/agentic/tools/tool_progress_reporter.py +0 -0
  240. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/agentic/tools/utils/__init__.py +0 -0
  241. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/agentic/tools/utils/source_handling/__init__.py +0 -0
  242. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/agentic/tools/utils/source_handling/schema.py +0 -0
  243. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/agentic/tools/utils/source_handling/source_formatting.py +0 -0
  244. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/agentic/tools/utils/source_handling/tests/test_source_formatting.py +0 -0
  245. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/agentic_table/synthetic_chat_event.py +0 -0
  246. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/app/__init__.py +0 -0
  247. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/app/chat_event_filter_options_settings.py +0 -0
  248. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/app/dev_util.py +0 -0
  249. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/app/fast_api_factory.py +0 -0
  250. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/app/feature_flags.py +0 -0
  251. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/app/find_env_file.py +0 -0
  252. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/app/init_logging.py +0 -0
  253. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/app/init_sdk.py +0 -0
  254. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/app/performance/async_tasks.py +0 -0
  255. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/app/performance/async_wrapper.py +0 -0
  256. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/app/schemas.py +0 -0
  257. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/app/unique_settings.py +0 -0
  258. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/app/verification.py +0 -0
  259. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/app/webhook.py +0 -0
  260. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/chat/__init__.py +0 -0
  261. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/chat/cancellation.py +0 -0
  262. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/chat/constants.py +0 -0
  263. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/chat/deprecated/__init__.py +0 -0
  264. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/chat/deprecated/service.py +0 -0
  265. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/chat/functions.py +0 -0
  266. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/chat/rendering.py +0 -0
  267. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/chat/responses_api.py +0 -0
  268. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/chat/schemas.py +0 -0
  269. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/chat/service.py +0 -0
  270. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/chat/state.py +0 -0
  271. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/chat/utils.py +0 -0
  272. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/content/__init__.py +0 -0
  273. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/content/constants.py +0 -0
  274. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/content/functions.py +0 -0
  275. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/content/schemas.py +0 -0
  276. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/content/service.py +0 -0
  277. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/content/smart_rules.py +0 -0
  278. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/content/utils.py +0 -0
  279. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/data_extraction/README.md +0 -0
  280. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/data_extraction/__init__.py +0 -0
  281. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/data_extraction/augmented/__init__.py +0 -0
  282. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/data_extraction/augmented/service.py +0 -0
  283. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/data_extraction/base.py +0 -0
  284. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/data_extraction/basic/__init__.py +0 -0
  285. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/data_extraction/basic/config.py +0 -0
  286. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/data_extraction/basic/prompt.py +0 -0
  287. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/data_extraction/basic/service.py +0 -0
  288. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/elicitation/__init__.py +0 -0
  289. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/elicitation/constants.py +0 -0
  290. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/elicitation/exceptions.py +0 -0
  291. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/elicitation/functions.py +0 -0
  292. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/elicitation/schemas.py +0 -0
  293. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/elicitation/service.py +0 -0
  294. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/embedding/__init__.py +0 -0
  295. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/embedding/constants.py +0 -0
  296. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/embedding/functions.py +0 -0
  297. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/embedding/schemas.py +0 -0
  298. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/embedding/service.py +0 -0
  299. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/embedding/utils.py +0 -0
  300. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/experimental/README.md +0 -0
  301. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/experimental/__init__.py +0 -0
  302. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/experimental/_internal/__init__.py +0 -0
  303. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/experimental/_internal/streaming/__init__.py +0 -0
  304. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/experimental/_internal/streaming/common.py +0 -0
  305. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/experimental/_internal/streaming/pattern_replacer.py +0 -0
  306. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/experimental/components/__init__.py +0 -0
  307. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/experimental/components/_base.py +0 -0
  308. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/experimental/components/content_tree/__init__.py +0 -0
  309. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/experimental/components/content_tree/functions.py +0 -0
  310. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/experimental/components/content_tree/schemas.py +0 -0
  311. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/experimental/components/content_tree/service.py +0 -0
  312. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/experimental/components/internal_search/__init__.py +0 -0
  313. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/experimental/components/internal_search/base/__init__.py +0 -0
  314. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/experimental/components/internal_search/base/config.py +0 -0
  315. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/experimental/components/internal_search/base/schemas.py +0 -0
  316. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/experimental/components/internal_search/base/service.py +0 -0
  317. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/experimental/components/internal_search/base/utils.py +0 -0
  318. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/experimental/components/internal_search/chat/__init__.py +0 -0
  319. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/experimental/components/internal_search/chat/config.py +0 -0
  320. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/experimental/components/internal_search/chat/schemas.py +0 -0
  321. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/experimental/components/internal_search/chat/service.py +0 -0
  322. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/experimental/components/internal_search/knowledge_base/__init__.py +0 -0
  323. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/experimental/components/internal_search/knowledge_base/config.py +0 -0
  324. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/experimental/components/internal_search/knowledge_base/schemas.py +0 -0
  325. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/experimental/components/internal_search/knowledge_base/service.py +0 -0
  326. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/experimental/components/internal_search/post_processing/__init__.py +0 -0
  327. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/experimental/components/internal_search/post_processing/config.py +0 -0
  328. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/experimental/components/internal_search/post_processing/service.py +0 -0
  329. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/experimental/content_tree/__init__.py +0 -0
  330. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/experimental/identity/__init__.py +0 -0
  331. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/experimental/integrations/__init__.py +0 -0
  332. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/experimental/integrations/openai/__init__.py +0 -0
  333. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/experimental/integrations/openai/streaming/__init__.py +0 -0
  334. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/__init__.py +0 -0
  335. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/_async_bridge.py +0 -0
  336. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/chat_completions/__init__.py +0 -0
  337. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/chat_completions/complete_with_references.py +0 -0
  338. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/chat_completions/stream_event_router.py +0 -0
  339. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/chat_completions/text_event_handler.py +0 -0
  340. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/chat_completions/tool_call_event_handler.py +0 -0
  341. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/events.py +0 -0
  342. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/protocols/__init__.py +0 -0
  343. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/protocols/chat_completions.py +0 -0
  344. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/protocols/responses.py +0 -0
  345. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/responses/__init__.py +0 -0
  346. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/responses/code_interpreter_event_handler.py +0 -0
  347. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/responses/complete_with_references.py +0 -0
  348. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/responses/completed_event_handler.py +0 -0
  349. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/responses/stream_event_router.py +0 -0
  350. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/responses/text_delta_event_handler.py +0 -0
  351. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/responses/tool_call_event_handler.py +0 -0
  352. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/subscribers/__init__.py +0 -0
  353. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/subscribers/message_persister.py +0 -0
  354. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/subscribers/progress_log_persister.py +0 -0
  355. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/experimental/resources/__init__.py +0 -0
  356. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/experimental/resources/content_folder/__init__.py +0 -0
  357. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/experimental/resources/content_folder/functions.py +0 -0
  358. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/experimental/resources/content_folder/schemas.py +0 -0
  359. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/experimental/resources/content_folder/service.py +0 -0
  360. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/experimental/resources/facades/__init__.py +0 -0
  361. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/experimental/resources/facades/identity/__init__.py +0 -0
  362. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/experimental/resources/facades/identity/service.py +0 -0
  363. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/experimental/resources/feature_flags/README.md +0 -0
  364. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/experimental/resources/feature_flags/__init__.py +0 -0
  365. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/experimental/resources/feature_flags/_graphql_client.py +0 -0
  366. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/experimental/resources/feature_flags/_ttl_cache.py +0 -0
  367. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/experimental/resources/feature_flags/client.py +0 -0
  368. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/experimental/resources/feature_flags/schemas.py +0 -0
  369. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/experimental/resources/feature_flags/settings.py +0 -0
  370. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/experimental/resources/group/__init__.py +0 -0
  371. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/experimental/resources/group/functions.py +0 -0
  372. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/experimental/resources/group/schemas.py +0 -0
  373. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/experimental/resources/group/service.py +0 -0
  374. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/experimental/resources/scheduled_task/__init__.py +0 -0
  375. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/experimental/resources/scheduled_task/cron.py +0 -0
  376. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/experimental/resources/scheduled_task/functions.py +0 -0
  377. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/experimental/resources/scheduled_task/schemas.py +0 -0
  378. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/experimental/resources/scheduled_task/service.py +0 -0
  379. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/experimental/resources/user/__init__.py +0 -0
  380. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/experimental/resources/user/functions.py +0 -0
  381. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/experimental/resources/user/schemas.py +0 -0
  382. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/experimental/resources/user/service.py +0 -0
  383. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/experimental/testing/__init__.py +0 -0
  384. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/framework_utilities/__init__.py +0 -0
  385. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/framework_utilities/langchain/__init__.py +0 -0
  386. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/framework_utilities/langchain/client.py +0 -0
  387. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/framework_utilities/langchain/history.py +0 -0
  388. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/framework_utilities/openai/__init__.py +0 -0
  389. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/framework_utilities/openai/client.py +0 -0
  390. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/framework_utilities/openai/message_builder.py +0 -0
  391. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/framework_utilities/utils.py +0 -0
  392. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/language_model/__init__.py +0 -0
  393. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/language_model/_responses_api_utils.py +0 -0
  394. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/language_model/builder.py +0 -0
  395. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/language_model/constants.py +0 -0
  396. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/language_model/default_language_model.py +0 -0
  397. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/language_model/functions.py +0 -0
  398. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/language_model/infos.py +0 -0
  399. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/language_model/invocation_stats.py +0 -0
  400. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/language_model/prompt.py +0 -0
  401. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/language_model/reference.py +0 -0
  402. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/language_model/schemas.py +0 -0
  403. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/language_model/service.py +0 -0
  404. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/language_model/settings.py +0 -0
  405. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/language_model/stream_transform.py +0 -0
  406. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/language_model/utils.py +0 -0
  407. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/monitoring/__init__.py +0 -0
  408. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/monitoring/gunicorn.py +0 -0
  409. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/monitoring/middleware.py +0 -0
  410. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/monitoring/registry.py +0 -0
  411. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/protocols/support.py +0 -0
  412. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/services/__init__.py +0 -0
  413. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/services/chat_service.py +0 -0
  414. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/services/factory.py +0 -0
  415. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/services/knowledge_base.py +0 -0
  416. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/short_term_memory/__init__.py +0 -0
  417. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/short_term_memory/constants.py +0 -0
  418. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/short_term_memory/functions.py +0 -0
  419. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/short_term_memory/schemas.py +0 -0
  420. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/short_term_memory/service.py +0 -0
  421. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/smart_rules/__init__.py +0 -0
  422. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/unique_toolkit/smart_rules/compile.py +0 -0
  423. {unique_toolkit-2026.30.0.dev22 → unique_toolkit-2026.30.0.dev24}/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.30.0.dev22
3
+ Version: 2026.30.0.dev24
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.30.0.dev9,<2026.30.0rc0
19
+ Requires-Dist: unique-sdk>=2026.30.0.dev10,<2026.30.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.30.0.dev22"
3
+ version = "2026.30.0.dev24"
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.30.0.dev9,<2026.30.0rc0",
31
+ "unique-sdk>=2026.30.0.dev10,<2026.30.0rc0",
32
32
  "jambo>=0.1.2,<0.2",
33
33
  "jinja2>=3.1.6,<4",
34
34
  "docxtpl>=0.20.1,<0.21",
@@ -48,6 +48,9 @@ class Analytics(TypedDict):
48
48
  language_model: AnalyticsLanguageModel
49
49
  loop_iteration_count: int
50
50
  mcp_tool_names_used: list[AnalyticsToolName]
51
+ # Total size of artifacts/files created this turn, in MiB. None when Code
52
+ # Interpreter did not run; 0.0 when it ran but produced nothing.
53
+ output_size: float | None
51
54
  references_count: int
52
55
  skills_used: list[AnalyticsSkill]
53
56
  subagent_names_used: list[AnalyticsToolName]
@@ -129,8 +132,8 @@ class DebugInfoManager:
129
132
  ]
130
133
  # Artifacts are recorded at the postprocessor seam (Code Interpreter's
131
134
  # DisplayCodeInterpreterFilesPostProcessor) into debug_info["artifacts"].
132
- # Absent when no Code Interpreter ran this turn → both fields stay None,
133
- # preserving the always-present, null-when-unknown contract.
135
+ # Absent when no Code Interpreter ran this turn → artifact fields stay
136
+ # None, preserving the always-present, null-when-unknown contract.
134
137
  analytics = Analytics(
135
138
  tools_used=analytics_tools,
136
139
  tool_call_count=len(analytics_tools),
@@ -152,6 +155,7 @@ class DebugInfoManager:
152
155
  total_time_to_answer_ms=total_time_to_answer_ms,
153
156
  artifacts_created_count=artifacts["count"] if artifacts else None,
154
157
  artifacts_created_filetype=artifacts["filetypes"] if artifacts else None,
158
+ output_size=artifacts["output_size"] if artifacts else None,
155
159
  # None when the user-memory postprocessor is not activated for this
156
160
  # turn; True/False when it ran and did/didn't update the profile.
157
161
  context_memory_updated=context_memory_updated,
@@ -46,16 +46,22 @@ from unique_toolkit.short_term_memory.service import ShortTermMemoryService
46
46
  logger = logging.getLogger(__name__)
47
47
 
48
48
 
49
+ _BYTES_PER_MB = 1024 * 1024
50
+
51
+
49
52
  class ArtifactsDebugInfo(TypedDict):
50
53
  """This turn's successfully-created artifacts, for analytics.
51
54
 
52
- Feeds analytics.artifacts_created_count / artifacts_created_filetype. The
53
- postprocessor returns this to the orchestrator, which owns the
54
- ``DebugInfoManager`` and records it.
55
+ Feeds analytics.artifacts_created_count / artifacts_created_filetype /
56
+ output_size. The postprocessor returns this to the orchestrator, which
57
+ owns the ``DebugInfoManager`` and records it.
55
58
  """
56
59
 
57
60
  count: int
58
61
  filetypes: list[str]
62
+ # Total size of this turn's successfully-created artifacts, in MiB
63
+ # (bytes / 1024**2). 0.0 when the interpreter ran but produced nothing.
64
+ output_size: float
59
65
 
60
66
 
61
67
  class _ChatLoggerAdapter(logging.LoggerAdapter[logging.Logger]):
@@ -380,6 +386,9 @@ class DisplayCodeInterpreterFilesPostProcessor(
380
386
  chat_id=chat_id,
381
387
  )
382
388
 
389
+ # Cleared at the start of each run(); holds this-turn download sizes.
390
+ self._file_size_map: dict[str, int] = {}
391
+
383
392
  def _build_retry(self) -> AsyncRetrying:
384
393
  """Build a tenacity retry policy from the current config.
385
394
 
@@ -407,6 +416,10 @@ class DisplayCodeInterpreterFilesPostProcessor(
407
416
  [cf.filename for cf in container_files],
408
417
  )
409
418
 
419
+ # Per-turn byte sizes of successfully uploaded files. Not persisted to
420
+ # short-term memory — only feeds this turn's analytics.output_size.
421
+ self._file_size_map = {}
422
+
410
423
  phase_t0 = time.monotonic()
411
424
  try:
412
425
  self._content_map: dict[str, str | None] = await self._load_previous_files() # pyright: ignore[reportAttributeAccessIssue]
@@ -501,17 +514,19 @@ class DisplayCodeInterpreterFilesPostProcessor(
501
514
  ) -> ArtifactsDebugInfo | None:
502
515
  """Compute this turn's successfully-created artifacts.
503
516
 
504
- Feeds analytics.artifacts_created_count / artifacts_created_filetype.
517
+ Feeds analytics.artifacts_created_count / artifacts_created_filetype /
518
+ output_size.
505
519
 
506
520
  Returns ``None`` when the Code Interpreter did not execute this turn
507
521
  (``code_interpreter_calls`` empty). The postprocessor is registered
508
522
  whenever the tool is *enabled*, so ``run()`` also fires on turns where the
509
523
  model never invoked it — returning ``None`` there keeps analytics.artifacts_*
510
- as null ("did not run") rather than 0/[] ("ran, created nothing"). When it
511
- did run, count is scoped to this response's ``container_files`` (not
512
- ``self._content_map``, which also holds prior-message files from short-term
513
- memory), successful uploads only, with a deduped, sorted set of file
514
- extensions.
524
+ / output_size as null ("did not run") rather than 0/[]/0.0 ("ran, created
525
+ nothing"). When it did run, metrics are scoped to this response's
526
+ ``container_files`` (not ``self._content_map``, which also holds
527
+ prior-message files from short-term memory), successful uploads only, with
528
+ a deduped, sorted set of file extensions and total size in MiB from
529
+ ``self._file_size_map`` (populated at download time).
515
530
  """
516
531
  # Interpreter did not run this turn → leave artifacts null, not 0/[].
517
532
  if not loop_response.code_interpreter_calls:
@@ -522,9 +537,13 @@ class DisplayCodeInterpreterFilesPostProcessor(
522
537
  for cf in loop_response.container_files
523
538
  if self._content_map.get(cf.filename) is not None
524
539
  }
540
+ total_bytes = sum(
541
+ self._file_size_map.get(name, 0) for name in created_filenames
542
+ )
525
543
  return ArtifactsDebugInfo(
526
544
  count=len(created_filenames),
527
545
  filetypes=sorted({_artifact_filetype(name) for name in created_filenames}),
546
+ output_size=total_bytes / _BYTES_PER_MB,
528
547
  )
529
548
 
530
549
  @override
@@ -763,6 +782,9 @@ class DisplayCodeInterpreterFilesPostProcessor(
763
782
  upload_ms,
764
783
  pipeline_ms,
765
784
  )
785
+ # Record size only on successful upload so failed downloads don't
786
+ # inflate analytics.output_size (mirrors content_map success gating).
787
+ self._file_size_map[container_file.filename] = len(file_bytes)
766
788
  return _ContentInfo(filename=container_file.filename, content_id=content.id)
767
789
 
768
790
  async def _download_file_bytes_with_progress(
@@ -3,6 +3,7 @@ from unique_sdk.api_resources._agentic_table import (
3
3
  CellRendererTypes,
4
4
  FilterTypes,
5
5
  MagicTableActivityResponse,
6
+ MagicTableArtifactState,
6
7
  MagicTableArtifactType,
7
8
  MagicTableMetadataEntry,
8
9
  RowVerificationStatus,
@@ -12,9 +13,11 @@ from .schemas import (
12
13
  AgenticTableSheetState,
13
14
  AgreementStatus,
14
15
  ArtifactType,
16
+ CreatedMagicTableSheet,
15
17
  LogEntry,
16
18
  MagicTableAction,
17
19
  MagicTableAddMetadataPayload,
20
+ MagicTableArtifact,
18
21
  MagicTableBasePayload,
19
22
  MagicTableCell,
20
23
  MagicTableCellMetaData,
@@ -30,20 +33,34 @@ from .schemas import (
30
33
  RerunRowMetadata,
31
34
  RowMetadataEntry,
32
35
  SelectionMethod,
36
+ SheetMetadataEntryInput,
33
37
  SheetType,
34
38
  )
35
- from .service import AgenticTableService
39
+ from .service import (
40
+ AgenticTableArtifactError,
41
+ AgenticTableRunNotStartedError,
42
+ AgenticTableRunTimeoutError,
43
+ AgenticTableService,
44
+ LockedAgenticTableError,
45
+ )
36
46
 
37
47
  __all__ = [
38
48
  "AgenticTableService",
49
+ "AgenticTableArtifactError",
50
+ "AgenticTableRunNotStartedError",
51
+ "AgenticTableRunTimeoutError",
39
52
  "ActivityStatus",
40
53
  "AgenticTableSheetState",
41
54
  "AgreementStatus",
42
55
  "ArtifactType",
43
56
  "CellRendererTypes",
57
+ "CreatedMagicTableSheet",
44
58
  "FilterTypes",
59
+ "LockedAgenticTableError",
45
60
  "LogEntry",
46
61
  "MagicTableActivityResponse",
62
+ "MagicTableArtifact",
63
+ "MagicTableArtifactState",
47
64
  "MagicTableArtifactType",
48
65
  "MagicTableAction",
49
66
  "MagicTableMetadataEntry",
@@ -64,5 +81,6 @@ __all__ = [
64
81
  "RowMetadataEntry",
65
82
  "RowVerificationStatus",
66
83
  "SelectionMethod",
84
+ "SheetMetadataEntryInput",
67
85
  "SheetType",
68
86
  ]
@@ -10,6 +10,7 @@ from pydantic import (
10
10
  from unique_sdk import (
11
11
  AgenticTableSheetState,
12
12
  AgreementStatus,
13
+ MagicTableArtifactState,
13
14
  MagicTableArtifactType,
14
15
  SelectionMethod,
15
16
  )
@@ -401,3 +402,53 @@ class MagicTableSheet(BaseModel):
401
402
  magic_table_sheet_metadata: list[RowMetadataEntry] = Field(
402
403
  default_factory=list, description="The metadata for the sheet"
403
404
  )
405
+
406
+
407
+ class CreatedMagicTableSheet(BaseModel):
408
+ """Response of `POST /magic-table` (create sheet in a space)."""
409
+
410
+ model_config = get_configuration_dict()
411
+ sheet_id: str
412
+ due_diligence_id: str = Field(
413
+ description="Identifier of the due-diligence record backing this sheet."
414
+ )
415
+ name: str
416
+ state: AgenticTableSheetState
417
+ chat_id: str | None = Field(
418
+ default=None, description="Chat that owns the sheet (may be null)."
419
+ )
420
+ created_by: str
421
+ company_id: str
422
+ created_at: str
423
+ due_at: str | None = None
424
+
425
+
426
+ class MagicTableArtifact(BaseModel):
427
+ """Export artifact of a sheet as returned by `GET /magic-table/{tableId}/artifacts`."""
428
+
429
+ model_config = get_configuration_dict()
430
+ id: str
431
+ name: str | None = None
432
+ content_id: str | None = Field(
433
+ default=None,
434
+ description="Content id of the generated file. Only present once the artifact is DONE; download it via the Content API.",
435
+ )
436
+ mime_type: str | None = None
437
+ artifact_type: MagicTableArtifactType
438
+ artifact_state: MagicTableArtifactState = Field(
439
+ description="IN_PROGRESS while the agent is generating the export, DONE when ready."
440
+ )
441
+ created_at: str
442
+ updated_at: str
443
+
444
+
445
+ class SheetMetadataEntryInput(BaseModel):
446
+ """Input entry for creating sheet metadata (key/value pairs) on a sheet."""
447
+
448
+ model_config = get_configuration_dict()
449
+ key: str
450
+ value: str
451
+ exact_filter: bool = Field(
452
+ default=False,
453
+ description="Whether the metadata is to be used for strict filtering",
454
+ )
@@ -1,4 +1,6 @@
1
+ import asyncio
1
2
  import logging
3
+ import time
2
4
  from typing import Any, cast
3
5
 
4
6
  from typing_extensions import deprecated
@@ -8,6 +10,7 @@ from unique_sdk import (
8
10
  AgreementStatus,
9
11
  CellRendererTypes,
10
12
  FilterTypes,
13
+ MagicTableArtifactState,
11
14
  MagicTableArtifactType,
12
15
  RowVerificationStatus,
13
16
  SelectionMethod,
@@ -16,11 +19,14 @@ from unique_sdk import AgenticTableCell as SDKAgenticTableCell
16
19
  from unique_sdk.api_resources._agentic_table import ActivityStatus
17
20
 
18
21
  from .schemas import (
22
+ CreatedMagicTableSheet,
19
23
  LogEntry,
20
24
  MagicTableAction,
25
+ MagicTableArtifact,
21
26
  MagicTableCell,
22
27
  MagicTableSheet,
23
28
  RowMetadataEntry,
29
+ SheetMetadataEntryInput,
24
30
  )
25
31
 
26
32
 
@@ -47,6 +53,18 @@ class LockedAgenticTableError(Exception):
47
53
  pass
48
54
 
49
55
 
56
+ class AgenticTableRunNotStartedError(TimeoutError):
57
+ """Raised by ``wait_for_run`` when the sheet never left IDLE within the start timeout."""
58
+
59
+
60
+ class AgenticTableRunTimeoutError(TimeoutError):
61
+ """Raised by ``wait_for_run``/``wait_for_artifacts`` when the operation did not complete in time."""
62
+
63
+
64
+ class AgenticTableArtifactError(Exception):
65
+ """Raised by ``wait_for_artifacts`` when an artifact ends up in the ERROR state."""
66
+
67
+
50
68
  class AgenticTableService:
51
69
  """
52
70
  Provides methods to interact with the Agentic Table.
@@ -69,6 +87,51 @@ class AgenticTableService:
69
87
  self._company_id = company_id
70
88
  self.table_id = table_id
71
89
  self.logger = logger
90
+ self.created_sheet: CreatedMagicTableSheet | None = None
91
+
92
+ @classmethod
93
+ async def create_sheet(
94
+ cls,
95
+ user_id: str,
96
+ company_id: str,
97
+ assistant_id: str,
98
+ name: str | None = None,
99
+ due_at: str | None = None,
100
+ logger: logging.Logger = logging.getLogger(__name__),
101
+ ) -> "AgenticTableService":
102
+ """Create a new Agentic Table sheet in a space and return a service bound to it.
103
+
104
+ Args:
105
+ user_id: The user creating the sheet (must have access to the space).
106
+ company_id: The company id.
107
+ assistant_id: The space (assistant) to create the sheet in.
108
+ name: Optional sheet name.
109
+ due_at: Optional due date (ISO 8601 string).
110
+
111
+ Returns:
112
+ AgenticTableService: A service bound to the new sheet. The full creation
113
+ response (including ``due_diligence_id``) is available on ``created_sheet``.
114
+ """
115
+ params: dict[str, str] = {"assistantId": assistant_id}
116
+ if name is not None:
117
+ params["name"] = name
118
+ if due_at is not None:
119
+ params["dueAt"] = due_at
120
+ # ``Unpack[CreateSheet]`` + dynamic keys: basedpyright cannot tie ``params`` to optional fields.
121
+ created = await AgenticTable.create_sheet(
122
+ user_id=user_id,
123
+ company_id=company_id,
124
+ **cast(Any, params),
125
+ )
126
+ sheet = CreatedMagicTableSheet.model_validate(created)
127
+ service = cls(
128
+ user_id=user_id,
129
+ company_id=company_id,
130
+ table_id=sheet.sheet_id,
131
+ logger=logger,
132
+ )
133
+ service.created_sheet = sheet
134
+ return service
72
135
 
73
136
  async def set_cell(
74
137
  self,
@@ -519,3 +582,252 @@ class AgenticTableService:
519
582
  status=status,
520
583
  locked=locked,
521
584
  )
585
+
586
+ async def import_questions_and_sources(
587
+ self,
588
+ question_file_ids: list[str] | None = None,
589
+ question_texts: list[str] | None = None,
590
+ source_file_ids: list[str] | None = None,
591
+ context: str | None = None,
592
+ ) -> None:
593
+ """Import questions and source files into the sheet (`POST .../metadata`).
594
+
595
+ Delta semantics: ids/texts already on the sheet are silently skipped. The
596
+ agent run is only triggered when new questions (file ids or texts) are
597
+ provided; adding only sources does not trigger a run. Rejected while the
598
+ sheet is PROCESSING.
599
+
600
+ Args:
601
+ question_file_ids: Content ids of questionnaire files to import.
602
+ question_texts: Question texts to import directly.
603
+ source_file_ids: Content ids of source (knowledge) files to answer from.
604
+ context: Optional free-text context passed to the agent.
605
+
606
+ Raises:
607
+ Exception: If the API reports a non-success status.
608
+ """
609
+ params: dict[str, Any] = {}
610
+ if question_file_ids is not None:
611
+ params["questionFileIds"] = question_file_ids
612
+ if question_texts is not None:
613
+ params["questionTexts"] = question_texts
614
+ if source_file_ids is not None:
615
+ params["sourceFileIds"] = source_file_ids
616
+ if context is not None:
617
+ params["context"] = context
618
+ result = await AgenticTable.add_metadata(
619
+ user_id=self._user_id,
620
+ company_id=self._company_id,
621
+ tableId=self.table_id,
622
+ **cast(Any, params),
623
+ )
624
+ if not result.get("status"):
625
+ raise Exception(result.get("message") or "Failed to import metadata")
626
+
627
+ async def generate_artifacts(
628
+ self,
629
+ artifact_types: list[MagicTableArtifactType],
630
+ ) -> None:
631
+ """Trigger export generation (`POST .../generate-artifact`).
632
+
633
+ Generation is asynchronous: this only initiates it. Use ``wait_for_artifacts``
634
+ (or poll ``list_artifacts``) to detect completion, then download the artifact's
635
+ ``content_id`` via the Content API.
636
+
637
+ Raises:
638
+ Exception: If the API reports a non-success status.
639
+ """
640
+ result = await AgenticTable.generate_artifact(
641
+ user_id=self._user_id,
642
+ company_id=self._company_id,
643
+ tableId=self.table_id,
644
+ artifactTypes=artifact_types,
645
+ )
646
+ if not result.get("status"):
647
+ raise Exception(
648
+ result.get("message") or "Failed to trigger artifact generation"
649
+ )
650
+
651
+ async def list_artifacts(self) -> list[MagicTableArtifact]:
652
+ """List export artifacts of the sheet (`GET .../artifacts`)."""
653
+ artifacts = await AgenticTable.list_artifacts(
654
+ user_id=self._user_id,
655
+ company_id=self._company_id,
656
+ tableId=self.table_id,
657
+ )
658
+ return [MagicTableArtifact.model_validate(artifact) for artifact in artifacts]
659
+
660
+ async def create_sheet_metadata(
661
+ self,
662
+ entries: list[SheetMetadataEntryInput],
663
+ ) -> None:
664
+ """Create sheet metadata entries (key/value pairs) on the sheet.
665
+
666
+ Raises:
667
+ Exception: If the API reports a non-success status.
668
+ """
669
+ result = await AgenticTable.create_sheet_metadata(
670
+ user_id=self._user_id,
671
+ company_id=self._company_id,
672
+ tableId=self.table_id,
673
+ entries=[
674
+ cast(
675
+ Any,
676
+ entry.model_dump(by_alias=True, exclude_none=True),
677
+ )
678
+ for entry in entries
679
+ ],
680
+ )
681
+ if not result.get("status"):
682
+ raise Exception(result.get("message") or "Failed to create sheet metadata")
683
+
684
+ async def delete_sheet_metadata(self, metadata_id: str) -> None:
685
+ """Delete a sheet metadata entry by its id.
686
+
687
+ Raises:
688
+ Exception: If the API reports a non-success status.
689
+ """
690
+ result = await AgenticTable.delete_sheet_metadata(
691
+ user_id=self._user_id,
692
+ company_id=self._company_id,
693
+ tableId=self.table_id,
694
+ metadataId=metadata_id,
695
+ )
696
+ if not result.get("status"):
697
+ raise Exception(result.get("message") or "Failed to delete sheet metadata")
698
+
699
+ async def wait_for_run(
700
+ self,
701
+ start_timeout: float = 120.0,
702
+ completion_timeout: float = 3600.0,
703
+ poll_interval: float = 5.0,
704
+ ) -> AgenticTableSheetState:
705
+ """Wait for an agent run to start and complete, by polling the sheet state.
706
+
707
+ Two-phase poll:
708
+ 1. Wait until the sheet enters PROCESSING (the agent picked up the trigger).
709
+ Terminal state left over from an earlier run is not treated as a new
710
+ run. If PROCESSING is never observed within ``start_timeout``, raise
711
+ ``AgenticTableRunNotStartedError`` — most likely the trigger did not
712
+ start a run (e.g. no new questions were imported).
713
+ 2. Wait until the sheet returns to IDLE or STOPPED_BY_USER (the run
714
+ finished), up to ``completion_timeout``.
715
+
716
+ Because the API exposes only the current state, a complete
717
+ PROCESSING-to-IDLE transition between two polls cannot be observed.
718
+ Keep ``poll_interval`` shorter than the expected minimum run duration.
719
+
720
+ Args:
721
+ start_timeout: Max seconds to wait for the run to start (phase 1).
722
+ completion_timeout: Max seconds to wait for the run to finish (phase 2).
723
+ poll_interval: Seconds between state polls.
724
+
725
+ Returns:
726
+ AgenticTableSheetState: The terminal state (IDLE or STOPPED_BY_USER).
727
+
728
+ Raises:
729
+ AgenticTableRunNotStartedError: The sheet never entered PROCESSING in phase 1.
730
+ AgenticTableRunTimeoutError: The run did not finish within ``completion_timeout``.
731
+ """
732
+ deadline = time.monotonic() + start_timeout
733
+ while True:
734
+ state = await AgenticTable.get_sheet_state(
735
+ user_id=self._user_id,
736
+ company_id=self._company_id,
737
+ tableId=self.table_id,
738
+ )
739
+ if state == AgenticTableSheetState.PROCESSING:
740
+ break
741
+ if time.monotonic() >= deadline:
742
+ raise AgenticTableRunNotStartedError(
743
+ f"Sheet {self.table_id} never entered PROCESSING within {start_timeout}s. "
744
+ "Did the trigger start a run (e.g. were new questions imported)?"
745
+ )
746
+ await asyncio.sleep(poll_interval)
747
+
748
+ self.logger.debug("Sheet %s run started (state=%s)", self.table_id, state)
749
+
750
+ deadline = time.monotonic() + completion_timeout
751
+ while state == AgenticTableSheetState.PROCESSING:
752
+ if time.monotonic() >= deadline:
753
+ raise AgenticTableRunTimeoutError(
754
+ f"Sheet {self.table_id} still PROCESSING after {completion_timeout}s."
755
+ )
756
+ await asyncio.sleep(poll_interval)
757
+ state = await AgenticTable.get_sheet_state(
758
+ user_id=self._user_id,
759
+ company_id=self._company_id,
760
+ tableId=self.table_id,
761
+ )
762
+
763
+ self.logger.debug("Sheet %s run finished (state=%s)", self.table_id, state)
764
+ return state
765
+
766
+ async def wait_for_artifacts(
767
+ self,
768
+ artifact_types: list[MagicTableArtifactType],
769
+ timeout: float = 600.0,
770
+ poll_interval: float = 5.0,
771
+ ) -> list[MagicTableArtifact]:
772
+ """Wait until artifacts of the given types are DONE, by polling ``list_artifacts``.
773
+
774
+ Artifact records are upserted per type: triggering an export flips the record
775
+ of that type to IN_PROGRESS and back to DONE when the file is ready. A
776
+ terminal state is accepted only after IN_PROGRESS has been observed for
777
+ that artifact type, so a result left over from an earlier generation is
778
+ not mistaken for the newly triggered one.
779
+
780
+ Because the API exposes only the current artifact state, a complete
781
+ IN_PROGRESS-to-terminal transition between two polls cannot be observed.
782
+ Keep ``poll_interval`` shorter than the expected minimum generation time.
783
+
784
+ Args:
785
+ artifact_types: The artifact types to wait for (as passed to ``generate_artifacts``).
786
+ timeout: Max seconds to wait for all requested artifacts to be DONE.
787
+ poll_interval: Seconds between polls.
788
+
789
+ Returns:
790
+ list[MagicTableArtifact]: The DONE artifacts, one per requested type.
791
+
792
+ Raises:
793
+ AgenticTableArtifactError: An artifact of a requested type is in the ERROR state.
794
+ AgenticTableRunTimeoutError: Not all artifacts were DONE within ``timeout``.
795
+ """
796
+ wanted = set(artifact_types)
797
+ started: set[MagicTableArtifactType] = set()
798
+ deadline = time.monotonic() + timeout
799
+ while True:
800
+ artifacts = await self.list_artifacts()
801
+ current = {
802
+ a.artifact_type: a for a in artifacts if a.artifact_type in wanted
803
+ }
804
+ started.update(
805
+ artifact_type
806
+ for artifact_type, artifact in current.items()
807
+ if artifact.artifact_state == MagicTableArtifactState.IN_PROGRESS
808
+ )
809
+ failed = [
810
+ artifact
811
+ for artifact_type, artifact in current.items()
812
+ if artifact_type in started
813
+ and artifact.artifact_state == MagicTableArtifactState.ERROR
814
+ ]
815
+ if failed:
816
+ raise AgenticTableArtifactError(
817
+ f"Artifact generation failed for {[a.artifact_type for a in failed]} "
818
+ f"on sheet {self.table_id}."
819
+ )
820
+ done = {
821
+ artifact_type: artifact
822
+ for artifact_type, artifact in current.items()
823
+ if artifact_type in started
824
+ and artifact.artifact_state == MagicTableArtifactState.DONE
825
+ }
826
+ if wanted <= set(done.keys()):
827
+ return [done[t] for t in artifact_types]
828
+ if time.monotonic() >= deadline:
829
+ missing = sorted(t.value for t in wanted - set(done.keys()))
830
+ raise AgenticTableRunTimeoutError(
831
+ f"Artifacts {missing} not DONE within {timeout}s on sheet {self.table_id}."
832
+ )
833
+ await asyncio.sleep(poll_interval)