unique_toolkit 2026.22.0__tar.gz → 2026.22.0.dev0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/PKG-INFO +2 -2
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/pyproject.toml +2 -2
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/_common/utils/files.py +2 -3
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/feature_flags/feature_flags.py +5 -5
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/history_manager/loop_token_reducer.py +4 -3
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/tools/config.py +6 -2
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/tools/names.py +0 -1
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/tools/openai_builtin/base.py +0 -7
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/config.py +5 -42
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/postprocessors/generated_files.py +69 -38
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/service.py +40 -74
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/tools/tool.py +0 -10
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/tools/tool_manager.py +2 -12
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/app/schemas.py +2 -13
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/language_model/infos.py +22 -118
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/language_model/schemas.py +0 -13
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/services/chat_service.py +9 -37
- unique_toolkit-2026.22.0/unique_toolkit/agentic/history_manager/settings.py +0 -53
- unique_toolkit-2026.22.0/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/postprocessors/artifacts.py +0 -103
- unique_toolkit-2026.22.0/unique_toolkit/language_model/settings.py +0 -65
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/README.md +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/__init__.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/_common/__init__.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/_common/_base_service.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/_common/_time_utils.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/_common/api_calling/human_verification_manager.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/_common/base_model_type_attribute.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/_common/chunk_relevancy_sorter/config.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/_common/chunk_relevancy_sorter/exception.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/_common/chunk_relevancy_sorter/schemas.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/_common/chunk_relevancy_sorter/service.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/_common/chunk_relevancy_sorter/tests/test_service.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/_common/config_checker/README.md +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/_common/config_checker/__init__.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/_common/config_checker/__main__.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/_common/config_checker/cli.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/_common/config_checker/differ.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/_common/config_checker/exporter.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/_common/config_checker/models.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/_common/config_checker/registry.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/_common/config_checker/validator.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/_common/default_language_model.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/_common/docx_generator/__init__.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/_common/docx_generator/config.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/_common/docx_generator/pandoc_converter.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/_common/docx_generator/schemas.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/_common/docx_generator/service.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/_common/docx_generator/template/Doc Template.docx +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/_common/endpoint_builder.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/_common/endpoint_requestor.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/_common/event_bus.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/_common/exception.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/_common/execution.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/_common/experimental/endpoint_builder.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/_common/experimental/endpoint_requestor.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/_common/experimental/write_up_agent/README.md +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/_common/experimental/write_up_agent/__init__.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/_common/experimental/write_up_agent/agent.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/_common/experimental/write_up_agent/config.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/_common/experimental/write_up_agent/examples/data.csv +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/_common/experimental/write_up_agent/examples/example_usage.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/_common/experimental/write_up_agent/schemas.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/_common/experimental/write_up_agent/services/__init__.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/_common/experimental/write_up_agent/services/dataframe_handler/__init__.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/_common/experimental/write_up_agent/services/dataframe_handler/exceptions.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/_common/experimental/write_up_agent/services/dataframe_handler/service.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/_common/experimental/write_up_agent/services/dataframe_handler/utils.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/__init__.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/config.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/exceptions.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/prompts/config.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/prompts/system_prompt.j2 +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/prompts/user_prompt.j2 +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/service.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/_common/experimental/write_up_agent/services/template_handler/__init__.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/_common/experimental/write_up_agent/services/template_handler/default_template.j2 +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/_common/experimental/write_up_agent/services/template_handler/exceptions.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/_common/experimental/write_up_agent/services/template_handler/service.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/_common/experimental/write_up_agent/services/template_handler/utils.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/_common/experimental/write_up_agent/utils.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/_common/feature_flags/schema.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/_common/metadata_filter_scope.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/_common/pydantic/rjsf_tags.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/_common/pydantic_helpers.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/_common/referencing.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/_common/string_utilities.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/_common/tests/test_referencing.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/_common/tests/test_string_utilities.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/_common/token/__init__.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/_common/token/image_token_counting.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/_common/token/token_counting.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/_common/token/tokenizers/deepseek/tokenizer.json +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/_common/token/tokenizers/qwen/tokenizer.json +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/_common/utils/__init__.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/_common/utils/image/encode.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/_common/utils/jinja/helpers.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/_common/utils/jinja/render.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/_common/utils/jinja/schema.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/_common/utils/jinja/utils.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/_common/utils/structured_output/__init__.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/_common/utils/structured_output/schema.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/_common/utils/write_configuration.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/_common/validate_required_values.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/_common/validators.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/__init__.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/debug_info_manager/debug_info_manager.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/debug_info_manager/test/test_debug_info_manager.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/evaluation/config.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/evaluation/context_relevancy/prompts/__init__.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/evaluation/context_relevancy/prompts/system_prompt.j2 +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/evaluation/context_relevancy/prompts/user_prompt.j2 +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/evaluation/context_relevancy/schema.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/evaluation/context_relevancy/service.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/evaluation/evaluation_manager.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/evaluation/exception.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/evaluation/hallucination/constants.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/evaluation/hallucination/hallucination_evaluation.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/evaluation/hallucination/prompts/__init__.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/evaluation/hallucination/prompts/system_prompt.j2 +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/evaluation/hallucination/prompts/user_prompt.j2 +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/evaluation/hallucination/service.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/evaluation/hallucination/utils.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/evaluation/output_parser.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/evaluation/schemas.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/evaluation/tests/fixtures.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/evaluation/tests/test_config.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/evaluation/tests/test_context_relevancy_service.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/evaluation/tests/test_hallucination_constants.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/evaluation/tests/test_hallucination_utils.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/evaluation/tests/test_output_parser.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/evaluation/tests/test_prompt_loaders.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/evaluation/utils.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/feature_flags/__init__.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/history_manager/history_construction_with_contents.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/history_manager/history_manager.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/history_manager/utils.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/loop_runner/__init__.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/loop_runner/_iteration_handler_utils.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/loop_runner/_responses_iteration_handler_utils.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/loop_runner/_responses_stream_handler_utils.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/loop_runner/_stream_handler_utils.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/loop_runner/base.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/loop_runner/middleware/__init__.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/loop_runner/middleware/planning/__init__.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/loop_runner/middleware/planning/planning.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/loop_runner/middleware/planning/schema.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/loop_runner/runners/__init__.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/loop_runner/runners/basic.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/loop_runner/runners/mistral/__init__.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/loop_runner/runners/mistral/mistral_runner.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/loop_runner/runners/qwen/__init__.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/loop_runner/runners/qwen/helpers.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/loop_runner/runners/qwen/qwen_runner.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/message_log_manager/__init__.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/message_log_manager/service.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/message_log_order.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/postprocessor/postprocessor_manager.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/reference_manager/reference_manager.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/responses_api/__init__.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/responses_api/postprocessors/code_display.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/responses_api/postprocessors/generated_files.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/responses_api/stream_handler.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/short_term_memory_manager/persistent_short_term_memory_manager.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/thinking_manager/thinking_manager.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/tools/__init__.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/tools/a2a/__init__.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/tools/a2a/config.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/tools/a2a/evaluation/__init__.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/tools/a2a/evaluation/_utils.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/tools/a2a/evaluation/config.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/tools/a2a/evaluation/evaluator.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/tools/a2a/evaluation/summarization_user_message.j2 +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/tools/a2a/manager.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/tools/a2a/postprocessing/__init__.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/tools/a2a/postprocessing/_display_utils.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/tools/a2a/postprocessing/_ref_utils.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/tools/a2a/postprocessing/config.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/tools/a2a/postprocessing/display.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/tools/a2a/postprocessing/references.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/tools/a2a/postprocessing/test/test_display.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/tools/a2a/postprocessing/test/test_display_utils.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/tools/a2a/postprocessing/test/test_ref_utils.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/tools/a2a/postprocessing/test/test_references.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/tools/a2a/prompts.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/tools/a2a/response_watcher/__init__.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/tools/a2a/response_watcher/service.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/tools/a2a/tool/__init__.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/tools/a2a/tool/_memory.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/tools/a2a/tool/_schema.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/tools/a2a/tool/config.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/tools/a2a/tool/service.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/tools/a2a/tool/test/test_service_utils.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/tools/agent_chunks_hanlder.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/tools/experimental/__init__.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/tools/experimental/open_file_tool/__init__.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/tools/experimental/open_file_tool/config.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/tools/experimental/open_file_tool/runtime.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/tools/experimental/open_file_tool/tool.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/tools/experimental/retrieve_search_scope_tool/__init__.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/tools/experimental/retrieve_search_scope_tool/config.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/tools/experimental/retrieve_search_scope_tool/tool.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/tools/experimental/todo/__init__.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/tools/experimental/todo/config.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/tools/experimental/todo/prompts/__init__.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/tools/experimental/todo/prompts/execution_reminder.j2 +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/tools/experimental/todo/prompts/system_prompt.j2 +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/tools/experimental/todo/prompts/tool_description.j2 +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/tools/experimental/todo/prompts/verification_nudge.j2 +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/tools/experimental/todo/schemas.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/tools/experimental/todo/service.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/tools/factory.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/tools/mcp/__init__.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/tools/mcp/manager.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/tools/mcp/models.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/tools/mcp/tool_wrapper.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/tools/openai_builtin/__init__.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/__init__.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/postprocessors/__init__.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/postprocessors/code_display.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/schemas.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/tools/openai_builtin/manager.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/tools/schemas.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/tools/test/test_mcp_manager.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/tools/test/test_tool_progress_reporter.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/tools/tool_progress_reporter.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/tools/utils/__init__.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/tools/utils/source_handling/__init__.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/tools/utils/source_handling/schema.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/tools/utils/source_handling/source_formatting.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/tools/utils/source_handling/tests/test_source_formatting.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic_table/__init__.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic_table/schemas.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic_table/service.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/app/__init__.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/app/chat_event_filter_options_settings.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/app/dev_util.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/app/fast_api_factory.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/app/feature_flags.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/app/find_env_file.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/app/init_logging.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/app/init_sdk.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/app/performance/async_tasks.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/app/performance/async_wrapper.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/app/unique_settings.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/app/verification.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/app/webhook.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/chat/__init__.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/chat/cancellation.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/chat/constants.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/chat/deprecated/service.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/chat/functions.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/chat/rendering.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/chat/responses_api.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/chat/schemas.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/chat/service.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/chat/state.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/chat/utils.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/content/__init__.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/content/constants.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/content/functions.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/content/schemas.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/content/service.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/content/smart_rules.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/content/utils.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/data_extraction/README.md +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/data_extraction/__init__.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/data_extraction/augmented/__init__.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/data_extraction/augmented/service.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/data_extraction/base.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/data_extraction/basic/__init__.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/data_extraction/basic/config.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/data_extraction/basic/prompt.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/data_extraction/basic/service.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/elicitation/__init__.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/elicitation/constants.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/elicitation/exceptions.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/elicitation/functions.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/elicitation/schemas.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/elicitation/service.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/embedding/__init__.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/embedding/constants.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/embedding/functions.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/embedding/schemas.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/embedding/service.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/embedding/utils.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/experimental/README.md +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/experimental/__init__.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/experimental/_internal/__init__.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/experimental/_internal/streaming/__init__.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/experimental/_internal/streaming/common.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/experimental/_internal/streaming/pattern_replacer.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/experimental/components/__init__.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/experimental/components/_base.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/experimental/components/content_tree/__init__.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/experimental/components/content_tree/functions.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/experimental/components/content_tree/schemas.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/experimental/components/content_tree/service.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/experimental/components/internal_search/__init__.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/experimental/components/internal_search/base/__init__.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/experimental/components/internal_search/base/config.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/experimental/components/internal_search/base/schemas.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/experimental/components/internal_search/base/service.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/experimental/components/internal_search/base/utils.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/experimental/components/internal_search/chat/__init__.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/experimental/components/internal_search/chat/config.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/experimental/components/internal_search/chat/schemas.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/experimental/components/internal_search/chat/service.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/experimental/components/internal_search/knowledge_base/__init__.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/experimental/components/internal_search/knowledge_base/config.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/experimental/components/internal_search/knowledge_base/schemas.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/experimental/components/internal_search/knowledge_base/service.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/experimental/components/internal_search/post_processing/__init__.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/experimental/components/internal_search/post_processing/config.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/experimental/components/internal_search/post_processing/service.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/experimental/content_tree/__init__.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/experimental/identity/__init__.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/experimental/integrations/__init__.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/experimental/integrations/openai/__init__.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/experimental/integrations/openai/streaming/__init__.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/__init__.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/_async_bridge.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/chat_completions/__init__.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/chat_completions/complete_with_references.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/chat_completions/stream_event_router.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/chat_completions/text_event_handler.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/chat_completions/tool_call_event_handler.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/events.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/protocols/__init__.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/protocols/chat_completions.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/protocols/responses.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/responses/__init__.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/responses/code_interpreter_event_handler.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/responses/complete_with_references.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/responses/completed_event_handler.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/responses/stream_event_router.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/responses/text_delta_event_handler.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/responses/tool_call_event_handler.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/subscribers/__init__.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/subscribers/message_persister.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/subscribers/progress_log_persister.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/experimental/resources/__init__.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/experimental/resources/content_folder/__init__.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/experimental/resources/content_folder/functions.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/experimental/resources/content_folder/schemas.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/experimental/resources/content_folder/service.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/experimental/resources/facades/__init__.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/experimental/resources/facades/identity/__init__.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/experimental/resources/facades/identity/service.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/experimental/resources/group/__init__.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/experimental/resources/group/functions.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/experimental/resources/group/schemas.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/experimental/resources/group/service.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/experimental/resources/scheduled_task/__init__.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/experimental/resources/scheduled_task/cron.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/experimental/resources/scheduled_task/functions.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/experimental/resources/scheduled_task/schemas.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/experimental/resources/scheduled_task/service.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/experimental/resources/user/__init__.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/experimental/resources/user/functions.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/experimental/resources/user/schemas.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/experimental/resources/user/service.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/experimental/testing/__init__.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/framework_utilities/__init__.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/framework_utilities/langchain/__init__.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/framework_utilities/langchain/client.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/framework_utilities/langchain/history.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/framework_utilities/openai/__init__.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/framework_utilities/openai/client.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/framework_utilities/openai/message_builder.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/framework_utilities/utils.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/language_model/__init__.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/language_model/_responses_api_utils.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/language_model/builder.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/language_model/constants.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/language_model/default_language_model.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/language_model/functions.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/language_model/prompt.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/language_model/reference.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/language_model/service.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/language_model/stream_transform.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/language_model/utils.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/monitoring/__init__.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/monitoring/middleware.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/monitoring/registry.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/protocols/support.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/services/__init__.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/services/factory.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/services/knowledge_base.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/short_term_memory/__init__.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/short_term_memory/constants.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/short_term_memory/functions.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/short_term_memory/schemas.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/short_term_memory/service.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/smart_rules/__init__.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/smart_rules/compile.py +0 -0
- {unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/test_utilities/events.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.3
|
|
2
2
|
Name: unique-toolkit
|
|
3
|
-
Version: 2026.22.0
|
|
3
|
+
Version: 2026.22.0.dev0
|
|
4
4
|
Summary:
|
|
5
5
|
Author: Cedric Klinkert, Martin Fadler, Sadique Sheik, Fabian Schläpfer, Pascal Hauri, Ejiroghene Oki-Peter, Rami Azouz, Ricardo Visini, Sanzio Monti
|
|
6
6
|
Author-email: Cedric Klinkert <cedric.klinkert@unique.ch>, Martin Fadler <martin.fadler@unique.ch>, Sadique Sheik <sadique@unique.ch>, Fabian Schläpfer <fabian@unique.ch>, Pascal Hauri <pascal@unique.ch>, Ejiroghene Oki-Peter <oki-peter.ejiroghene@unique.ai>, Rami Azouz <rami.ext@unique.ch>, Ricardo Visini <ricardo.visini@unique.ch>, Sanzio Monti <sanzio.monti@unique.ai>
|
|
@@ -16,7 +16,7 @@ Requires-Dist: sseclient>=0.0.27,<0.0.28
|
|
|
16
16
|
Requires-Dist: openai>=1.105.0,<3
|
|
17
17
|
Requires-Dist: platformdirs>=4.0.0,<5
|
|
18
18
|
Requires-Dist: pillow>=12.1.1
|
|
19
|
-
Requires-Dist: unique-sdk>=2026.22.0
|
|
19
|
+
Requires-Dist: unique-sdk>=2026.22.0.dev0,<2026.22.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.22.0"
|
|
3
|
+
version = "2026.22.0.dev0"
|
|
4
4
|
description = ""
|
|
5
5
|
readme = "README.md"
|
|
6
6
|
requires-python = ">=3.12"
|
|
@@ -28,7 +28,7 @@ dependencies = [
|
|
|
28
28
|
"openai>=1.105.0,<3",
|
|
29
29
|
"platformdirs>=4.0.0,<5",
|
|
30
30
|
"pillow>=12.1.1",
|
|
31
|
-
"unique-sdk>=2026.22.0",
|
|
31
|
+
"unique-sdk>=2026.22.0.dev0,<2026.22.0rc0",
|
|
32
32
|
"jambo>=0.1.2,<0.2",
|
|
33
33
|
"jinja2>=3.1.6,<4",
|
|
34
34
|
"docxtpl>=0.20.1,<0.21",
|
{unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/_common/utils/files.py
RENAMED
|
@@ -8,7 +8,6 @@ from pathlib import Path
|
|
|
8
8
|
class FileMimeType(StrEnum):
|
|
9
9
|
PDF = "application/pdf"
|
|
10
10
|
DOCX = "application/vnd.openxmlformats-officedocument.wordprocessingml.document"
|
|
11
|
-
DOTX = "application/vnd.openxmlformats-officedocument.wordprocessingml.template"
|
|
12
11
|
DOC = "application/msword"
|
|
13
12
|
# TODO: clean up duplicates and make the monolith compatible with this.
|
|
14
13
|
XLSX = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
|
|
@@ -42,7 +41,7 @@ class FileMimeType(StrEnum):
|
|
|
42
41
|
@property
|
|
43
42
|
def is_docx(self) -> bool:
|
|
44
43
|
cls = self.__class__
|
|
45
|
-
return self in {cls.DOCX, cls.
|
|
44
|
+
return self in {cls.DOCX, cls.DOC}
|
|
46
45
|
|
|
47
46
|
@property
|
|
48
47
|
def is_pdf(self) -> bool:
|
|
@@ -99,7 +98,7 @@ class FileMimeType(StrEnum):
|
|
|
99
98
|
|
|
100
99
|
def get_common_name(extension: FileMimeType) -> str:
|
|
101
100
|
match extension:
|
|
102
|
-
case FileMimeType.DOCX | FileMimeType.
|
|
101
|
+
case FileMimeType.DOCX | FileMimeType.DOC:
|
|
103
102
|
return "docx"
|
|
104
103
|
case (
|
|
105
104
|
FileMimeType.XLSX
|
|
@@ -66,6 +66,11 @@ class FeatureFlags(BaseSettings):
|
|
|
66
66
|
description="Enable new answers UI (UN-14411)",
|
|
67
67
|
)
|
|
68
68
|
|
|
69
|
+
enable_elicitation_un_15809: FeatureFlag = Field(
|
|
70
|
+
default=FeatureFlag(False),
|
|
71
|
+
description="Enable elicitation (UN-15809)",
|
|
72
|
+
)
|
|
73
|
+
|
|
69
74
|
enable_html_rendering_un_15131: FeatureFlag = Field(
|
|
70
75
|
default=FeatureFlag(False),
|
|
71
76
|
description="Enable HTML rendering for code interpreter files (UN-15131). Can be 'true' or comma-separated company IDs.",
|
|
@@ -76,11 +81,6 @@ class FeatureFlags(BaseSettings):
|
|
|
76
81
|
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.",
|
|
77
82
|
)
|
|
78
83
|
|
|
79
|
-
enable_html_with_fence_un_17927: FeatureFlag = Field(
|
|
80
|
-
default=FeatureFlag(False),
|
|
81
|
-
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.",
|
|
82
|
-
)
|
|
83
|
-
|
|
84
84
|
enable_web_search_argument_screening_un_18741: FeatureFlag = Field(
|
|
85
85
|
default=FeatureFlag(False),
|
|
86
86
|
description="Enable argument screening agent for web search tool calls (UN-18741). Can be 'true' or comma-separated company IDs.",
|
|
@@ -13,7 +13,6 @@ from unique_toolkit.agentic.history_manager.history_construction_with_contents i
|
|
|
13
13
|
get_full_history_with_contents_and_tool_calls_async,
|
|
14
14
|
get_full_history_with_contents_async,
|
|
15
15
|
)
|
|
16
|
-
from unique_toolkit.agentic.history_manager.settings import env_settings
|
|
17
16
|
from unique_toolkit.agentic.history_manager.utils import (
|
|
18
17
|
get_selected_uploaded_content_ids,
|
|
19
18
|
serialize_tool_content_json,
|
|
@@ -34,8 +33,10 @@ from unique_toolkit.language_model.schemas import (
|
|
|
34
33
|
)
|
|
35
34
|
from unique_toolkit.services.factory import UniqueServiceFactory
|
|
36
35
|
|
|
37
|
-
MAX_INPUT_TOKENS_SAFETY_PERCENTAGE =
|
|
38
|
-
|
|
36
|
+
MAX_INPUT_TOKENS_SAFETY_PERCENTAGE = (
|
|
37
|
+
0.1 # 10% safety margin for input tokens we need 10% less does not work.
|
|
38
|
+
)
|
|
39
|
+
SAFETY_MARGIN_FOR_AGGRESSIVE_REDUCTION = 0.9
|
|
39
40
|
|
|
40
41
|
|
|
41
42
|
class SourceReductionResult(BaseModel):
|
{unique_toolkit-2026.22.0 → unique_toolkit-2026.22.0.dev0}/unique_toolkit/agentic/tools/config.py
RENAMED
|
@@ -5,8 +5,8 @@ from pydantic import (
|
|
|
5
5
|
BaseModel,
|
|
6
6
|
BeforeValidator,
|
|
7
7
|
Field,
|
|
8
|
-
SerializeAsAny,
|
|
9
8
|
ValidationInfo,
|
|
9
|
+
field_serializer,
|
|
10
10
|
model_validator,
|
|
11
11
|
)
|
|
12
12
|
from typing_extensions import TypeVar
|
|
@@ -53,7 +53,7 @@ class ToolBuildConfig(BaseModel, Generic[T]):
|
|
|
53
53
|
"""Main tool configuration"""
|
|
54
54
|
|
|
55
55
|
name: str
|
|
56
|
-
configuration:
|
|
56
|
+
configuration: T
|
|
57
57
|
display_name: str = ""
|
|
58
58
|
icon: Annotated[ToolIcon, BeforeValidator(handle_undefined_icon)] = Field(
|
|
59
59
|
default=ToolIcon.BOOK,
|
|
@@ -125,3 +125,7 @@ class ToolBuildConfig(BaseModel, Generic[T]):
|
|
|
125
125
|
config = configuration
|
|
126
126
|
value["configuration"] = config
|
|
127
127
|
return value
|
|
128
|
+
|
|
129
|
+
@field_serializer("configuration")
|
|
130
|
+
def serialize_config(self, value: T) -> dict[str, Any]:
|
|
131
|
+
return value.__class__.model_dump(value)
|
|
@@ -46,13 +46,6 @@ class OpenAIBuiltInTool(ABC, Generic[ToolType]):
|
|
|
46
46
|
def display_name(self) -> str:
|
|
47
47
|
raise NotImplementedError()
|
|
48
48
|
|
|
49
|
-
def is_capability(self) -> bool:
|
|
50
|
-
"""Return True if this tool is a capability that must remain in the
|
|
51
|
-
active tool set regardless of ``tool_choices`` filtering.
|
|
52
|
-
Default: False.
|
|
53
|
-
"""
|
|
54
|
-
return False
|
|
55
|
-
|
|
56
49
|
def get_required_include_params(self) -> list[ResponseIncludable]:
|
|
57
50
|
"""Return Responses API `include` values required by this tool.
|
|
58
51
|
|
|
@@ -17,36 +17,7 @@ from unique_toolkit.agentic.tools.openai_builtin.code_interpreter.postprocessors
|
|
|
17
17
|
)
|
|
18
18
|
from unique_toolkit.agentic.tools.schemas import BaseToolConfig
|
|
19
19
|
|
|
20
|
-
|
|
21
|
-
{%- if user_uploaded_files and user_uploaded_files | length > 0 %}
|
|
22
|
-
|
|
23
|
-
## User Uploaded Files
|
|
24
|
-
The following files have been uploaded by the user and are available in the environment:
|
|
25
|
-
{% for file in user_uploaded_files %}
|
|
26
|
-
- {{ file }}
|
|
27
|
-
{% endfor %}
|
|
28
|
-
{% endif %}
|
|
29
|
-
|
|
30
|
-
{%- if kb_uploaded_files and kb_uploaded_files | length > 0 %}
|
|
31
|
-
|
|
32
|
-
## Knowledge Base Files
|
|
33
|
-
These files are made available by the system but were NOT uploaded by the user:
|
|
34
|
-
{% for file in kb_uploaded_files %}
|
|
35
|
-
- {{ file }}
|
|
36
|
-
{% endfor %}
|
|
37
|
-
{% endif %}
|
|
38
|
-
|
|
39
|
-
{%- if code_interpreter_artifacts and code_interpreter_artifacts | length > 0 %}
|
|
40
|
-
|
|
41
|
-
## Code Interpreter Artifacts
|
|
42
|
-
The following files have been generated by you using the python tool in previous turns:
|
|
43
|
-
{% for file in code_interpreter_artifacts %}
|
|
44
|
-
- {{ file }}
|
|
45
|
-
{% endfor %}
|
|
46
|
-
{% endif %}
|
|
47
|
-
""".strip()
|
|
48
|
-
|
|
49
|
-
_TOOL_DESCRIPTION_FOR_SYSTEM_PROMPT_BASE = """
|
|
20
|
+
DEFAULT_TOOL_DESCRIPTION_FOR_SYSTEM_PROMPT = """
|
|
50
21
|
Use this tool to run python code, e.g to generate plots, process excel files, perform calculations, etc.
|
|
51
22
|
|
|
52
23
|
Instructions:
|
|
@@ -66,7 +37,7 @@ WHENEVER you reference a generated file, you MUST use the following format:
|
|
|
66
37
|
IMPORTANT: Do NOT append a leading `!` even when displaying an image.
|
|
67
38
|
Always use a line break between the title and the markdown!
|
|
68
39
|
- Files with image file extensions are displayed directly in the chat, while other file extensions are shown as download links.
|
|
69
|
-
- Not using syntax above will FAIL to show images to the user.
|
|
40
|
+
- Not using syntax above will FAIL to show images to the user.
|
|
70
41
|
- YOU MUST use the syntax above to display images, otherwise the image will not be displayed in the chat.
|
|
71
42
|
- Only the following file types are allowed to be uploaded to the platform, anything else will FAIL: PDF, DOCX, XLSX, PPTX, CSV, HTML, MD, TXT, PNG, JPG, JPEG.
|
|
72
43
|
- You MUST always use this syntax, otherwise the files will not be displayed in the chat.
|
|
@@ -87,11 +58,7 @@ Handling User Queries:
|
|
|
87
58
|
- REMEMBER that you can always read the content of text, csv files if needed. In this case, you MUST always limit the amount of data displayed.
|
|
88
59
|
- If a tool step fails, you must recover as much as possible.
|
|
89
60
|
- After exhausting all possible solutions without success, inform the user of what was tried and request clarification/help.
|
|
90
|
-
"""
|
|
91
|
-
|
|
92
|
-
DEFAULT_TOOL_DESCRIPTION_FOR_SYSTEM_PROMPT = (
|
|
93
|
-
_TOOL_DESCRIPTION_FOR_SYSTEM_PROMPT_BASE + _TOOL_DESCRIPTION_FILES_SUFFIX
|
|
94
|
-
).strip()
|
|
61
|
+
""".strip()
|
|
95
62
|
|
|
96
63
|
# Used when the code-execution fence feature flag (UN-17972) is enabled.
|
|
97
64
|
# The frontend derives the artifact title from the filename itself, so the
|
|
@@ -104,7 +71,7 @@ DEFAULT_TOOL_DESCRIPTION_FOR_SYSTEM_PROMPT = (
|
|
|
104
71
|
# UN-19880: kaleido is not installed in the Azure OpenAI code interpreter environment,
|
|
105
72
|
# so plotly's fig.write_image() always fails. The "Visualization library choice" section
|
|
106
73
|
# steers the model to use matplotlib for PNG outputs and plotly only for HTML artifacts.
|
|
107
|
-
|
|
74
|
+
DEFAULT_TOOL_DESCRIPTION_FOR_SYSTEM_PROMPT_FENCE = """
|
|
108
75
|
Use this tool to run python code, e.g to generate plots, process excel files, perform calculations, etc.
|
|
109
76
|
|
|
110
77
|
Instructions:
|
|
@@ -170,11 +137,7 @@ Handling User Queries:
|
|
|
170
137
|
- REMEMBER that you can always read the content of text, csv files if needed. In this case, you MUST always limit the amount of data displayed.
|
|
171
138
|
- If a tool step fails, you must recover as much as possible.
|
|
172
139
|
- After exhausting all possible solutions without success, inform the user of what was tried and request clarification/help.
|
|
173
|
-
"""
|
|
174
|
-
|
|
175
|
-
DEFAULT_TOOL_DESCRIPTION_FOR_SYSTEM_PROMPT_FENCE = (
|
|
176
|
-
_TOOL_DESCRIPTION_FOR_SYSTEM_PROMPT_FENCE_BASE + _TOOL_DESCRIPTION_FILES_SUFFIX
|
|
177
|
-
).strip()
|
|
140
|
+
""".strip()
|
|
178
141
|
|
|
179
142
|
|
|
180
143
|
DEFAULT_TOOL_DESCRIPTION_FOR_USER_PROMPT = ""
|
|
@@ -21,6 +21,7 @@ from tenacity import (
|
|
|
21
21
|
|
|
22
22
|
from unique_toolkit import ChatService
|
|
23
23
|
from unique_toolkit._common.execution import failsafe_async
|
|
24
|
+
from unique_toolkit._common.utils.files import FileMimeType, ImageMimeType
|
|
24
25
|
from unique_toolkit.agentic.feature_flags.feature_flags import feature_flags
|
|
25
26
|
from unique_toolkit.agentic.postprocessor.postprocessor_manager import (
|
|
26
27
|
ResponsesApiPostprocessor,
|
|
@@ -29,9 +30,6 @@ from unique_toolkit.agentic.short_term_memory_manager.persistent_short_term_memo
|
|
|
29
30
|
PersistentShortMemoryManager,
|
|
30
31
|
)
|
|
31
32
|
from unique_toolkit.agentic.tools.config import get_configuration_dict
|
|
32
|
-
from unique_toolkit.agentic.tools.openai_builtin.code_interpreter.postprocessors.artifacts import (
|
|
33
|
-
save_code_execution_artifact,
|
|
34
|
-
)
|
|
35
33
|
from unique_toolkit.agentic.tools.openai_builtin.code_interpreter.schemas import (
|
|
36
34
|
CodeInterpreterBlock,
|
|
37
35
|
CodeInterpreterFile,
|
|
@@ -503,15 +501,6 @@ class DisplayCodeInterpreterFilesPostProcessor(
|
|
|
503
501
|
fence_ff_on = feature_flags.enable_code_execution_fence_un_17972.is_enabled(
|
|
504
502
|
self._company_id
|
|
505
503
|
)
|
|
506
|
-
# HTML uses htmlWithSource only when BOTH the code-execution fence FF AND the
|
|
507
|
-
# dedicated HTML-fence FF are on. Default (FF off) keeps HtmlRendering so
|
|
508
|
-
# existing deployments are unaffected.
|
|
509
|
-
html_fence_ff_on = (
|
|
510
|
-
fence_ff_on
|
|
511
|
-
and feature_flags.enable_html_with_fence_un_17927.is_enabled(
|
|
512
|
-
self._company_id
|
|
513
|
-
)
|
|
514
|
-
)
|
|
515
504
|
|
|
516
505
|
replaced_files: list[str] = []
|
|
517
506
|
missed_files: list[str] = []
|
|
@@ -543,9 +532,7 @@ class DisplayCodeInterpreterFilesPostProcessor(
|
|
|
543
532
|
)
|
|
544
533
|
changed |= replaced
|
|
545
534
|
|
|
546
|
-
|
|
547
|
-
# is on (enable_html_with_fence_un_17927). Default keeps HtmlRendering.
|
|
548
|
-
elif is_html and not html_fence_ff_on:
|
|
535
|
+
elif is_html:
|
|
549
536
|
loop_response.message.text, replaced = _replace_container_html_citation(
|
|
550
537
|
text=loop_response.message.text or "",
|
|
551
538
|
filename=filename,
|
|
@@ -553,8 +540,6 @@ class DisplayCodeInterpreterFilesPostProcessor(
|
|
|
553
540
|
)
|
|
554
541
|
changed |= replaced
|
|
555
542
|
|
|
556
|
-
# Non-HTML files, or HTML when html_fence_ff_on → inline content link for
|
|
557
|
-
# subsequent fence injection (htmlWithSource / imgWithSource / fileWithSource)
|
|
558
543
|
else:
|
|
559
544
|
loop_response.message.text, replaced = _replace_container_file_citation(
|
|
560
545
|
text=loop_response.message.text or "",
|
|
@@ -576,7 +561,6 @@ class DisplayCodeInterpreterFilesPostProcessor(
|
|
|
576
561
|
else:
|
|
577
562
|
missed_files.append(filename)
|
|
578
563
|
|
|
579
|
-
# HtmlRendering and htmlWithSource both embed contentId directly — no ContentReference needed
|
|
580
564
|
is_html_rendered = is_html
|
|
581
565
|
if replaced and not (is_image or is_html_rendered or fence_ff_on):
|
|
582
566
|
loop_response.message.references.append(
|
|
@@ -598,17 +582,13 @@ class DisplayCodeInterpreterFilesPostProcessor(
|
|
|
598
582
|
)
|
|
599
583
|
|
|
600
584
|
if fence_ff_on:
|
|
601
|
-
code_blocks = _build_code_blocks(
|
|
602
|
-
loop_response, self._content_map, include_html=html_fence_ff_on
|
|
603
|
-
)
|
|
585
|
+
code_blocks = _build_code_blocks(loop_response, self._content_map)
|
|
604
586
|
self._log.info(
|
|
605
587
|
"Fence injection — %d code block(s), files: %s",
|
|
606
588
|
len(code_blocks),
|
|
607
589
|
[f.filename for b in code_blocks for f in b.files],
|
|
608
590
|
)
|
|
609
|
-
_warn_unmatched_code_blocks(
|
|
610
|
-
self._content_map, code_blocks, include_html=html_fence_ff_on
|
|
611
|
-
)
|
|
591
|
+
_warn_unmatched_code_blocks(self._content_map, code_blocks)
|
|
612
592
|
text_before = loop_response.message.text
|
|
613
593
|
loop_response.message.text = _inject_code_execution_fences(
|
|
614
594
|
loop_response.message.text or "",
|
|
@@ -681,13 +661,32 @@ class DisplayCodeInterpreterFilesPostProcessor(
|
|
|
681
661
|
container_file.filename, "uploading", force_publish=True
|
|
682
662
|
)
|
|
683
663
|
|
|
664
|
+
raw_mime = guess_type(container_file.filename)[0] or "text/plain"
|
|
665
|
+
mime = _kb_safe_mime(raw_mime)
|
|
666
|
+
if mime != raw_mime:
|
|
667
|
+
self._log.info(
|
|
668
|
+
"MIME type '%s' is not supported by the Unique KB; "
|
|
669
|
+
"uploading '%s' as '%s' so the file can be stored and downloaded.",
|
|
670
|
+
raw_mime,
|
|
671
|
+
container_file.filename,
|
|
672
|
+
mime,
|
|
673
|
+
)
|
|
674
|
+
self._log.info(
|
|
675
|
+
"Uploading '%s' to knowledge base (mime=%s, %d bytes)",
|
|
676
|
+
container_file.filename,
|
|
677
|
+
mime,
|
|
678
|
+
len(file_bytes),
|
|
679
|
+
)
|
|
680
|
+
|
|
684
681
|
assert self._chat_service is not None # Checked in __init__
|
|
685
682
|
upload_t0 = time.monotonic()
|
|
686
683
|
content = await self._build_retry()(
|
|
687
|
-
|
|
688
|
-
|
|
689
|
-
|
|
690
|
-
|
|
684
|
+
self._chat_service.upload_to_chat_from_bytes_async,
|
|
685
|
+
content=file_bytes,
|
|
686
|
+
content_name=container_file.filename,
|
|
687
|
+
mime_type=mime,
|
|
688
|
+
skip_ingestion=True,
|
|
689
|
+
hide_in_chat=True,
|
|
691
690
|
)
|
|
692
691
|
upload_ms = (time.monotonic() - upload_t0) * 1000
|
|
693
692
|
if upload_ms > 2000:
|
|
@@ -930,6 +929,37 @@ def _get_file_type(filename: str) -> CodeInterpreterFileType:
|
|
|
930
929
|
return "document"
|
|
931
930
|
|
|
932
931
|
|
|
932
|
+
def _kb_safe_mime(mime: str) -> str:
|
|
933
|
+
"""Return a MIME type the Unique KB will accept.
|
|
934
|
+
|
|
935
|
+
Membership is defined by ``FileMimeType`` and ``ImageMimeType`` in
|
|
936
|
+
``unique_toolkit._common.utils.files`` (same catalog as path-based helpers
|
|
937
|
+
like ``FileMimeType.is_valid_mime``, but here we already have a resolved
|
|
938
|
+
MIME string from ``mimetypes.guess_type``, so we use StrEnum value lookup
|
|
939
|
+
instead of re-parsing a path).
|
|
940
|
+
|
|
941
|
+
The KB GraphQL API rejects many code-file MIME types (e.g. ``text/x-python``
|
|
942
|
+
for ``.py`` files). Anything not in those enums is coerced to
|
|
943
|
+
``text/plain`` so the file can be stored and downloaded without changing
|
|
944
|
+
its bytes.
|
|
945
|
+
|
|
946
|
+
Other ``image/*`` subtypes (e.g. ``image/jpg``) still pass through unchanged.
|
|
947
|
+
"""
|
|
948
|
+
try:
|
|
949
|
+
FileMimeType(mime)
|
|
950
|
+
return mime
|
|
951
|
+
except ValueError:
|
|
952
|
+
pass
|
|
953
|
+
try:
|
|
954
|
+
ImageMimeType(mime)
|
|
955
|
+
return mime
|
|
956
|
+
except ValueError:
|
|
957
|
+
pass
|
|
958
|
+
if mime.startswith("image/"):
|
|
959
|
+
return mime
|
|
960
|
+
return "text/plain"
|
|
961
|
+
|
|
962
|
+
|
|
933
963
|
def _file_title(filename: str) -> str:
|
|
934
964
|
"""Derive a human-readable title from a filename.
|
|
935
965
|
|
|
@@ -989,9 +1019,12 @@ def _build_file_fence(file: CodeInterpreterFile, code: str, fence_id: int) -> st
|
|
|
989
1019
|
content_id, a title derived from the filename, the type, and the
|
|
990
1020
|
escaped source code.
|
|
991
1021
|
|
|
1022
|
+
HTML is not emitted here in normal flow: it is rendered via ``HtmlRendering`` blocks
|
|
1023
|
+
in message text and excluded from fence injection. If ``type="html"`` is passed (e.g.
|
|
1024
|
+
orphan path), fall through to ``fileWithSource`` like other non-image artifacts.
|
|
1025
|
+
|
|
992
1026
|
Format (4 backticks so inner code backticks never close the fence):
|
|
993
1027
|
````imgWithSource(id='{n}', contentId='{id}', title="{title}", code="{escaped_code}")````
|
|
994
|
-
````htmlWithSource(id='{n}', contentId='{id}', title="{title}", code="{escaped_code}")````
|
|
995
1028
|
````fileWithSource(id='{n}', contentId='{id}', title="{title}", type="{type}", code="{escaped_code}")````
|
|
996
1029
|
"""
|
|
997
1030
|
title = _file_title(file.filename)
|
|
@@ -999,8 +1032,6 @@ def _build_file_fence(file: CodeInterpreterFile, code: str, fence_id: int) -> st
|
|
|
999
1032
|
outer = "````"
|
|
1000
1033
|
if file.type == "image":
|
|
1001
1034
|
tag = f"imgWithSource(id='{fence_id}', contentId='{file.content_id}', title=\"{title}\", code=\"{escaped}\")"
|
|
1002
|
-
elif file.type == "html":
|
|
1003
|
-
tag = f"htmlWithSource(id='{fence_id}', contentId='{file.content_id}', title=\"{title}\", code=\"{escaped}\")"
|
|
1004
1035
|
else:
|
|
1005
1036
|
ftype = _file_frontend_type(file.filename)
|
|
1006
1037
|
tag = f'fileWithSource(id=\'{fence_id}\', contentId=\'{file.content_id}\', title="{title}", type="{ftype}", code="{escaped}")'
|
|
@@ -1024,7 +1055,7 @@ def _inline_ref_pattern(file: CodeInterpreterFile) -> re.Pattern[str]:
|
|
|
1024
1055
|
|
|
1025
1056
|
|
|
1026
1057
|
_FENCE_BLOCK_START = re.compile(
|
|
1027
|
-
r"^[^\n`]+?(````(?:imgWithSource|fileWithSource
|
|
1058
|
+
r"^[^\n`]+?(````(?:imgWithSource|fileWithSource)\()",
|
|
1028
1059
|
re.MULTILINE,
|
|
1029
1060
|
)
|
|
1030
1061
|
|
|
@@ -1034,9 +1065,9 @@ _FENCE_BLOCK_START = re.compile(
|
|
|
1034
1065
|
# - cross-line: 1 or 2 newlines optionally surrounded by horizontal whitespace
|
|
1035
1066
|
# (list-item linebreak, or blank-line paragraph gap)
|
|
1036
1067
|
_CONSECUTIVE_FENCES_RE = re.compile(
|
|
1037
|
-
r"(````(?:imgWithSource|fileWithSource
|
|
1068
|
+
r"(````(?:imgWithSource|fileWithSource)\([^\n]*\)````)"
|
|
1038
1069
|
r"(?:[^\n`]*|[ \t]*\n{1,2}[ \t]*)"
|
|
1039
|
-
r"(?=````(?:imgWithSource|fileWithSource
|
|
1070
|
+
r"(?=````(?:imgWithSource|fileWithSource)\()"
|
|
1040
1071
|
)
|
|
1041
1072
|
|
|
1042
1073
|
|
|
@@ -1100,7 +1131,6 @@ def _inject_code_execution_fences(
|
|
|
1100
1131
|
def _build_code_blocks(
|
|
1101
1132
|
loop_response: ResponsesLanguageModelStreamResponse,
|
|
1102
1133
|
content_map: dict[str, str | None],
|
|
1103
|
-
include_html: bool = False,
|
|
1104
1134
|
) -> list[CodeInterpreterBlock]:
|
|
1105
1135
|
"""Map each code interpreter call to the files it produced via /mnt/data/ path matching.
|
|
1106
1136
|
|
|
@@ -1198,9 +1228,11 @@ def _build_code_blocks(
|
|
|
1198
1228
|
# overwritten across executions. Using a dict keyed by filename ensures each
|
|
1199
1229
|
# file appears exactly once per block (last annotation wins, consistent with
|
|
1200
1230
|
# the last-writer-wins rule applied in step 1).
|
|
1231
|
+
# HTML files are excluded: they are always rendered via HtmlRendering blocks
|
|
1232
|
+
# and never participate in fence injection.
|
|
1201
1233
|
block_file_map: dict[int, dict[str, CodeInterpreterFile]] = {}
|
|
1202
1234
|
for annotation in loop_response.container_files:
|
|
1203
|
-
if
|
|
1235
|
+
if _get_file_type(annotation.filename) == "html":
|
|
1204
1236
|
continue
|
|
1205
1237
|
content_id = content_map.get(annotation.filename)
|
|
1206
1238
|
if content_id is None:
|
|
@@ -1284,7 +1316,6 @@ def _replace_dangling_sandbox_links(text: str) -> tuple[str, bool]:
|
|
|
1284
1316
|
def _warn_unmatched_code_blocks(
|
|
1285
1317
|
content_map: dict[str, str | None],
|
|
1286
1318
|
code_blocks: list[CodeInterpreterBlock],
|
|
1287
|
-
include_html: bool = False,
|
|
1288
1319
|
) -> None:
|
|
1289
1320
|
"""Warn for files that were uploaded but could not be matched to any code block.
|
|
1290
1321
|
|
|
@@ -1298,7 +1329,7 @@ def _warn_unmatched_code_blocks(
|
|
|
1298
1329
|
for filename, content_id in content_map.items():
|
|
1299
1330
|
if content_id is None:
|
|
1300
1331
|
continue
|
|
1301
|
-
if
|
|
1332
|
+
if _get_file_type(filename) == "html":
|
|
1302
1333
|
continue
|
|
1303
1334
|
if filename not in fenced_filenames:
|
|
1304
1335
|
logger.warning(
|