unique_toolkit 1.74.2__tar.gz → 1.75.1__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 (300) hide show
  1. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/PKG-INFO +1 -1
  2. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/pyproject.toml +1 -1
  3. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/agentic/loop_runner/middleware/planning/planning.py +28 -6
  4. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/content/schemas.py +53 -0
  5. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/content/utils.py +20 -27
  6. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/README.md +0 -0
  7. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/__init__.py +0 -0
  8. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/_common/__init__.py +0 -0
  9. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/_common/_base_service.py +0 -0
  10. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/_common/_time_utils.py +0 -0
  11. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/_common/api_calling/human_verification_manager.py +0 -0
  12. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/_common/base_model_type_attribute.py +0 -0
  13. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/_common/chunk_relevancy_sorter/config.py +0 -0
  14. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/_common/chunk_relevancy_sorter/exception.py +0 -0
  15. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/_common/chunk_relevancy_sorter/schemas.py +0 -0
  16. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/_common/chunk_relevancy_sorter/service.py +0 -0
  17. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/_common/chunk_relevancy_sorter/tests/test_service.py +0 -0
  18. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/_common/config_checker/README.md +0 -0
  19. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/_common/config_checker/__init__.py +0 -0
  20. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/_common/config_checker/__main__.py +0 -0
  21. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/_common/config_checker/cli.py +0 -0
  22. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/_common/config_checker/differ.py +0 -0
  23. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/_common/config_checker/exporter.py +0 -0
  24. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/_common/config_checker/models.py +0 -0
  25. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/_common/config_checker/registry.py +0 -0
  26. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/_common/config_checker/validator.py +0 -0
  27. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/_common/default_language_model.py +0 -0
  28. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/_common/docx_generator/__init__.py +0 -0
  29. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/_common/docx_generator/config.py +0 -0
  30. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/_common/docx_generator/pandoc_converter.py +0 -0
  31. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/_common/docx_generator/schemas.py +0 -0
  32. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/_common/docx_generator/service.py +0 -0
  33. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/_common/docx_generator/template/Doc Template.docx +0 -0
  34. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/_common/endpoint_builder.py +0 -0
  35. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/_common/endpoint_requestor.py +0 -0
  36. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/_common/event_bus.py +0 -0
  37. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/_common/exception.py +0 -0
  38. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/_common/execution.py +0 -0
  39. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/_common/experimental/endpoint_builder.py +0 -0
  40. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/_common/experimental/endpoint_requestor.py +0 -0
  41. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/_common/experimental/write_up_agent/README.md +0 -0
  42. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/_common/experimental/write_up_agent/__init__.py +0 -0
  43. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/_common/experimental/write_up_agent/agent.py +0 -0
  44. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/_common/experimental/write_up_agent/config.py +0 -0
  45. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/_common/experimental/write_up_agent/examples/data.csv +0 -0
  46. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/_common/experimental/write_up_agent/examples/example_usage.py +0 -0
  47. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/_common/experimental/write_up_agent/schemas.py +0 -0
  48. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/_common/experimental/write_up_agent/services/__init__.py +0 -0
  49. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/_common/experimental/write_up_agent/services/dataframe_handler/__init__.py +0 -0
  50. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/_common/experimental/write_up_agent/services/dataframe_handler/exceptions.py +0 -0
  51. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/_common/experimental/write_up_agent/services/dataframe_handler/service.py +0 -0
  52. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/_common/experimental/write_up_agent/services/dataframe_handler/utils.py +0 -0
  53. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/__init__.py +0 -0
  54. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/config.py +0 -0
  55. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/exceptions.py +0 -0
  56. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/prompts/config.py +0 -0
  57. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/prompts/system_prompt.j2 +0 -0
  58. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/prompts/user_prompt.j2 +0 -0
  59. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/service.py +0 -0
  60. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/_common/experimental/write_up_agent/services/template_handler/__init__.py +0 -0
  61. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/_common/experimental/write_up_agent/services/template_handler/default_template.j2 +0 -0
  62. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/_common/experimental/write_up_agent/services/template_handler/exceptions.py +0 -0
  63. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/_common/experimental/write_up_agent/services/template_handler/service.py +0 -0
  64. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/_common/experimental/write_up_agent/services/template_handler/utils.py +0 -0
  65. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/_common/experimental/write_up_agent/utils.py +0 -0
  66. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/_common/feature_flags/schema.py +0 -0
  67. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/_common/pydantic/rjsf_tags.py +0 -0
  68. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/_common/pydantic_helpers.py +0 -0
  69. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/_common/referencing.py +0 -0
  70. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/_common/string_utilities.py +0 -0
  71. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/_common/tests/test_referencing.py +0 -0
  72. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/_common/tests/test_string_utilities.py +0 -0
  73. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/_common/token/__init__.py +0 -0
  74. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/_common/token/image_token_counting.py +0 -0
  75. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/_common/token/token_counting.py +0 -0
  76. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/_common/token/tokenizers/deepseek/tokenizer.json +0 -0
  77. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/_common/token/tokenizers/qwen/tokenizer.json +0 -0
  78. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/_common/utils/__init__.py +0 -0
  79. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/_common/utils/files.py +0 -0
  80. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/_common/utils/image/encode.py +0 -0
  81. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/_common/utils/jinja/helpers.py +0 -0
  82. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/_common/utils/jinja/render.py +0 -0
  83. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/_common/utils/jinja/schema.py +0 -0
  84. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/_common/utils/jinja/utils.py +0 -0
  85. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/_common/utils/structured_output/__init__.py +0 -0
  86. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/_common/utils/structured_output/schema.py +0 -0
  87. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/_common/utils/write_configuration.py +0 -0
  88. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/_common/validate_required_values.py +0 -0
  89. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/_common/validators.py +0 -0
  90. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/agentic/__init__.py +0 -0
  91. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/agentic/debug_info_manager/debug_info_manager.py +0 -0
  92. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/agentic/debug_info_manager/test/test_debug_info_manager.py +0 -0
  93. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/agentic/evaluation/config.py +0 -0
  94. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/agentic/evaluation/context_relevancy/prompts/__init__.py +0 -0
  95. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/agentic/evaluation/context_relevancy/prompts/system_prompt.j2 +0 -0
  96. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/agentic/evaluation/context_relevancy/prompts/user_prompt.j2 +0 -0
  97. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/agentic/evaluation/context_relevancy/schema.py +0 -0
  98. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/agentic/evaluation/context_relevancy/service.py +0 -0
  99. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/agentic/evaluation/evaluation_manager.py +0 -0
  100. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/agentic/evaluation/exception.py +0 -0
  101. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/agentic/evaluation/hallucination/constants.py +0 -0
  102. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/agentic/evaluation/hallucination/hallucination_evaluation.py +0 -0
  103. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/agentic/evaluation/hallucination/prompts/__init__.py +0 -0
  104. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/agentic/evaluation/hallucination/prompts/system_prompt.j2 +0 -0
  105. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/agentic/evaluation/hallucination/prompts/user_prompt.j2 +0 -0
  106. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/agentic/evaluation/hallucination/service.py +0 -0
  107. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/agentic/evaluation/hallucination/utils.py +0 -0
  108. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/agentic/evaluation/output_parser.py +0 -0
  109. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/agentic/evaluation/schemas.py +0 -0
  110. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/agentic/evaluation/tests/fixtures.py +0 -0
  111. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/agentic/evaluation/tests/test_config.py +0 -0
  112. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/agentic/evaluation/tests/test_context_relevancy_service.py +0 -0
  113. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/agentic/evaluation/tests/test_hallucination_constants.py +0 -0
  114. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/agentic/evaluation/tests/test_hallucination_utils.py +0 -0
  115. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/agentic/evaluation/tests/test_output_parser.py +0 -0
  116. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/agentic/evaluation/tests/test_prompt_loaders.py +0 -0
  117. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/agentic/evaluation/utils.py +0 -0
  118. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/agentic/feature_flags/__init__.py +0 -0
  119. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/agentic/feature_flags/feature_flags.py +0 -0
  120. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/agentic/history_manager/history_construction_with_contents.py +0 -0
  121. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/agentic/history_manager/history_manager.py +0 -0
  122. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/agentic/history_manager/loop_token_reducer.py +0 -0
  123. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/agentic/history_manager/utils.py +0 -0
  124. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/agentic/loop_runner/__init__.py +0 -0
  125. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/agentic/loop_runner/_iteration_handler_utils.py +0 -0
  126. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/agentic/loop_runner/_responses_iteration_handler_utils.py +0 -0
  127. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/agentic/loop_runner/_responses_stream_handler_utils.py +0 -0
  128. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/agentic/loop_runner/_stream_handler_utils.py +0 -0
  129. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/agentic/loop_runner/base.py +0 -0
  130. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/agentic/loop_runner/middleware/__init__.py +0 -0
  131. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/agentic/loop_runner/middleware/planning/__init__.py +0 -0
  132. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/agentic/loop_runner/middleware/planning/schema.py +0 -0
  133. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/agentic/loop_runner/runners/__init__.py +0 -0
  134. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/agentic/loop_runner/runners/basic.py +0 -0
  135. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/agentic/loop_runner/runners/mistral/__init__.py +0 -0
  136. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/agentic/loop_runner/runners/mistral/mistral_runner.py +0 -0
  137. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/agentic/loop_runner/runners/qwen/__init__.py +0 -0
  138. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/agentic/loop_runner/runners/qwen/helpers.py +0 -0
  139. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/agentic/loop_runner/runners/qwen/qwen_runner.py +0 -0
  140. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/agentic/message_log_manager/__init__.py +0 -0
  141. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/agentic/message_log_manager/service.py +0 -0
  142. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/agentic/postprocessor/postprocessor_manager.py +0 -0
  143. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/agentic/reference_manager/reference_manager.py +0 -0
  144. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/agentic/responses_api/__init__.py +0 -0
  145. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/agentic/responses_api/postprocessors/code_display.py +0 -0
  146. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/agentic/responses_api/postprocessors/generated_files.py +0 -0
  147. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/agentic/responses_api/stream_handler.py +0 -0
  148. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/agentic/short_term_memory_manager/persistent_short_term_memory_manager.py +0 -0
  149. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/agentic/thinking_manager/thinking_manager.py +0 -0
  150. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/agentic/tools/__init__.py +0 -0
  151. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/agentic/tools/a2a/__init__.py +0 -0
  152. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/agentic/tools/a2a/config.py +0 -0
  153. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/agentic/tools/a2a/evaluation/__init__.py +0 -0
  154. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/agentic/tools/a2a/evaluation/_utils.py +0 -0
  155. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/agentic/tools/a2a/evaluation/config.py +0 -0
  156. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/agentic/tools/a2a/evaluation/evaluator.py +0 -0
  157. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/agentic/tools/a2a/evaluation/summarization_user_message.j2 +0 -0
  158. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/agentic/tools/a2a/manager.py +0 -0
  159. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/agentic/tools/a2a/postprocessing/__init__.py +0 -0
  160. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/agentic/tools/a2a/postprocessing/_display_utils.py +0 -0
  161. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/agentic/tools/a2a/postprocessing/_ref_utils.py +0 -0
  162. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/agentic/tools/a2a/postprocessing/config.py +0 -0
  163. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/agentic/tools/a2a/postprocessing/display.py +0 -0
  164. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/agentic/tools/a2a/postprocessing/references.py +0 -0
  165. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/agentic/tools/a2a/postprocessing/test/test_display.py +0 -0
  166. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/agentic/tools/a2a/postprocessing/test/test_display_utils.py +0 -0
  167. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/agentic/tools/a2a/postprocessing/test/test_ref_utils.py +0 -0
  168. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/agentic/tools/a2a/prompts.py +0 -0
  169. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/agentic/tools/a2a/response_watcher/__init__.py +0 -0
  170. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/agentic/tools/a2a/response_watcher/service.py +0 -0
  171. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/agentic/tools/a2a/tool/__init__.py +0 -0
  172. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/agentic/tools/a2a/tool/_memory.py +0 -0
  173. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/agentic/tools/a2a/tool/_schema.py +0 -0
  174. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/agentic/tools/a2a/tool/config.py +0 -0
  175. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/agentic/tools/a2a/tool/service.py +0 -0
  176. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/agentic/tools/a2a/tool/test/test_service_utils.py +0 -0
  177. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/agentic/tools/agent_chunks_hanlder.py +0 -0
  178. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/agentic/tools/config.py +0 -0
  179. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/agentic/tools/experimental/__init__.py +0 -0
  180. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/agentic/tools/experimental/open_file_tool/__init__.py +0 -0
  181. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/agentic/tools/experimental/open_file_tool/config.py +0 -0
  182. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/agentic/tools/experimental/open_file_tool/runtime.py +0 -0
  183. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/agentic/tools/experimental/open_file_tool/tool.py +0 -0
  184. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/agentic/tools/factory.py +0 -0
  185. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/agentic/tools/mcp/__init__.py +0 -0
  186. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/agentic/tools/mcp/manager.py +0 -0
  187. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/agentic/tools/mcp/models.py +0 -0
  188. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/agentic/tools/mcp/tool_wrapper.py +0 -0
  189. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/agentic/tools/openai_builtin/__init__.py +0 -0
  190. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/agentic/tools/openai_builtin/base.py +0 -0
  191. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/__init__.py +0 -0
  192. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/config.py +0 -0
  193. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/postprocessors/__init__.py +0 -0
  194. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/postprocessors/code_display.py +0 -0
  195. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/postprocessors/generated_files.py +0 -0
  196. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/schemas.py +0 -0
  197. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/service.py +0 -0
  198. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/agentic/tools/openai_builtin/manager.py +0 -0
  199. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/agentic/tools/schemas.py +0 -0
  200. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/agentic/tools/test/test_mcp_manager.py +0 -0
  201. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/agentic/tools/test/test_tool_progress_reporter.py +0 -0
  202. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/agentic/tools/tool.py +0 -0
  203. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/agentic/tools/tool_manager.py +0 -0
  204. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/agentic/tools/tool_progress_reporter.py +0 -0
  205. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/agentic/tools/utils/__init__.py +0 -0
  206. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/agentic/tools/utils/source_handling/__init__.py +0 -0
  207. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/agentic/tools/utils/source_handling/schema.py +0 -0
  208. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/agentic/tools/utils/source_handling/source_formatting.py +0 -0
  209. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/agentic/tools/utils/source_handling/tests/test_source_formatting.py +0 -0
  210. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/agentic_table/__init__.py +0 -0
  211. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/agentic_table/schemas.py +0 -0
  212. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/agentic_table/service.py +0 -0
  213. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/app/__init__.py +0 -0
  214. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/app/chat_event_filter_options_settings.py +0 -0
  215. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/app/dev_util.py +0 -0
  216. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/app/fast_api_factory.py +0 -0
  217. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/app/feature_flags.py +0 -0
  218. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/app/find_env_file.py +0 -0
  219. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/app/init_logging.py +0 -0
  220. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/app/init_sdk.py +0 -0
  221. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/app/performance/async_tasks.py +0 -0
  222. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/app/performance/async_wrapper.py +0 -0
  223. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/app/schemas.py +0 -0
  224. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/app/unique_settings.py +0 -0
  225. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/app/verification.py +0 -0
  226. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/app/webhook.py +0 -0
  227. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/chat/__init__.py +0 -0
  228. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/chat/cancellation.py +0 -0
  229. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/chat/constants.py +0 -0
  230. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/chat/deprecated/service.py +0 -0
  231. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/chat/functions.py +0 -0
  232. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/chat/rendering.py +0 -0
  233. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/chat/responses_api.py +0 -0
  234. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/chat/schemas.py +0 -0
  235. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/chat/service.py +0 -0
  236. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/chat/state.py +0 -0
  237. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/chat/utils.py +0 -0
  238. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/content/__init__.py +0 -0
  239. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/content/constants.py +0 -0
  240. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/content/functions.py +0 -0
  241. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/content/service.py +0 -0
  242. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/content/smart_rules.py +0 -0
  243. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/data_extraction/README.md +0 -0
  244. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/data_extraction/__init__.py +0 -0
  245. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/data_extraction/augmented/__init__.py +0 -0
  246. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/data_extraction/augmented/service.py +0 -0
  247. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/data_extraction/base.py +0 -0
  248. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/data_extraction/basic/__init__.py +0 -0
  249. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/data_extraction/basic/config.py +0 -0
  250. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/data_extraction/basic/prompt.py +0 -0
  251. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/data_extraction/basic/service.py +0 -0
  252. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/elicitation/__init__.py +0 -0
  253. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/elicitation/constants.py +0 -0
  254. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/elicitation/exceptions.py +0 -0
  255. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/elicitation/functions.py +0 -0
  256. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/elicitation/schemas.py +0 -0
  257. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/elicitation/service.py +0 -0
  258. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/embedding/__init__.py +0 -0
  259. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/embedding/constants.py +0 -0
  260. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/embedding/functions.py +0 -0
  261. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/embedding/schemas.py +0 -0
  262. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/embedding/service.py +0 -0
  263. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/embedding/utils.py +0 -0
  264. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/framework_utilities/__init__.py +0 -0
  265. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/framework_utilities/langchain/__init__.py +0 -0
  266. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/framework_utilities/langchain/client.py +0 -0
  267. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/framework_utilities/langchain/history.py +0 -0
  268. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/framework_utilities/openai/__init__.py +0 -0
  269. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/framework_utilities/openai/client.py +0 -0
  270. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/framework_utilities/openai/message_builder.py +0 -0
  271. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/framework_utilities/utils.py +0 -0
  272. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/language_model/__init__.py +0 -0
  273. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/language_model/_responses_api_utils.py +0 -0
  274. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/language_model/builder.py +0 -0
  275. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/language_model/constants.py +0 -0
  276. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/language_model/default_language_model.py +0 -0
  277. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/language_model/functions.py +0 -0
  278. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/language_model/infos.py +0 -0
  279. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/language_model/prompt.py +0 -0
  280. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/language_model/reference.py +0 -0
  281. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/language_model/schemas.py +0 -0
  282. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/language_model/service.py +0 -0
  283. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/language_model/stream_transform.py +0 -0
  284. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/language_model/utils.py +0 -0
  285. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/monitoring/__init__.py +0 -0
  286. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/monitoring/middleware.py +0 -0
  287. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/monitoring/registry.py +0 -0
  288. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/protocols/support.py +0 -0
  289. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/services/__init__.py +0 -0
  290. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/services/chat_service.py +0 -0
  291. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/services/factory.py +0 -0
  292. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/services/knowledge_base.py +0 -0
  293. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/short_term_memory/__init__.py +0 -0
  294. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/short_term_memory/constants.py +0 -0
  295. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/short_term_memory/functions.py +0 -0
  296. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/short_term_memory/schemas.py +0 -0
  297. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/short_term_memory/service.py +0 -0
  298. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/smart_rules/__init__.py +0 -0
  299. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/unique_toolkit/smart_rules/compile.py +0 -0
  300. {unique_toolkit-1.74.2 → unique_toolkit-1.75.1}/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: 1.74.2
3
+ Version: 1.75.1
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>
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "unique_toolkit"
3
- version = "1.74.2"
3
+ version = "1.75.1"
4
4
  description = ""
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.12"
@@ -7,6 +7,7 @@ from openai.types.responses import (
7
7
  Response,
8
8
  ResponseFormatTextJSONSchemaConfigParam,
9
9
  ResponseInputItemParam,
10
+ ResponseOutputMessage,
10
11
  ResponseTextConfigParam,
11
12
  )
12
13
  from pydantic import BaseModel, Field
@@ -39,6 +40,26 @@ from unique_toolkit.language_model.schemas import (
39
40
  _LOGGER = logging.getLogger(__name__)
40
41
 
41
42
 
43
+ def _get_first_output_text(response: Response) -> str | None:
44
+ """
45
+ The Responses API can return multiple output items when doing structured output
46
+ (https://community.openai.com/t/multiple-outputs-from-responses-api/1291026),
47
+ We should tell the model not to do this in the schema, as well as extract only the first one
48
+ """
49
+ if len(response.output) > 1:
50
+ _LOGGER.warning(
51
+ "Model returned %i outputs, keeping only the first one",
52
+ len(response.output),
53
+ )
54
+
55
+ for item in response.output:
56
+ if isinstance(item, ResponseOutputMessage):
57
+ for content in item.content:
58
+ if content.type == "output_text" and content.text:
59
+ return content.text
60
+ return None
61
+
62
+
42
63
  class PlanningConfig(BaseModel):
43
64
  model_config = get_configuration_dict()
44
65
 
@@ -128,7 +149,7 @@ class ResponsesPlanningMiddleware(ResponsesLoopIterationRunner):
128
149
  self,
129
150
  openai_messages: str | list[ResponseInputItemParam],
130
151
  model_name: str,
131
- ) -> Response | None:
152
+ ) -> str | None:
132
153
  planning_schema = get_planning_schema(self._config.planning_schema_config)
133
154
 
134
155
  response = await self._openai_client.responses.create(
@@ -148,29 +169,30 @@ class ResponsesPlanningMiddleware(ResponsesLoopIterationRunner):
148
169
  ),
149
170
  )
150
171
 
151
- if not response.output_text:
172
+ output_text = _get_first_output_text(response)
173
+ if not output_text:
152
174
  _LOGGER.info("Empty planning response")
153
175
  return None
154
176
 
155
- return response
177
+ return output_text
156
178
 
157
179
  async def __call__(
158
180
  self, **kwargs: Unpack[_ResponsesLoopIterationRunnerKwargs]
159
181
  ) -> ResponsesLanguageModelStreamResponse:
160
182
  openai_messages = convert_messages_to_openai(kwargs["messages"])
161
183
 
162
- response = await self._run_plan_step(
184
+ output_text = await self._run_plan_step(
163
185
  openai_messages=openai_messages,
164
186
  model_name=kwargs["model"].name,
165
187
  )
166
188
 
167
- if response is None:
189
+ if output_text is None:
168
190
  _LOGGER.info(
169
191
  "Error executing planning step, proceeding without planning step"
170
192
  )
171
193
  return await self._loop_runner(**kwargs)
172
194
 
173
- assistant_message = LanguageModelAssistantMessage(content=response.output_text)
195
+ assistant_message = LanguageModelAssistantMessage(content=output_text)
174
196
 
175
197
  if self._history_manager is not None:
176
198
  self._history_manager.add_assistant_message(assistant_message)
@@ -1,3 +1,6 @@
1
+ from __future__ import annotations
2
+
3
+ import re
1
4
  from datetime import datetime
2
5
  from enum import StrEnum
3
6
  from typing import Any, Optional
@@ -72,6 +75,56 @@ class ContentChunk(BaseModel):
72
75
  created_at: datetime | None = None
73
76
  updated_at: datetime | None = None
74
77
 
78
+ def to_reference(
79
+ self,
80
+ sequence_number: int,
81
+ original_index: list[int] | None = None,
82
+ *,
83
+ message_id: str = "",
84
+ ) -> ContentReference:
85
+ """Convert this chunk into a ``ContentReference`` with page-number info.
86
+
87
+ When using ``modify_assistant_message`` (the message-update path) instead of
88
+ streaming via ``complete_with_references``, the backend does **not**
89
+ automatically create references from ``searchContext``. This method replicates
90
+ the reference format the backend streaming path produces so page numbers
91
+ appear in the frontend reference chips.
92
+
93
+ Args:
94
+ sequence_number: The 1-based sequence number shown in the ``<sup>``
95
+ tag in the message text.
96
+ original_index: Optional list of bracket indices (``[N]``) in the
97
+ message text that this reference corresponds to.
98
+ message_id: The chat message id this reference belongs to, if any.
99
+
100
+ Returns:
101
+ A ``ContentReference`` ready to pass to ``modify_assistant_message``.
102
+ """
103
+ from unique_toolkit.content.utils import _generate_pages_postfix
104
+
105
+ name = self.title or self.key or f"Content {self.id}"
106
+ pages_postfix = _generate_pages_postfix([self])
107
+ if pages_postfix and not re.search(r" : [\d,]+$", name):
108
+ name = f"{name}{pages_postfix}"
109
+
110
+ source_id = f"{self.id}_{self.chunk_id}" if self.chunk_id else self.id
111
+ url = (
112
+ self.url
113
+ if self.url and not self.internally_stored_at
114
+ else f"unique://content/{self.id}"
115
+ )
116
+
117
+ return ContentReference(
118
+ id=self.id,
119
+ message_id=message_id,
120
+ name=name,
121
+ sequence_number=sequence_number,
122
+ source_id=source_id,
123
+ source="node-ingestion-chunks",
124
+ url=url,
125
+ original_index=original_index or [],
126
+ )
127
+
75
128
 
76
129
  class Content(BaseModel):
77
130
  model_config = model_config
@@ -121,40 +121,33 @@ def merge_content_chunks(content_chunks: list[ContentChunk]):
121
121
 
122
122
 
123
123
  def _generate_pages_postfix(chunks: list[ContentChunk]) -> str:
124
- """
125
- Generates a postfix string of page numbers from a list of source objects.
126
- Each source object contains startPage and endPage numbers. The function
127
- compiles a list of all unique page numbers greater than 0 from all chunks,
128
- and then returns them as a string prefixed with " : " if there are any.
124
+ """Build a human-readable page suffix for one or more chunks (e.g. ``" : 1,2,3"``).
129
125
 
130
- Parameters:
131
- - chunks (list): A list of objects with 'startPage' and 'endPage' keys.
126
+ Collects all page numbers greater than zero from each chunk's ``start_page`` and
127
+ ``end_page``, deduplicates and sorts them, then formats them as ``" : n,n,..."`` or
128
+ returns the empty string when there are no valid pages.
129
+
130
+ **Usage:** Called from ``sort_content_chunks``, ``merge_content_chunks``, and
131
+ ``ContentChunk.to_reference`` so list presentation and reference names stay
132
+ consistent with the backend's page postfix convention.
133
+
134
+ **Why pages may be missing:** ``ContentChunk.start_page`` and ``end_page`` are
135
+ optional (``None`` from the API). This path must not call ``range`` with ``None``,
136
+ or callers would raise ``TypeError`` when building references from real chunks.
137
+
138
+ Args:
139
+ chunks: Chunks whose ``start_page`` / ``end_page`` may be ``None`` or ``-1``
140
+ (sentinel for unknown).
132
141
 
133
142
  Returns:
134
- - string: A string of page numbers separated by commas, prefixed with " : ".
143
+ Postfix string such as ``" : 3,4,5"``, or ``""`` when no positive pages apply.
135
144
  """
136
145
 
137
- def gen_all_numbers_in_between(start, end) -> list[int]:
138
- """
139
- Generates a list of all numbers between start and end, inclusive.
140
- If start or end is -1, it behaves as follows:
141
- - If both start and end are -1, it returns an empty list.
142
- - If only end is -1, it returns a list containing only the start.
143
- - If start is -1, it returns an empty list.
144
-
145
- Parameters:
146
- - start (int): The starting page number.
147
- - end (int): The ending page number.
148
-
149
- Returns:
150
- - list: A list of numbers from start to end, inclusive.
151
- """
152
- if start == -1 and end == -1:
146
+ def gen_all_numbers_in_between(start: int | None, end: int | None) -> list[int]:
147
+ if start is None or start == -1:
153
148
  return []
154
- if end == -1:
149
+ if end is None or end == -1:
155
150
  return [start]
156
- if start == -1:
157
- return []
158
151
  return list(range(start, end + 1))
159
152
 
160
153
  page_numbers_array = [