unique-toolkit 2026.38.0.dev16__tar.gz → 2026.38.0.dev18__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.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/PKG-INFO +2 -2
  2. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/pyproject.toml +2 -2
  3. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/agentic/feature_flags/feature_flags.py +5 -7
  4. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/agentic/tools/experimental/ask_user_tool/config.py +24 -5
  5. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/agentic/tools/experimental/ask_user_tool/tool.py +10 -1
  6. unique_toolkit-2026.38.0.dev18/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/postprocessors/code_display.py +95 -0
  7. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/postprocessors/generated_files.py +74 -32
  8. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/tool/config.py +1 -1
  9. unique_toolkit-2026.38.0.dev16/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/postprocessors/code_display.py +0 -59
  10. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/README.md +0 -0
  11. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/__init__.py +0 -0
  12. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/_common/__init__.py +0 -0
  13. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/_common/_base_service.py +0 -0
  14. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/_common/_time_utils.py +0 -0
  15. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/_common/api_calling/human_verification_manager.py +0 -0
  16. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/_common/base_model_type_attribute.py +0 -0
  17. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/_common/chunk_relevancy_sorter/config.py +0 -0
  18. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/_common/chunk_relevancy_sorter/exception.py +0 -0
  19. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/_common/chunk_relevancy_sorter/schemas.py +0 -0
  20. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/_common/chunk_relevancy_sorter/service.py +0 -0
  21. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/_common/chunk_relevancy_sorter/tests/test_service.py +0 -0
  22. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/_common/config_checker/README.md +0 -0
  23. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/_common/config_checker/__init__.py +0 -0
  24. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/_common/config_checker/__main__.py +0 -0
  25. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/_common/config_checker/cli.py +0 -0
  26. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/_common/config_checker/differ.py +0 -0
  27. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/_common/config_checker/exporter.py +0 -0
  28. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/_common/config_checker/models.py +0 -0
  29. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/_common/config_checker/registry.py +0 -0
  30. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/_common/config_checker/validator.py +0 -0
  31. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/_common/default_language_model.py +0 -0
  32. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/_common/docx_generator/__init__.py +0 -0
  33. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/_common/docx_generator/config.py +0 -0
  34. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/_common/docx_generator/pandoc_converter.py +0 -0
  35. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/_common/docx_generator/schemas.py +0 -0
  36. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/_common/docx_generator/service.py +0 -0
  37. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/_common/docx_generator/template/Doc Template.docx +0 -0
  38. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/_common/endpoint_builder.py +0 -0
  39. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/_common/endpoint_requestor.py +0 -0
  40. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/_common/event_bus.py +0 -0
  41. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/_common/exception.py +0 -0
  42. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/_common/execution.py +0 -0
  43. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/_common/experimental/endpoint_builder.py +0 -0
  44. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/_common/experimental/endpoint_requestor.py +0 -0
  45. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/_common/experimental/write_up_agent/README.md +0 -0
  46. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/_common/experimental/write_up_agent/__init__.py +0 -0
  47. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/_common/experimental/write_up_agent/agent.py +0 -0
  48. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/_common/experimental/write_up_agent/config.py +0 -0
  49. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/_common/experimental/write_up_agent/examples/data.csv +0 -0
  50. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/_common/experimental/write_up_agent/examples/example_usage.py +0 -0
  51. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/_common/experimental/write_up_agent/schemas.py +0 -0
  52. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/_common/experimental/write_up_agent/services/__init__.py +0 -0
  53. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/_common/experimental/write_up_agent/services/dataframe_handler/__init__.py +0 -0
  54. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/_common/experimental/write_up_agent/services/dataframe_handler/exceptions.py +0 -0
  55. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/_common/experimental/write_up_agent/services/dataframe_handler/service.py +0 -0
  56. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/_common/experimental/write_up_agent/services/dataframe_handler/utils.py +0 -0
  57. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/__init__.py +0 -0
  58. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/config.py +0 -0
  59. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/exceptions.py +0 -0
  60. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/prompts/config.py +0 -0
  61. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/prompts/system_prompt.j2 +0 -0
  62. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/prompts/user_prompt.j2 +0 -0
  63. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/service.py +0 -0
  64. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/_common/experimental/write_up_agent/services/template_handler/__init__.py +0 -0
  65. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/_common/experimental/write_up_agent/services/template_handler/default_template.j2 +0 -0
  66. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/_common/experimental/write_up_agent/services/template_handler/exceptions.py +0 -0
  67. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/_common/experimental/write_up_agent/services/template_handler/service.py +0 -0
  68. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/_common/experimental/write_up_agent/services/template_handler/utils.py +0 -0
  69. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/_common/experimental/write_up_agent/utils.py +0 -0
  70. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/_common/feature_flags/schema.py +0 -0
  71. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/_common/metadata_filter_scope.py +0 -0
  72. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/_common/pydantic/rjsf_tags.py +0 -0
  73. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/_common/pydantic_helpers.py +0 -0
  74. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/_common/referencing.py +0 -0
  75. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/_common/string_utilities.py +0 -0
  76. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/_common/tests/test_referencing.py +0 -0
  77. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/_common/tests/test_string_utilities.py +0 -0
  78. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/_common/token/__init__.py +0 -0
  79. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/_common/token/image_token_counting.py +0 -0
  80. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/_common/token/token_counting.py +0 -0
  81. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/_common/token/tokenizers/deepseek/tokenizer.json +0 -0
  82. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/_common/token/tokenizers/qwen/tokenizer.json +0 -0
  83. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/_common/utils/__init__.py +0 -0
  84. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/_common/utils/files.py +0 -0
  85. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/_common/utils/image/encode.py +0 -0
  86. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/_common/utils/jinja/helpers.py +0 -0
  87. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/_common/utils/jinja/render.py +0 -0
  88. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/_common/utils/jinja/schema.py +0 -0
  89. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/_common/utils/jinja/utils.py +0 -0
  90. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/_common/utils/structured_output/__init__.py +0 -0
  91. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/_common/utils/structured_output/schema.py +0 -0
  92. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/_common/utils/write_configuration.py +0 -0
  93. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/_common/validate_required_values.py +0 -0
  94. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/_common/validators.py +0 -0
  95. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/agentic/__init__.py +0 -0
  96. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/agentic/debug_info_manager/debug_info_manager.py +0 -0
  97. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/agentic/debug_info_manager/test/test_debug_info_manager.py +0 -0
  98. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/agentic/evaluation/config.py +0 -0
  99. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/agentic/evaluation/context_relevancy/prompts/__init__.py +0 -0
  100. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/agentic/evaluation/context_relevancy/prompts/system_prompt.j2 +0 -0
  101. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/agentic/evaluation/context_relevancy/prompts/user_prompt.j2 +0 -0
  102. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/agentic/evaluation/context_relevancy/schema.py +0 -0
  103. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/agentic/evaluation/context_relevancy/service.py +0 -0
  104. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/agentic/evaluation/evaluation_manager.py +0 -0
  105. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/agentic/evaluation/exception.py +0 -0
  106. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/agentic/evaluation/hallucination/constants.py +0 -0
  107. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/agentic/evaluation/hallucination/hallucination_evaluation.py +0 -0
  108. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/agentic/evaluation/hallucination/prompts/__init__.py +0 -0
  109. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/agentic/evaluation/hallucination/prompts/system_prompt.j2 +0 -0
  110. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/agentic/evaluation/hallucination/prompts/user_prompt.j2 +0 -0
  111. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/agentic/evaluation/hallucination/service.py +0 -0
  112. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/agentic/evaluation/hallucination/utils.py +0 -0
  113. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/agentic/evaluation/output_parser.py +0 -0
  114. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/agentic/evaluation/schemas.py +0 -0
  115. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/agentic/evaluation/tests/fixtures.py +0 -0
  116. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/agentic/evaluation/tests/test_config.py +0 -0
  117. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/agentic/evaluation/tests/test_context_relevancy_service.py +0 -0
  118. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/agentic/evaluation/tests/test_hallucination_constants.py +0 -0
  119. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/agentic/evaluation/tests/test_hallucination_external_context.py +0 -0
  120. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/agentic/evaluation/tests/test_hallucination_utils.py +0 -0
  121. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/agentic/evaluation/tests/test_output_parser.py +0 -0
  122. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/agentic/evaluation/tests/test_prompt_loaders.py +0 -0
  123. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/agentic/evaluation/utils.py +0 -0
  124. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/agentic/feature_flags/__init__.py +0 -0
  125. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/agentic/history_manager/history_construction_with_contents.py +0 -0
  126. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/agentic/history_manager/history_manager.py +0 -0
  127. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/agentic/history_manager/loop_token_reducer.py +0 -0
  128. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/agentic/history_manager/settings.py +0 -0
  129. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/agentic/history_manager/utils.py +0 -0
  130. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/agentic/loop_runner/__init__.py +0 -0
  131. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/agentic/loop_runner/_iteration_handler_utils.py +0 -0
  132. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/agentic/loop_runner/_responses_iteration_handler_utils.py +0 -0
  133. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/agentic/loop_runner/_responses_stream_handler_utils.py +0 -0
  134. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/agentic/loop_runner/_stream_handler_utils.py +0 -0
  135. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/agentic/loop_runner/base.py +0 -0
  136. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/agentic/loop_runner/middleware/__init__.py +0 -0
  137. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/agentic/loop_runner/middleware/planning/__init__.py +0 -0
  138. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/agentic/loop_runner/middleware/planning/planning.py +0 -0
  139. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/agentic/loop_runner/middleware/planning/schema.py +0 -0
  140. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/agentic/loop_runner/runners/__init__.py +0 -0
  141. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/agentic/loop_runner/runners/basic.py +0 -0
  142. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/agentic/loop_runner/runners/mistral/__init__.py +0 -0
  143. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/agentic/loop_runner/runners/mistral/mistral_runner.py +0 -0
  144. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/agentic/loop_runner/runners/qwen/__init__.py +0 -0
  145. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/agentic/loop_runner/runners/qwen/helpers.py +0 -0
  146. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/agentic/loop_runner/runners/qwen/qwen_runner.py +0 -0
  147. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/agentic/message_log_manager/__init__.py +0 -0
  148. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/agentic/message_log_manager/service.py +0 -0
  149. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/agentic/message_log_order.py +0 -0
  150. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/agentic/postprocessor/postprocessor_manager.py +0 -0
  151. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/agentic/reference_manager/reference_manager.py +0 -0
  152. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/agentic/reference_manager/tests/test_external_context.py +0 -0
  153. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/agentic/responses_api/__init__.py +0 -0
  154. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/agentic/responses_api/postprocessors/code_display.py +0 -0
  155. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/agentic/responses_api/postprocessors/generated_files.py +0 -0
  156. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/agentic/responses_api/stream_handler.py +0 -0
  157. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/agentic/short_term_memory_manager/persistent_short_term_memory_manager.py +0 -0
  158. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/agentic/thinking_manager/thinking_manager.py +0 -0
  159. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/agentic/tools/__init__.py +0 -0
  160. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/agentic/tools/a2a/__init__.py +0 -0
  161. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/agentic/tools/a2a/config.py +0 -0
  162. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/agentic/tools/a2a/evaluation/__init__.py +0 -0
  163. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/agentic/tools/a2a/evaluation/_utils.py +0 -0
  164. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/agentic/tools/a2a/evaluation/config.py +0 -0
  165. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/agentic/tools/a2a/evaluation/evaluator.py +0 -0
  166. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/agentic/tools/a2a/evaluation/summarization_user_message.j2 +0 -0
  167. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/agentic/tools/a2a/manager.py +0 -0
  168. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/agentic/tools/a2a/postprocessing/__init__.py +0 -0
  169. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/agentic/tools/a2a/postprocessing/_display_utils.py +0 -0
  170. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/agentic/tools/a2a/postprocessing/_ref_utils.py +0 -0
  171. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/agentic/tools/a2a/postprocessing/config.py +0 -0
  172. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/agentic/tools/a2a/postprocessing/display.py +0 -0
  173. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/agentic/tools/a2a/postprocessing/references.py +0 -0
  174. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/agentic/tools/a2a/postprocessing/test/test_display.py +0 -0
  175. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/agentic/tools/a2a/postprocessing/test/test_display_utils.py +0 -0
  176. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/agentic/tools/a2a/postprocessing/test/test_ref_utils.py +0 -0
  177. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/agentic/tools/a2a/postprocessing/test/test_references.py +0 -0
  178. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/agentic/tools/a2a/prompts.py +0 -0
  179. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/agentic/tools/a2a/response_watcher/__init__.py +0 -0
  180. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/agentic/tools/a2a/response_watcher/service.py +0 -0
  181. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/agentic/tools/a2a/tool/__init__.py +0 -0
  182. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/agentic/tools/a2a/tool/_memory.py +0 -0
  183. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/agentic/tools/a2a/tool/_schema.py +0 -0
  184. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/agentic/tools/a2a/tool/config.py +0 -0
  185. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/agentic/tools/a2a/tool/service.py +0 -0
  186. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/agentic/tools/a2a/tool/test/test_service_utils.py +0 -0
  187. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/agentic/tools/agent_chunks_hanlder.py +0 -0
  188. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/agentic/tools/config.py +0 -0
  189. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/agentic/tools/experimental/__init__.py +0 -0
  190. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/agentic/tools/experimental/ask_user_tool/__init__.py +0 -0
  191. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/agentic/tools/experimental/open_file_tool/__init__.py +0 -0
  192. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/agentic/tools/experimental/open_file_tool/config.py +0 -0
  193. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/agentic/tools/experimental/open_file_tool/runtime.py +0 -0
  194. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/agentic/tools/experimental/open_file_tool/tool.py +0 -0
  195. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/agentic/tools/experimental/retrieve_search_scope_tool/__init__.py +0 -0
  196. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/agentic/tools/experimental/retrieve_search_scope_tool/config.py +0 -0
  197. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/agentic/tools/experimental/retrieve_search_scope_tool/tool.py +0 -0
  198. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/agentic/tools/experimental/todo/__init__.py +0 -0
  199. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/agentic/tools/experimental/todo/config.py +0 -0
  200. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/agentic/tools/experimental/todo/prompts/__init__.py +0 -0
  201. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/agentic/tools/experimental/todo/prompts/execution_reminder.j2 +0 -0
  202. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/agentic/tools/experimental/todo/prompts/system_prompt.j2 +0 -0
  203. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/agentic/tools/experimental/todo/prompts/tool_description.j2 +0 -0
  204. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/agentic/tools/experimental/todo/prompts/verification_nudge.j2 +0 -0
  205. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/agentic/tools/experimental/todo/schemas.py +0 -0
  206. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/agentic/tools/experimental/todo/service.py +0 -0
  207. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/agentic/tools/factory.py +0 -0
  208. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/agentic/tools/mcp/__init__.py +0 -0
  209. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/agentic/tools/mcp/manager.py +0 -0
  210. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/agentic/tools/mcp/models.py +0 -0
  211. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/agentic/tools/mcp/tool_wrapper.py +0 -0
  212. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/agentic/tools/names.py +0 -0
  213. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/agentic/tools/openai_builtin/__init__.py +0 -0
  214. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/agentic/tools/openai_builtin/base.py +0 -0
  215. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/__init__.py +0 -0
  216. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/activator/__init__.py +0 -0
  217. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/activator/config.py +0 -0
  218. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/activator/service.py +0 -0
  219. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/builder/__init__.py +0 -0
  220. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/builder/_container.py +0 -0
  221. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/builder/_files.py +0 -0
  222. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/builder/_memory.py +0 -0
  223. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/builder/builder.py +0 -0
  224. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/config.py +0 -0
  225. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/postprocessors/__init__.py +0 -0
  226. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/postprocessors/artifacts.py +0 -0
  227. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/postprocessors/office_preview.py +0 -0
  228. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/schemas.py +0 -0
  229. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/tool/__init__.py +0 -0
  230. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/tool/service.py +0 -0
  231. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/agentic/tools/openai_builtin/manager.py +0 -0
  232. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/agentic/tools/run_context.py +0 -0
  233. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/agentic/tools/schemas.py +0 -0
  234. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/agentic/tools/test/test_mcp_manager.py +0 -0
  235. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/agentic/tools/test/test_tool_progress_reporter.py +0 -0
  236. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/agentic/tools/tool.py +0 -0
  237. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/agentic/tools/tool_manager.py +0 -0
  238. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/agentic/tools/tool_progress_reporter.py +0 -0
  239. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/agentic/tools/utils/__init__.py +0 -0
  240. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/agentic/tools/utils/source_handling/__init__.py +0 -0
  241. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/agentic/tools/utils/source_handling/schema.py +0 -0
  242. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/agentic/tools/utils/source_handling/source_formatting.py +0 -0
  243. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/agentic/tools/utils/source_handling/tests/test_source_formatting.py +0 -0
  244. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/agentic_table/__init__.py +0 -0
  245. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/agentic_table/schemas.py +0 -0
  246. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/agentic_table/service.py +0 -0
  247. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/agentic_table/synthetic_chat_event.py +0 -0
  248. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/app/__init__.py +0 -0
  249. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/app/chat_event_filter_options_settings.py +0 -0
  250. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/app/dev_util.py +0 -0
  251. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/app/fast_api_factory.py +0 -0
  252. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/app/feature_flags.py +0 -0
  253. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/app/find_env_file.py +0 -0
  254. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/app/init_logging.py +0 -0
  255. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/app/init_sdk.py +0 -0
  256. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/app/performance/async_tasks.py +0 -0
  257. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/app/performance/async_wrapper.py +0 -0
  258. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/app/schemas.py +0 -0
  259. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/app/unique_settings.py +0 -0
  260. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/app/verification.py +0 -0
  261. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/app/webhook.py +0 -0
  262. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/chat/__init__.py +0 -0
  263. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/chat/cancellation.py +0 -0
  264. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/chat/constants.py +0 -0
  265. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/chat/deprecated/__init__.py +0 -0
  266. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/chat/deprecated/service.py +0 -0
  267. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/chat/functions.py +0 -0
  268. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/chat/rendering.py +0 -0
  269. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/chat/responses_api.py +0 -0
  270. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/chat/schemas.py +0 -0
  271. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/chat/service.py +0 -0
  272. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/chat/state.py +0 -0
  273. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/chat/utils.py +0 -0
  274. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/content/__init__.py +0 -0
  275. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/content/constants.py +0 -0
  276. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/content/functions.py +0 -0
  277. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/content/schemas.py +0 -0
  278. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/content/service.py +0 -0
  279. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/content/smart_rules.py +0 -0
  280. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/content/utils.py +0 -0
  281. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/data_extraction/README.md +0 -0
  282. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/data_extraction/__init__.py +0 -0
  283. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/data_extraction/augmented/__init__.py +0 -0
  284. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/data_extraction/augmented/service.py +0 -0
  285. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/data_extraction/base.py +0 -0
  286. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/data_extraction/basic/__init__.py +0 -0
  287. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/data_extraction/basic/config.py +0 -0
  288. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/data_extraction/basic/prompt.py +0 -0
  289. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/data_extraction/basic/service.py +0 -0
  290. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/elicitation/__init__.py +0 -0
  291. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/elicitation/constants.py +0 -0
  292. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/elicitation/exceptions.py +0 -0
  293. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/elicitation/functions.py +0 -0
  294. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/elicitation/schemas.py +0 -0
  295. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/elicitation/service.py +0 -0
  296. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/embedding/__init__.py +0 -0
  297. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/embedding/constants.py +0 -0
  298. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/embedding/functions.py +0 -0
  299. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/embedding/schemas.py +0 -0
  300. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/embedding/service.py +0 -0
  301. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/embedding/utils.py +0 -0
  302. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/experimental/README.md +0 -0
  303. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/experimental/__init__.py +0 -0
  304. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/experimental/_internal/__init__.py +0 -0
  305. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/experimental/_internal/streaming/__init__.py +0 -0
  306. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/experimental/_internal/streaming/common.py +0 -0
  307. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/experimental/_internal/streaming/pattern_replacer.py +0 -0
  308. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/experimental/components/__init__.py +0 -0
  309. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/experimental/components/_base.py +0 -0
  310. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/experimental/components/content_tree/__init__.py +0 -0
  311. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/experimental/components/content_tree/functions.py +0 -0
  312. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/experimental/components/content_tree/schemas.py +0 -0
  313. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/experimental/components/content_tree/service.py +0 -0
  314. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/experimental/components/internal_search/__init__.py +0 -0
  315. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/experimental/components/internal_search/base/__init__.py +0 -0
  316. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/experimental/components/internal_search/base/config.py +0 -0
  317. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/experimental/components/internal_search/base/schemas.py +0 -0
  318. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/experimental/components/internal_search/base/service.py +0 -0
  319. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/experimental/components/internal_search/base/utils.py +0 -0
  320. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/experimental/components/internal_search/chat/__init__.py +0 -0
  321. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/experimental/components/internal_search/chat/config.py +0 -0
  322. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/experimental/components/internal_search/chat/schemas.py +0 -0
  323. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/experimental/components/internal_search/chat/service.py +0 -0
  324. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/experimental/components/internal_search/knowledge_base/__init__.py +0 -0
  325. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/experimental/components/internal_search/knowledge_base/config.py +0 -0
  326. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/experimental/components/internal_search/knowledge_base/schemas.py +0 -0
  327. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/experimental/components/internal_search/knowledge_base/service.py +0 -0
  328. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/experimental/components/internal_search/post_processing/__init__.py +0 -0
  329. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/experimental/components/internal_search/post_processing/config.py +0 -0
  330. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/experimental/components/internal_search/post_processing/service.py +0 -0
  331. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/experimental/content_tree/__init__.py +0 -0
  332. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/experimental/identity/__init__.py +0 -0
  333. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/experimental/integrations/__init__.py +0 -0
  334. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/experimental/integrations/openai/__init__.py +0 -0
  335. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/experimental/integrations/openai/streaming/__init__.py +0 -0
  336. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/__init__.py +0 -0
  337. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/_async_bridge.py +0 -0
  338. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/_model_params.py +0 -0
  339. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/chat_completions/__init__.py +0 -0
  340. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/chat_completions/complete_with_references.py +0 -0
  341. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/chat_completions/stream_event_router.py +0 -0
  342. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/chat_completions/text_event_handler.py +0 -0
  343. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/chat_completions/tool_call_event_handler.py +0 -0
  344. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/events.py +0 -0
  345. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/protocols/__init__.py +0 -0
  346. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/protocols/chat_completions.py +0 -0
  347. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/protocols/responses.py +0 -0
  348. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/responses/__init__.py +0 -0
  349. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/responses/code_interpreter_event_handler.py +0 -0
  350. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/responses/complete_with_references.py +0 -0
  351. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/responses/completed_event_handler.py +0 -0
  352. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/responses/stream_event_router.py +0 -0
  353. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/responses/text_delta_event_handler.py +0 -0
  354. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/responses/tool_call_event_handler.py +0 -0
  355. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/subscribers/__init__.py +0 -0
  356. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/subscribers/message_persister.py +0 -0
  357. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/subscribers/progress_log_persister.py +0 -0
  358. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/experimental/resources/__init__.py +0 -0
  359. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/experimental/resources/content_folder/__init__.py +0 -0
  360. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/experimental/resources/content_folder/functions.py +0 -0
  361. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/experimental/resources/content_folder/schemas.py +0 -0
  362. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/experimental/resources/content_folder/service.py +0 -0
  363. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/experimental/resources/facades/__init__.py +0 -0
  364. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/experimental/resources/facades/identity/__init__.py +0 -0
  365. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/experimental/resources/facades/identity/service.py +0 -0
  366. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/experimental/resources/feature_flags/README.md +0 -0
  367. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/experimental/resources/feature_flags/__init__.py +0 -0
  368. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/experimental/resources/feature_flags/_graphql_client.py +0 -0
  369. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/experimental/resources/feature_flags/_ttl_cache.py +0 -0
  370. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/experimental/resources/feature_flags/client.py +0 -0
  371. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/experimental/resources/feature_flags/schemas.py +0 -0
  372. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/experimental/resources/feature_flags/settings.py +0 -0
  373. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/experimental/resources/group/__init__.py +0 -0
  374. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/experimental/resources/group/functions.py +0 -0
  375. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/experimental/resources/group/schemas.py +0 -0
  376. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/experimental/resources/group/service.py +0 -0
  377. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/experimental/resources/scheduled_task/__init__.py +0 -0
  378. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/experimental/resources/scheduled_task/cron.py +0 -0
  379. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/experimental/resources/scheduled_task/functions.py +0 -0
  380. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/experimental/resources/scheduled_task/schemas.py +0 -0
  381. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/experimental/resources/scheduled_task/service.py +0 -0
  382. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/experimental/resources/user/__init__.py +0 -0
  383. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/experimental/resources/user/functions.py +0 -0
  384. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/experimental/resources/user/schemas.py +0 -0
  385. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/experimental/resources/user/service.py +0 -0
  386. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/experimental/testing/__init__.py +0 -0
  387. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/framework_utilities/__init__.py +0 -0
  388. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/framework_utilities/langchain/__init__.py +0 -0
  389. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/framework_utilities/langchain/client.py +0 -0
  390. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/framework_utilities/langchain/history.py +0 -0
  391. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/framework_utilities/openai/__init__.py +0 -0
  392. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/framework_utilities/openai/client.py +0 -0
  393. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/framework_utilities/openai/message_builder.py +0 -0
  394. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/framework_utilities/utils.py +0 -0
  395. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/language_model/__init__.py +0 -0
  396. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/language_model/_responses_api_utils.py +0 -0
  397. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/language_model/builder.py +0 -0
  398. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/language_model/constants.py +0 -0
  399. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/language_model/default_language_model.py +0 -0
  400. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/language_model/functions.py +0 -0
  401. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/language_model/infos.py +0 -0
  402. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/language_model/invocation_stats.py +0 -0
  403. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/language_model/model_costs.py +0 -0
  404. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/language_model/prompt.py +0 -0
  405. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/language_model/reference.py +0 -0
  406. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/language_model/schemas.py +0 -0
  407. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/language_model/service.py +0 -0
  408. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/language_model/settings.py +0 -0
  409. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/language_model/stream_transform.py +0 -0
  410. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/language_model/utils.py +0 -0
  411. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/monitoring/__init__.py +0 -0
  412. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/monitoring/gunicorn.py +0 -0
  413. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/monitoring/memory.py +0 -0
  414. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/monitoring/middleware.py +0 -0
  415. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/monitoring/registry.py +0 -0
  416. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/monitoring/tracing.py +0 -0
  417. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/protocols/support.py +0 -0
  418. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/services/__init__.py +0 -0
  419. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/services/chat_service.py +0 -0
  420. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/services/factory.py +0 -0
  421. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/services/knowledge_base.py +0 -0
  422. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/short_term_memory/__init__.py +0 -0
  423. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/short_term_memory/constants.py +0 -0
  424. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/short_term_memory/functions.py +0 -0
  425. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/short_term_memory/schemas.py +0 -0
  426. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/short_term_memory/service.py +0 -0
  427. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/smart_rules/__init__.py +0 -0
  428. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/unique_toolkit/smart_rules/compile.py +0 -0
  429. {unique_toolkit-2026.38.0.dev16 → unique_toolkit-2026.38.0.dev18}/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.38.0.dev16
3
+ Version: 2026.38.0.dev18
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.38.0.dev4,<2026.38.0rc0
19
+ Requires-Dist: unique-sdk>=2026.38.0.dev5,<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.38.0.dev16"
3
+ version = "2026.38.0.dev18"
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.38.0.dev4,<2026.38.0rc0",
31
+ "unique-sdk>=2026.38.0.dev5,<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",
@@ -23,6 +23,9 @@ class FeatureFlagNames(StrEnum):
23
23
  "FEATURE_FLAG_ENABLE_MCP_METADATA_FALLBACK_UN_19145"
24
24
  )
25
25
  enable_html_rendering_un_15131 = "FEATURE_FLAG_ENABLE_HTML_RENDERING_UN_15131"
26
+ enable_code_execution_fence_un_17972 = (
27
+ "FEATURE_FLAG_ENABLE_CODE_EXECUTION_FENCE_UN_17972"
28
+ )
26
29
  enable_html_with_fence_un_17927 = "FEATURE_FLAG_ENABLE_HTML_WITH_FENCE_UN_17927"
27
30
  enable_web_search_argument_screening_un_18741 = (
28
31
  "FEATURE_FLAG_ENABLE_WEB_SEARCH_ARGUMENT_SCREENING_UN_18741"
@@ -107,17 +110,12 @@ class FeatureFlags(BaseSettings):
107
110
 
108
111
  enable_code_execution_fence_un_17972: FeatureFlag = Field(
109
112
  default=FeatureFlag(False),
110
- description=(
111
- "Retired (UN-25450): code interpreter output is always rendered as "
112
- "codeExecution fences now, no code reads this field. Kept only so "
113
- "removing it doesn't trip the config-checker's breaking-change gate "
114
- "on this settings model; delete once that checker allows field removal."
115
- ),
113
+ description="Emit codeExecution fences in message.text for code interpreter outputs (UN-17972). When disabled, inline file refs are kept as-is. Can be 'true' or comma-separated company IDs.",
116
114
  )
117
115
 
118
116
  enable_html_with_fence_un_17927: FeatureFlag = Field(
119
117
  default=FeatureFlag(False),
120
- description="Render HTML code interpreter files as htmlWithSource fences instead of HtmlRendering blocks (UN-17927). Can be 'true' or comma-separated company IDs.",
118
+ description="Render HTML code interpreter files as htmlWithSource fences instead of HtmlRendering blocks (UN-17927). Requires enable_code_execution_fence_un_17972 to also be enabled. Can be 'true' or comma-separated company IDs.",
121
119
  )
122
120
 
123
121
  enable_web_search_argument_screening_un_18741: FeatureFlag = Field(
@@ -11,26 +11,32 @@ from unique_toolkit.elicitation import (
11
11
  )
12
12
 
13
13
  _DEFAULT_TOOL_DESCRIPTION = """
14
- Ask the user a question through a structured form and block until they answer. Use whenever you need information, a decision, or confirmation before continuing correctly: clarifying questions, confirmation before destructive or irreversible work, missing parameters, or choosing among plausible options. Do not ask the user in normal chat text while this tool is available—call AskUser, wait for the result, then continue. If unsure which interpretation, scope, or value applies, call AskUser instead of guessing. Destructive actions must include an explicit confirmation field. Form and chat anchoring are handled for you; the call blocks until the user responds, declines, cancels, or times out.
14
+ Ask the user a question through a structured form and block until they answer. Use whenever you need information, a decision, or confirmation before continuing correctly: clarifying questions, confirmation before destructive or irreversible work, missing parameters, or choosing among plausible options. Do not ask the user in normal chat text while this tool is available—call AskUser, wait for the result, then continue. If unsure which interpretation, scope, or value applies, call AskUser instead of guessing. The form's Confirm/Decline buttons are the user's consent: for destructive actions state the consequence in `message` and proceed only when the user confirms; use an empty-properties schema when there is nothing else to ask. Form and chat anchoring are handled for you; the call blocks until the user responds, declines, cancels, or times out.
15
15
  """.strip()
16
16
 
17
17
  _DEFAULT_TOOL_DESCRIPTION_FOR_SYSTEM_PROMPT = """
18
18
  - If your next message would ask the user for information, a decision, or confirmation, call AskUser instead of writing the question in chat.
19
19
  - If more than one reasonable reading of the request exists, call AskUser before acting—do not silently pick a default.
20
- - Destructive or irreversible actions require an explicit confirmation field (e.g. boolean `confirm`) in `response_schema`.
20
+ - Destructive or irreversible actions need the user's confirmation: state the consequence in `message` and proceed only on an accepted result. The Confirm button is the consent on any form, so never model it as a boolean `confirm` field; if there is nothing else to ask, use `response_schema` `{"type":"object","properties":{}}`.
21
21
  """.strip()
22
22
 
23
23
  _DEFAULT_MESSAGE_DESCRIPTION = "The question or prompt shown to the user"
24
24
 
25
25
  _DEFAULT_RESPONSE_SCHEMA_DESCRIPTION = """
26
- JSON Schema object (root type "object") for the form shown to the user; you construct it. Single string property for free-text; boolean for a confirmation; string + enum for one choice (dropdown); array with items.enum for choose-many. Mark needed fields required and add short property descriptions (shown as help text). Prefer one small form over many calls.
26
+ JSON Schema object (root type "object") for the form shown to the user; you construct it. The Confirm/Decline buttons are the user's consent on any form, so a confirmation needs no field of its own: empty properties for a plain yes/no; single string property for free-text; string + enum for one choice (dropdown); array with items.enum for choose-many; boolean only for a genuine data field where unchecked (false) is a valid answer. Mark needed fields required and add short property descriptions (shown as help text). A required boolean means "must be answered", not "must be ticked": the user can submit it unchecked. Give every boolean a title, it is the checkbox label. Prefer one small form over many calls.
27
27
  Examples:
28
+ - confirm: {"type":"object","properties":{}};
28
29
  - free-text: {"type":"object","properties":{"answer":{"type":"string"}},"required":["answer"]};
29
- - confirm: {"type":"object","properties":{"confirm":{"type":"boolean"}},"required":["confirm"]};
30
30
  - choice: {"type":"object","properties":{"region":{"type":"string","enum":["EU","US"]}},"required":["region"]};
31
- - multi: {"type":"object","properties":{"topics":{"type":"array","items":{"type":"string","enum":["a","b"]}}}}.
31
+ - multi: {"type":"object","properties":{"topics":{"type":"array","items":{"type":"string","enum":["a","b"]}}}};
32
+ - yes/no data: {"type":"object","properties":{"include_appendix":{"type":"boolean","title":"Include appendix"}}}.
32
33
  """.strip()
33
34
 
35
+ _DEFAULT_ACCEPTED_MESSAGE = (
36
+ "The user confirmed the request. The form had no fields, so there is no "
37
+ "response content. Proceed with the confirmed action."
38
+ )
39
+
34
40
  _TIMEOUT_SECONDS_MIN = 1
35
41
  _TIMOUT_SECONDS_MAX = 3600
36
42
 
@@ -81,6 +87,19 @@ class AskUserToolConfig(BaseToolConfig):
81
87
  title="`response_schema` tool input field description",
82
88
  )
83
89
 
90
+ accepted_message: Annotated[
91
+ str,
92
+ RJSFMetaTag.StringWidget.textarea(rows=2),
93
+ ] = Field(
94
+ default=_DEFAULT_ACCEPTED_MESSAGE,
95
+ description=(
96
+ "Message returned to the model when the user accepts a form without "
97
+ "fields (empty-properties confirmation schema). Forms with fields "
98
+ "return the submitted values as JSON instead."
99
+ ),
100
+ title="Accepted response (empty form)",
101
+ )
102
+
84
103
  declined_message: Annotated[
85
104
  str,
86
105
  RJSFMetaTag.StringWidget.textarea(
@@ -158,8 +158,17 @@ class AskUserTool(Tool[AskUserToolConfig]):
158
158
 
159
159
  _LOGGER.info("User responded to elicitation request")
160
160
 
161
+ # Decide on the schema, not the payload: a form with optional fields left
162
+ # blank also comes back empty, and that is an answer ("{}"), not consent.
163
+ if not params.response_schema.get("properties"):
164
+ return ToolCallResponse(
165
+ id=tool_call.id,
166
+ name=self.name,
167
+ content=self.config.accepted_message,
168
+ )
169
+
161
170
  return ToolCallResponse(
162
171
  id=tool_call.id,
163
172
  name=self.name,
164
- content=json.dumps(elicitation.response_content, ensure_ascii=False),
173
+ content=json.dumps(elicitation.response_content or {}, ensure_ascii=False),
165
174
  )
@@ -0,0 +1,95 @@
1
+ import asyncio
2
+ import logging
3
+ import re
4
+ from typing import override
5
+
6
+ from pydantic import BaseModel, Field
7
+ from pydantic.json_schema import SkipJsonSchema
8
+
9
+ from unique_toolkit.agentic.feature_flags import FeatureFlagNames
10
+ from unique_toolkit.agentic.postprocessor.postprocessor_manager import (
11
+ ResponsesApiPostprocessor,
12
+ )
13
+ from unique_toolkit.agentic.tools.config import get_configuration_dict
14
+ from unique_toolkit.experimental.resources.feature_flags import (
15
+ COMPANY_ID_PLACEHOLDER,
16
+ is_flag_enabled,
17
+ )
18
+ from unique_toolkit.language_model.schemas import ResponsesLanguageModelStreamResponse
19
+
20
+ _TEMPLATE = """
21
+ <details><summary>Code Interpreter Call</summary>
22
+
23
+ ```python
24
+ {code}
25
+ ```
26
+
27
+ </details>
28
+ </br>
29
+
30
+ """.lstrip()
31
+
32
+
33
+ logger = logging.getLogger(__name__)
34
+
35
+
36
+ class ShowExecutedCodePostprocessorConfig(BaseModel):
37
+ model_config = get_configuration_dict()
38
+ enable: bool = Field(
39
+ default=True,
40
+ description="Enable display of executed code before the assistant message",
41
+ )
42
+ remove_from_history: SkipJsonSchema[bool] = (
43
+ Field( # At the moment, it's not possible to keep executed code in the history
44
+ default=True,
45
+ description="If set, the code interpreter call will be removed from the history on subsequent calls to the assistant.",
46
+ )
47
+ )
48
+ sleep_time_before_display: float = Field(
49
+ default=0.2,
50
+ description="Time to sleep before displaying the executed code. Please increase this value if you experience rendering issues.",
51
+ )
52
+
53
+
54
+ class ShowExecutedCodePostprocessor(ResponsesApiPostprocessor):
55
+ def __init__(
56
+ self,
57
+ config: ShowExecutedCodePostprocessorConfig,
58
+ company_id: str | None = None,
59
+ ):
60
+ super().__init__(self.__class__.__name__)
61
+ self._config = config
62
+ self._company_id = company_id
63
+ # Resolved in run() (before apply_postprocessing_to_response) since flag evaluation is async.
64
+ self._is_enabled = False
65
+
66
+ @override
67
+ async def run(self, loop_response: ResponsesLanguageModelStreamResponse) -> None:
68
+ self._is_enabled = self._config.enable and not await is_flag_enabled(
69
+ FeatureFlagNames.enable_code_execution_fence_un_17972,
70
+ company_id=self._company_id or COMPANY_ID_PLACEHOLDER,
71
+ )
72
+ if self._is_enabled:
73
+ await asyncio.sleep(self._config.sleep_time_before_display)
74
+
75
+ @override
76
+ def apply_postprocessing_to_response(
77
+ self, loop_response: ResponsesLanguageModelStreamResponse
78
+ ) -> bool:
79
+ if not self._is_enabled:
80
+ return False
81
+
82
+ prepended_text = ""
83
+ for output in loop_response.code_interpreter_calls:
84
+ prepended_text += _TEMPLATE.format(code=output.code)
85
+
86
+ loop_response.message.text = prepended_text + (loop_response.message.text or "")
87
+
88
+ return prepended_text != ""
89
+
90
+ @override
91
+ async def remove_from_text(self, text) -> str:
92
+ if not self._config.remove_from_history:
93
+ return text
94
+ pattern = r"<details><summary>Code Interpreter Call</summary>.*?</details>"
95
+ return re.sub(pattern, "", text, flags=re.DOTALL)
@@ -38,6 +38,7 @@ from unique_toolkit.agentic.tools.openai_builtin.code_interpreter.schemas import
38
38
  CodeInterpreterFile,
39
39
  CodeInterpreterFileType,
40
40
  )
41
+ from unique_toolkit.content.schemas import ContentReference
41
42
  from unique_toolkit.content.service import ContentService
42
43
  from unique_toolkit.experimental.resources.feature_flags import (
43
44
  COMPANY_ID_PLACEHOLDER,
@@ -404,6 +405,7 @@ class DisplayCodeInterpreterFilesPostProcessor(
404
405
  self._container_files: list[CodeInterpreterContainerFile] = []
405
406
 
406
407
  # Resolved in run() (before apply_postprocessing_to_response) since flag evaluation is async.
408
+ self._fence_ff_on = False
407
409
  self._html_fence_ff_on = False
408
410
 
409
411
  def _build_retry(self) -> AsyncRetrying:
@@ -509,8 +511,12 @@ class DisplayCodeInterpreterFilesPostProcessor(
509
511
  run_t0 = time.monotonic()
510
512
  self._log.info("run() started — fetching and uploading code interpreter files")
511
513
 
512
- # HTML files stay in an HtmlRendering block unless this flag is on; the
513
- # default (FF off) keeps HtmlRendering, so existing deployments are unaffected.
514
+ self._fence_ff_on = await is_flag_enabled(
515
+ FeatureFlagNames.enable_code_execution_fence_un_17972,
516
+ company_id=self._company_id or COMPANY_ID_PLACEHOLDER,
517
+ )
518
+ # htmlWithSource requires BOTH the fence FF and the HTML-fence FF on; default
519
+ # (FF off) keeps HtmlRendering, so existing deployments are unaffected.
514
520
  self._html_fence_ff_on = await is_flag_enabled(
515
521
  FeatureFlagNames.enable_html_with_fence_un_17927,
516
522
  company_id=self._company_id or COMPANY_ID_PLACEHOLDER,
@@ -662,8 +668,9 @@ class DisplayCodeInterpreterFilesPostProcessor(
662
668
  ) -> bool:
663
669
  apply_t0 = time.monotonic()
664
670
  self._log.info(
665
- "apply_postprocessing started — %d file(s) in content_map",
671
+ "apply_postprocessing started — %d file(s) in content_map, fence_ff=%s",
666
672
  len(self._content_map),
673
+ self._fence_ff_on,
667
674
  )
668
675
 
669
676
  if loop_response.message.references is None:
@@ -671,6 +678,7 @@ class DisplayCodeInterpreterFilesPostProcessor(
671
678
  if loop_response.message.text is None:
672
679
  loop_response.message.text = ""
673
680
 
681
+ ref_number = _get_next_ref_number(loop_response.message.references)
674
682
  changed = False
675
683
 
676
684
  replaced_files: list[str] = []
@@ -720,6 +728,8 @@ class DisplayCodeInterpreterFilesPostProcessor(
720
728
  text=loop_response.message.text or "",
721
729
  filename=filename,
722
730
  content_id=content_id,
731
+ ref_number=ref_number,
732
+ use_content_link=self._fence_ff_on,
723
733
  )
724
734
  changed |= replaced
725
735
 
@@ -734,6 +744,20 @@ class DisplayCodeInterpreterFilesPostProcessor(
734
744
  else:
735
745
  missed_files.append(filename)
736
746
 
747
+ # HtmlRendering and htmlWithSource both embed contentId directly — no ContentReference needed
748
+ is_html_rendered = is_html
749
+ if replaced and not (is_image or is_html_rendered or self._fence_ff_on):
750
+ loop_response.message.references.append(
751
+ ContentReference(
752
+ sequence_number=ref_number,
753
+ source_id=content_id,
754
+ source="node-ingestion-chunks",
755
+ url=f"unique://content/{content_id}",
756
+ name=filename,
757
+ )
758
+ )
759
+ ref_number += 1
760
+
737
761
  self._log.info(
738
762
  "Stage-1 replacement summary — replaced=%s, missed=%s, error=%s",
739
763
  replaced_files,
@@ -741,29 +765,30 @@ class DisplayCodeInterpreterFilesPostProcessor(
741
765
  error_files,
742
766
  )
743
767
 
744
- code_blocks = _build_code_blocks(
745
- loop_response,
746
- self._content_map,
747
- self._container_files,
748
- include_html=self._html_fence_ff_on,
749
- )
750
- self._log.info(
751
- "Fence injection — %d code block(s), files: %s",
752
- len(code_blocks),
753
- [f.filename for b in code_blocks for f in b.files],
754
- )
755
- _warn_unmatched_code_blocks(
756
- self._content_map, code_blocks, include_html=self._html_fence_ff_on
757
- )
758
- text_before = loop_response.message.text
759
- loop_response.message.text = _inject_code_execution_fences(
760
- loop_response.message.text or "",
761
- code_blocks,
762
- )
763
- fences_changed = loop_response.message.text != text_before
764
- changed |= fences_changed
765
- if fences_changed:
766
- self._log.info("Fence injection modified the message text")
768
+ if self._fence_ff_on:
769
+ code_blocks = _build_code_blocks(
770
+ loop_response,
771
+ self._content_map,
772
+ self._container_files,
773
+ include_html=self._html_fence_ff_on,
774
+ )
775
+ self._log.info(
776
+ "Fence injection — %d code block(s), files: %s",
777
+ len(code_blocks),
778
+ [f.filename for b in code_blocks for f in b.files],
779
+ )
780
+ _warn_unmatched_code_blocks(
781
+ self._content_map, code_blocks, include_html=self._html_fence_ff_on
782
+ )
783
+ text_before = loop_response.message.text
784
+ loop_response.message.text = _inject_code_execution_fences(
785
+ loop_response.message.text or "",
786
+ code_blocks,
787
+ )
788
+ fences_changed = loop_response.message.text != text_before
789
+ changed |= fences_changed
790
+ if fences_changed:
791
+ self._log.info("Fence injection modified the message text")
767
792
 
768
793
  _warn_missing_content_ids(loop_response.message.text or "", self._content_map)
769
794
  ci_ran = bool(loop_response.code_interpreter_calls)
@@ -1502,6 +1527,15 @@ def _warn_unmatched_code_blocks(
1502
1527
  )
1503
1528
 
1504
1529
 
1530
+ def _get_next_ref_number(references: list[ContentReference] | None) -> int:
1531
+ if not references:
1532
+ return 1
1533
+ max_ref_number = 0
1534
+ for ref in references:
1535
+ max_ref_number = max(max_ref_number, ref.sequence_number)
1536
+ return max_ref_number + 1
1537
+
1538
+
1505
1539
  def _replace_container_file_error(
1506
1540
  text: str, filename: str, error_message: str
1507
1541
  ) -> tuple[str, bool]:
@@ -1595,11 +1629,16 @@ def _replace_container_file_citation(
1595
1629
  text: str,
1596
1630
  filename: str,
1597
1631
  content_id: str,
1632
+ ref_number: int,
1633
+ use_content_link: bool,
1598
1634
  ) -> tuple[str, bool]:
1599
- """Replace a sandbox file link with an inline content link.
1635
+ """Replace a sandbox file link with either an inline content link or a superscript ref.
1600
1636
 
1601
- The sandbox link becomes [filename](unique://content/{id}) so the fence
1602
- injection step that runs afterwards can find it and wrap it in a fence.
1637
+ When the fence feature flag is on (use_content_link=True), the sandbox link is
1638
+ replaced with [filename](unique://content/{id}) so the subsequent fence injection
1639
+ step can locate and wrap it. When the flag is off (use_content_link=False), the
1640
+ original pre-fence behaviour is restored: the link is replaced with <sup>N</sup>
1641
+ and the file remains accessible via the references panel.
1603
1642
  """
1604
1643
  file_markdown = _sandbox_link_pattern(filename)
1605
1644
 
@@ -1613,6 +1652,9 @@ def _replace_container_file_citation(
1613
1652
  return text, False
1614
1653
 
1615
1654
  logger.info("Displaying file %s", filename)
1616
- return re.sub(
1617
- file_markdown, f"[{filename}](unique://content/{content_id})", text
1618
- ), True
1655
+ replacement = (
1656
+ f"[{filename}](unique://content/{content_id})"
1657
+ if use_content_link
1658
+ else f"<sup>{ref_number}</sup>"
1659
+ )
1660
+ return re.sub(file_markdown, replacement, text), True
@@ -96,7 +96,7 @@ DEFAULT_TOOL_DESCRIPTION_FOR_SYSTEM_PROMPT = (
96
96
  _TOOL_DESCRIPTION_FOR_SYSTEM_PROMPT_BASE + _TOOL_DESCRIPTION_FILES_SUFFIX
97
97
  ).strip()
98
98
 
99
- # Default prompt since code-execution fences went GA (UN-25450).
99
+ # Used when the code-execution fence feature flag (UN-17972) is enabled.
100
100
  # The frontend derives the artifact title from the filename itself, so the
101
101
  # LLM no longer needs to produce a markdown heading before the sandbox link.
102
102
  #
@@ -1,59 +0,0 @@
1
- import logging
2
- import re
3
- from typing import override
4
-
5
- from pydantic import BaseModel, Field
6
- from pydantic.json_schema import SkipJsonSchema
7
-
8
- from unique_toolkit.agentic.postprocessor.postprocessor_manager import (
9
- ResponsesApiPostprocessor,
10
- )
11
- from unique_toolkit.agentic.tools.config import get_configuration_dict
12
- from unique_toolkit.language_model.schemas import ResponsesLanguageModelStreamResponse
13
-
14
- logger = logging.getLogger(__name__)
15
-
16
-
17
- class ShowExecutedCodePostprocessorConfig(BaseModel):
18
- model_config = get_configuration_dict()
19
- remove_from_history: SkipJsonSchema[bool] = (
20
- Field( # At the moment, it's not possible to keep executed code in the history
21
- default=True,
22
- description="If set, the code interpreter call will be removed from the history on subsequent calls to the assistant.",
23
- )
24
- )
25
-
26
-
27
- class ShowExecutedCodePostprocessor(ResponsesApiPostprocessor):
28
- """Strips legacy `<details>` code blocks from the stored conversation history.
29
-
30
- Executed code used to be prepended to the assistant message as a
31
- `<details><summary>Code Interpreter Call</summary>` block. Since UN-25450 the
32
- code travels inside each `codeExecution` fence instead, so nothing is
33
- prepended any more. Messages written before that change still hold the old
34
- block, so it is removed here before the history goes back to the model.
35
- """
36
-
37
- def __init__(self, config: ShowExecutedCodePostprocessorConfig):
38
- super().__init__(self.__class__.__name__)
39
- self._config = config
40
-
41
- # `remove_from_text` does all the work, but the manager still calls `run` and
42
- # `apply_postprocessing_to_response` on every turn and the base class raises
43
- # NotImplementedError. So both must stay, even though they do nothing.
44
- @override
45
- async def run(self, loop_response: ResponsesLanguageModelStreamResponse) -> None:
46
- return None
47
-
48
- @override
49
- def apply_postprocessing_to_response(
50
- self, loop_response: ResponsesLanguageModelStreamResponse
51
- ) -> bool:
52
- return False
53
-
54
- @override
55
- async def remove_from_text(self, text) -> str:
56
- if not self._config.remove_from_history:
57
- return text
58
- pattern = r"<details><summary>Code Interpreter Call</summary>.*?</details>"
59
- return re.sub(pattern, "", text, flags=re.DOTALL)