unique_toolkit 2026.40.0__tar.gz → 2026.40.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.40.0 → unique_toolkit-2026.40.0.dev0}/PKG-INFO +2 -2
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/pyproject.toml +2 -2
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/agentic/evaluation/hallucination/utils.py +2 -3
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/agentic/evaluation/tests/test_hallucination_utils.py +0 -64
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/agentic/feature_flags/feature_flags.py +6 -14
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/agentic/loop_runner/__init__.py +0 -2
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/agentic/loop_runner/runners/__init__.py +0 -6
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/postprocessors/code_display.py +14 -20
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/postprocessors/generated_files.py +37 -24
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/tool/config.py +3 -3
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/agentic_table/service.py +17 -22
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/chat/functions.py +0 -40
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/chat/schemas.py +0 -6
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/language_model/infos.py +0 -209
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/services/chat_service.py +0 -31
- unique_toolkit-2026.40.0/unique_toolkit/agentic/loop_runner/runners/prompt_forced_tool/__init__.py +0 -9
- unique_toolkit-2026.40.0/unique_toolkit/agentic/loop_runner/runners/prompt_forced_tool/helpers.py +0 -32
- unique_toolkit-2026.40.0/unique_toolkit/agentic/loop_runner/runners/prompt_forced_tool/runner.py +0 -53
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/README.md +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/__init__.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/_common/__init__.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/_common/_base_service.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/_common/_time_utils.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/_common/api_calling/human_verification_manager.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/_common/base_model_type_attribute.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/_common/chunk_relevancy_sorter/config.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/_common/chunk_relevancy_sorter/exception.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/_common/chunk_relevancy_sorter/schemas.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/_common/chunk_relevancy_sorter/service.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/_common/chunk_relevancy_sorter/tests/test_service.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/_common/config_checker/README.md +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/_common/config_checker/__init__.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/_common/config_checker/__main__.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/_common/config_checker/cli.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/_common/config_checker/differ.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/_common/config_checker/exporter.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/_common/config_checker/models.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/_common/config_checker/registry.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/_common/config_checker/validator.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/_common/default_language_model.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/_common/docx_generator/__init__.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/_common/docx_generator/config.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/_common/docx_generator/pandoc_converter.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/_common/docx_generator/schemas.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/_common/docx_generator/service.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/_common/docx_generator/template/Doc Template.docx +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/_common/endpoint_builder.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/_common/endpoint_requestor.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/_common/event_bus.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/_common/exception.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/_common/execution.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/_common/experimental/endpoint_builder.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/_common/experimental/endpoint_requestor.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/_common/experimental/write_up_agent/README.md +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/_common/experimental/write_up_agent/__init__.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/_common/experimental/write_up_agent/agent.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/_common/experimental/write_up_agent/config.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/_common/experimental/write_up_agent/examples/data.csv +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/_common/experimental/write_up_agent/examples/example_usage.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/_common/experimental/write_up_agent/schemas.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/_common/experimental/write_up_agent/services/__init__.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/_common/experimental/write_up_agent/services/dataframe_handler/__init__.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/_common/experimental/write_up_agent/services/dataframe_handler/exceptions.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/_common/experimental/write_up_agent/services/dataframe_handler/service.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/_common/experimental/write_up_agent/services/dataframe_handler/utils.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/__init__.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/config.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/exceptions.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/prompts/config.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/prompts/system_prompt.j2 +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/prompts/user_prompt.j2 +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/service.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/_common/experimental/write_up_agent/services/template_handler/__init__.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/_common/experimental/write_up_agent/services/template_handler/default_template.j2 +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/_common/experimental/write_up_agent/services/template_handler/exceptions.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/_common/experimental/write_up_agent/services/template_handler/service.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/_common/experimental/write_up_agent/services/template_handler/utils.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/_common/experimental/write_up_agent/utils.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/_common/feature_flags/schema.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/_common/metadata_filter_scope.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/_common/pydantic/rjsf_tags.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/_common/pydantic_helpers.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/_common/referencing.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/_common/string_utilities.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/_common/tests/test_referencing.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/_common/tests/test_string_utilities.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/_common/token/__init__.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/_common/token/image_token_counting.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/_common/token/token_counting.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/_common/token/tokenizers/deepseek/tokenizer.json +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/_common/token/tokenizers/qwen/tokenizer.json +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/_common/utils/__init__.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/_common/utils/files.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/_common/utils/image/encode.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/_common/utils/jinja/helpers.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/_common/utils/jinja/render.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/_common/utils/jinja/schema.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/_common/utils/jinja/utils.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/_common/utils/structured_output/__init__.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/_common/utils/structured_output/schema.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/_common/utils/write_configuration.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/_common/validate_required_values.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/_common/validators.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/agentic/__init__.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/agentic/debug_info_manager/debug_info_manager.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/agentic/debug_info_manager/test/test_debug_info_manager.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/agentic/evaluation/config.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/agentic/evaluation/context_relevancy/prompts/__init__.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/agentic/evaluation/context_relevancy/prompts/system_prompt.j2 +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/agentic/evaluation/context_relevancy/prompts/user_prompt.j2 +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/agentic/evaluation/context_relevancy/schema.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/agentic/evaluation/context_relevancy/service.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/agentic/evaluation/evaluation_manager.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/agentic/evaluation/exception.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/agentic/evaluation/hallucination/constants.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/agentic/evaluation/hallucination/hallucination_evaluation.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/agentic/evaluation/hallucination/prompts/__init__.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/agentic/evaluation/hallucination/prompts/system_prompt.j2 +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/agentic/evaluation/hallucination/prompts/user_prompt.j2 +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/agentic/evaluation/hallucination/service.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/agentic/evaluation/output_parser.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/agentic/evaluation/schemas.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/agentic/evaluation/tests/fixtures.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/agentic/evaluation/tests/test_config.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/agentic/evaluation/tests/test_context_relevancy_service.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/agentic/evaluation/tests/test_hallucination_constants.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/agentic/evaluation/tests/test_hallucination_external_context.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/agentic/evaluation/tests/test_output_parser.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/agentic/evaluation/tests/test_prompt_loaders.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/agentic/evaluation/utils.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/agentic/feature_flags/__init__.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/agentic/history_manager/history_construction_with_contents.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/agentic/history_manager/history_manager.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/agentic/history_manager/loop_token_reducer.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/agentic/history_manager/settings.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/agentic/history_manager/utils.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/agentic/loop_runner/_iteration_handler_utils.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/agentic/loop_runner/_responses_iteration_handler_utils.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/agentic/loop_runner/_responses_stream_handler_utils.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/agentic/loop_runner/_stream_handler_utils.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/agentic/loop_runner/base.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/agentic/loop_runner/middleware/__init__.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/agentic/loop_runner/middleware/planning/__init__.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/agentic/loop_runner/middleware/planning/planning.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/agentic/loop_runner/middleware/planning/schema.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/agentic/loop_runner/runners/basic.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/agentic/loop_runner/runners/mistral/__init__.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/agentic/loop_runner/runners/mistral/mistral_runner.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/agentic/loop_runner/runners/qwen/__init__.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/agentic/loop_runner/runners/qwen/helpers.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/agentic/loop_runner/runners/qwen/qwen_runner.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/agentic/message_log_manager/__init__.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/agentic/message_log_manager/service.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/agentic/message_log_order.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/agentic/postprocessor/postprocessor_manager.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/agentic/reference_manager/reference_manager.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/agentic/reference_manager/tests/test_external_context.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/agentic/responses_api/__init__.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/agentic/responses_api/postprocessors/code_display.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/agentic/responses_api/postprocessors/generated_files.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/agentic/responses_api/stream_handler.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/agentic/short_term_memory_manager/persistent_short_term_memory_manager.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/agentic/thinking_manager/thinking_manager.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/agentic/tools/__init__.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/agentic/tools/a2a/__init__.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/agentic/tools/a2a/config.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/agentic/tools/a2a/evaluation/__init__.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/agentic/tools/a2a/evaluation/_utils.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/agentic/tools/a2a/evaluation/config.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/agentic/tools/a2a/evaluation/evaluator.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/agentic/tools/a2a/evaluation/summarization_user_message.j2 +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/agentic/tools/a2a/manager.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/agentic/tools/a2a/postprocessing/__init__.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/agentic/tools/a2a/postprocessing/_display_utils.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/agentic/tools/a2a/postprocessing/_ref_utils.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/agentic/tools/a2a/postprocessing/config.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/agentic/tools/a2a/postprocessing/display.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/agentic/tools/a2a/postprocessing/references.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/agentic/tools/a2a/postprocessing/test/test_display.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/agentic/tools/a2a/postprocessing/test/test_display_utils.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/agentic/tools/a2a/postprocessing/test/test_ref_utils.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/agentic/tools/a2a/postprocessing/test/test_references.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/agentic/tools/a2a/prompts.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/agentic/tools/a2a/response_watcher/__init__.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/agentic/tools/a2a/response_watcher/service.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/agentic/tools/a2a/tool/__init__.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/agentic/tools/a2a/tool/_memory.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/agentic/tools/a2a/tool/_schema.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/agentic/tools/a2a/tool/config.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/agentic/tools/a2a/tool/service.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/agentic/tools/a2a/tool/test/test_service_utils.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/agentic/tools/agent_chunks_hanlder.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/agentic/tools/config.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/agentic/tools/experimental/__init__.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/agentic/tools/experimental/ask_user_tool/__init__.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/agentic/tools/experimental/ask_user_tool/config.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/agentic/tools/experimental/ask_user_tool/tool.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/agentic/tools/experimental/open_file_tool/__init__.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/agentic/tools/experimental/open_file_tool/config.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/agentic/tools/experimental/open_file_tool/runtime.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/agentic/tools/experimental/open_file_tool/tool.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/agentic/tools/experimental/retrieve_search_scope_tool/__init__.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/agentic/tools/experimental/retrieve_search_scope_tool/config.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/agentic/tools/experimental/retrieve_search_scope_tool/tool.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/agentic/tools/experimental/todo/__init__.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/agentic/tools/experimental/todo/config.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/agentic/tools/experimental/todo/prompts/__init__.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/agentic/tools/experimental/todo/prompts/execution_reminder.j2 +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/agentic/tools/experimental/todo/prompts/system_prompt.j2 +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/agentic/tools/experimental/todo/prompts/tool_description.j2 +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/agentic/tools/experimental/todo/prompts/verification_nudge.j2 +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/agentic/tools/experimental/todo/schemas.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/agentic/tools/experimental/todo/service.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/agentic/tools/factory.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/agentic/tools/mcp/__init__.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/agentic/tools/mcp/manager.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/agentic/tools/mcp/models.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/agentic/tools/mcp/tool_wrapper.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/agentic/tools/names.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/agentic/tools/openai_builtin/__init__.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/agentic/tools/openai_builtin/base.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/__init__.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/activator/__init__.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/activator/config.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/activator/service.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/builder/__init__.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/builder/_container.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/builder/_files.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/builder/_memory.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/builder/builder.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/config.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/postprocessors/__init__.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/postprocessors/artifacts.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/postprocessors/office_preview.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/schemas.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/tool/__init__.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/tool/service.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/agentic/tools/openai_builtin/manager.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/agentic/tools/run_context.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/agentic/tools/schemas.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/agentic/tools/test/test_mcp_manager.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/agentic/tools/test/test_tool_progress_reporter.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/agentic/tools/tool.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/agentic/tools/tool_manager.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/agentic/tools/tool_progress_reporter.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/agentic/tools/utils/__init__.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/agentic/tools/utils/source_handling/__init__.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/agentic/tools/utils/source_handling/schema.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/agentic/tools/utils/source_handling/source_formatting.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/agentic/tools/utils/source_handling/tests/test_source_formatting.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/agentic_table/__init__.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/agentic_table/schemas.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/agentic_table/synthetic_chat_event.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/app/__init__.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/app/chat_event_filter_options_settings.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/app/dev_util.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/app/fast_api_factory.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/app/feature_flags.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/app/find_env_file.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/app/init_logging.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/app/init_sdk.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/app/performance/async_tasks.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/app/performance/async_wrapper.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/app/schemas.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/app/unique_settings.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/app/verification.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/app/webhook.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/chat/__init__.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/chat/cancellation.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/chat/constants.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/chat/deprecated/__init__.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/chat/deprecated/service.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/chat/rendering.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/chat/responses_api.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/chat/service.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/chat/state.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/chat/utils.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/content/__init__.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/content/constants.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/content/functions.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/content/schemas.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/content/service.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/content/smart_rules.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/content/utils.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/data_extraction/README.md +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/data_extraction/__init__.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/data_extraction/augmented/__init__.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/data_extraction/augmented/service.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/data_extraction/base.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/data_extraction/basic/__init__.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/data_extraction/basic/config.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/data_extraction/basic/prompt.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/data_extraction/basic/service.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/elicitation/__init__.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/elicitation/constants.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/elicitation/exceptions.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/elicitation/functions.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/elicitation/schemas.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/elicitation/service.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/embedding/__init__.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/embedding/constants.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/embedding/functions.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/embedding/schemas.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/embedding/service.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/embedding/utils.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/experimental/README.md +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/experimental/__init__.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/experimental/_internal/__init__.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/experimental/_internal/streaming/__init__.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/experimental/_internal/streaming/common.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/experimental/_internal/streaming/pattern_replacer.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/experimental/components/__init__.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/experimental/components/_base.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/experimental/components/content_tree/__init__.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/experimental/components/content_tree/functions.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/experimental/components/content_tree/schemas.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/experimental/components/content_tree/service.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/experimental/components/internal_search/__init__.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/experimental/components/internal_search/base/__init__.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/experimental/components/internal_search/base/config.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/experimental/components/internal_search/base/schemas.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/experimental/components/internal_search/base/service.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/experimental/components/internal_search/base/utils.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/experimental/components/internal_search/chat/__init__.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/experimental/components/internal_search/chat/config.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/experimental/components/internal_search/chat/schemas.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/experimental/components/internal_search/chat/service.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/experimental/components/internal_search/knowledge_base/__init__.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/experimental/components/internal_search/knowledge_base/config.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/experimental/components/internal_search/knowledge_base/schemas.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/experimental/components/internal_search/knowledge_base/service.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/experimental/components/internal_search/post_processing/__init__.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/experimental/components/internal_search/post_processing/config.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/experimental/components/internal_search/post_processing/service.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/experimental/content_tree/__init__.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/experimental/identity/__init__.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/experimental/integrations/__init__.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/experimental/integrations/openai/__init__.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/experimental/integrations/openai/streaming/__init__.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/__init__.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/_async_bridge.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/_model_params.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/chat_completions/__init__.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/chat_completions/complete_with_references.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/chat_completions/stream_event_router.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/chat_completions/text_event_handler.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/chat_completions/tool_call_event_handler.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/events.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/protocols/__init__.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/protocols/chat_completions.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/protocols/responses.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/responses/__init__.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/responses/code_interpreter_event_handler.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/responses/complete_with_references.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/responses/completed_event_handler.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/responses/stream_event_router.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/responses/text_delta_event_handler.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/responses/tool_call_event_handler.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/subscribers/__init__.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/subscribers/message_persister.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/subscribers/progress_log_persister.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/experimental/resources/__init__.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/experimental/resources/content_folder/__init__.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/experimental/resources/content_folder/functions.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/experimental/resources/content_folder/schemas.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/experimental/resources/content_folder/service.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/experimental/resources/facades/__init__.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/experimental/resources/facades/identity/__init__.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/experimental/resources/facades/identity/service.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/experimental/resources/feature_flags/README.md +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/experimental/resources/feature_flags/__init__.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/experimental/resources/feature_flags/_graphql_client.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/experimental/resources/feature_flags/_ttl_cache.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/experimental/resources/feature_flags/client.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/experimental/resources/feature_flags/schemas.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/experimental/resources/feature_flags/settings.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/experimental/resources/group/__init__.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/experimental/resources/group/functions.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/experimental/resources/group/schemas.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/experimental/resources/group/service.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/experimental/resources/scheduled_task/__init__.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/experimental/resources/scheduled_task/cron.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/experimental/resources/scheduled_task/functions.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/experimental/resources/scheduled_task/schemas.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/experimental/resources/scheduled_task/service.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/experimental/resources/user/__init__.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/experimental/resources/user/functions.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/experimental/resources/user/schemas.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/experimental/resources/user/service.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/experimental/testing/__init__.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/framework_utilities/__init__.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/framework_utilities/langchain/__init__.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/framework_utilities/langchain/client.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/framework_utilities/langchain/history.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/framework_utilities/openai/__init__.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/framework_utilities/openai/client.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/framework_utilities/openai/message_builder.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/framework_utilities/utils.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/language_model/__init__.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/language_model/_responses_api_utils.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/language_model/builder.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/language_model/constants.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/language_model/default_language_model.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/language_model/functions.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/language_model/invocation_stats.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/language_model/model_costs.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/language_model/prompt.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/language_model/reference.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/language_model/schemas.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/language_model/service.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/language_model/settings.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/language_model/stream_transform.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/language_model/utils.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/monitoring/__init__.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/monitoring/gunicorn.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/monitoring/memory.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/monitoring/middleware.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/monitoring/registry.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/monitoring/tracing.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/protocols/support.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/services/__init__.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/services/factory.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/services/knowledge_base.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/short_term_memory/__init__.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/short_term_memory/constants.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/short_term_memory/functions.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/short_term_memory/schemas.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/short_term_memory/service.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/smart_rules/__init__.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/smart_rules/compile.py +0 -0
- {unique_toolkit-2026.40.0 → unique_toolkit-2026.40.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.40.0
|
|
3
|
+
Version: 2026.40.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.40.0
|
|
19
|
+
Requires-Dist: unique-sdk>=2026.40.0.dev0,<2026.40.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.40.0"
|
|
3
|
+
version = "2026.40.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.40.0",
|
|
31
|
+
"unique-sdk>=2026.40.0.dev0,<2026.40.0rc0",
|
|
32
32
|
"jambo>=0.1.2,<0.2",
|
|
33
33
|
"jinja2>=3.1.6,<4",
|
|
34
34
|
"docxtpl>=0.20.1,<0.21",
|
|
@@ -203,8 +203,7 @@ def _compose_msgs(
|
|
|
203
203
|
)
|
|
204
204
|
system_msg = LanguageModelSystemMessage(content=system_msg_content)
|
|
205
205
|
|
|
206
|
-
# Render user message
|
|
207
|
-
# template can omit an empty conversation section.
|
|
206
|
+
# Render user message
|
|
208
207
|
user_msg_content = render_template(
|
|
209
208
|
user_template,
|
|
210
209
|
input_text=input.input_text,
|
|
@@ -212,7 +211,7 @@ def _compose_msgs(
|
|
|
212
211
|
if has_context
|
|
213
212
|
else None,
|
|
214
213
|
history_messages_text=input.get_joined_history_texts(tag_name="conversation")
|
|
215
|
-
if has_context
|
|
214
|
+
if has_context
|
|
216
215
|
else None,
|
|
217
216
|
output_text=input.output_text,
|
|
218
217
|
)
|
|
@@ -1224,67 +1224,3 @@ def test_get_msgs__ignores_context_images__when_model_lacks_vision() -> None:
|
|
|
1224
1224
|
# Assert
|
|
1225
1225
|
assert result.root[0].content == no_context_result.root[0].content
|
|
1226
1226
|
assert isinstance(result.root[1].content, str)
|
|
1227
|
-
|
|
1228
|
-
|
|
1229
|
-
@pytest.mark.unit
|
|
1230
|
-
def test_compose_msgs__omits_conversation_section__when_history_is_empty():
|
|
1231
|
-
"""A single-turn evaluation must not be shown an empty conversation.
|
|
1232
|
-
|
|
1233
|
-
The template guards the section with `{% if history_messages_text %}`,
|
|
1234
|
-
and the getter returns a truthy placeholder when there is no history, so
|
|
1235
|
-
the guard used to never fire: every caller evaluating one turn shipped a
|
|
1236
|
-
`Conversation:` section whose body said there was no conversation, while
|
|
1237
|
-
the system prompt announced one.
|
|
1238
|
-
"""
|
|
1239
|
-
msgs = _compose_msgs(
|
|
1240
|
-
EvaluationMetricInput(
|
|
1241
|
-
input_text="What is the policy rate?",
|
|
1242
|
-
context_texts=["The policy rate is 0.25%."],
|
|
1243
|
-
history_messages=[],
|
|
1244
|
-
output_text="0.25%.",
|
|
1245
|
-
),
|
|
1246
|
-
HallucinationConfig(),
|
|
1247
|
-
has_context=True,
|
|
1248
|
-
)
|
|
1249
|
-
|
|
1250
|
-
user_content = msgs.root[-1].content
|
|
1251
|
-
assert isinstance(user_content, str)
|
|
1252
|
-
assert "Conversation:" not in user_content
|
|
1253
|
-
assert "<No conversation texts provided>" not in user_content
|
|
1254
|
-
# The references the model does have must still be there.
|
|
1255
|
-
assert "The policy rate is 0.25%." in user_content
|
|
1256
|
-
|
|
1257
|
-
|
|
1258
|
-
@pytest.mark.unit
|
|
1259
|
-
def test_compose_msgs__keeps_conversation_section__when_history_is_present():
|
|
1260
|
-
msgs = _compose_msgs(
|
|
1261
|
-
EvaluationMetricInput(
|
|
1262
|
-
input_text="And in March?",
|
|
1263
|
-
context_texts=["The March rate was 0.50%."],
|
|
1264
|
-
history_messages=[
|
|
1265
|
-
ChatMessage(
|
|
1266
|
-
id="msg_1",
|
|
1267
|
-
chat_id="chat_1",
|
|
1268
|
-
previous_message_id=None,
|
|
1269
|
-
role=LanguageModelMessageRole.USER,
|
|
1270
|
-
text="What is the policy rate?",
|
|
1271
|
-
),
|
|
1272
|
-
ChatMessage(
|
|
1273
|
-
id="msg_2",
|
|
1274
|
-
chat_id="chat_1",
|
|
1275
|
-
previous_message_id="msg_1",
|
|
1276
|
-
role=LanguageModelMessageRole.ASSISTANT,
|
|
1277
|
-
text="0.25%.",
|
|
1278
|
-
),
|
|
1279
|
-
],
|
|
1280
|
-
output_text="0.50%.",
|
|
1281
|
-
),
|
|
1282
|
-
HallucinationConfig(),
|
|
1283
|
-
has_context=True,
|
|
1284
|
-
)
|
|
1285
|
-
|
|
1286
|
-
user_content = msgs.root[-1].content
|
|
1287
|
-
assert isinstance(user_content, str)
|
|
1288
|
-
assert "Conversation:" in user_content
|
|
1289
|
-
assert "What is the policy rate?" in user_content
|
|
1290
|
-
assert "<No conversation texts provided>" not in user_content
|
|
@@ -23,6 +23,10 @@ class FeatureFlagNames(StrEnum):
|
|
|
23
23
|
"FEATURE_FLAG_ENABLE_MCP_METADATA_FALLBACK_UN_19145"
|
|
24
24
|
)
|
|
25
25
|
enable_html_rendering_un_15131 = "FEATURE_FLAG_ENABLE_HTML_RENDERING_UN_15131"
|
|
26
|
+
enable_code_execution_fence_un_17972 = (
|
|
27
|
+
"FEATURE_FLAG_ENABLE_CODE_EXECUTION_FENCE_UN_17972"
|
|
28
|
+
)
|
|
29
|
+
enable_html_with_fence_un_17927 = "FEATURE_FLAG_ENABLE_HTML_WITH_FENCE_UN_17927"
|
|
26
30
|
enable_web_search_argument_screening_un_18741 = (
|
|
27
31
|
"FEATURE_FLAG_ENABLE_WEB_SEARCH_ARGUMENT_SCREENING_UN_18741"
|
|
28
32
|
)
|
|
@@ -106,24 +110,12 @@ class FeatureFlags(BaseSettings):
|
|
|
106
110
|
|
|
107
111
|
enable_code_execution_fence_un_17972: FeatureFlag = Field(
|
|
108
112
|
default=FeatureFlag(False),
|
|
109
|
-
description=(
|
|
110
|
-
"Retired: replaced by the `enable_code_execution_fence` config field "
|
|
111
|
-
"on ShowExecutedCodePostprocessorConfig (default true). "
|
|
112
|
-
"No code reads this field anymore. Kept only so removing it doesn't "
|
|
113
|
-
"trip the config-checker's breaking-change gate on this settings "
|
|
114
|
-
"model; delete once that checker allows field removal."
|
|
115
|
-
),
|
|
113
|
+
description="Emit codeExecution fences in message.text for code interpreter outputs (UN-17972). When disabled, inline file refs are kept as-is. Can be 'true' or comma-separated company IDs.",
|
|
116
114
|
)
|
|
117
115
|
|
|
118
116
|
enable_html_with_fence_un_17927: FeatureFlag = Field(
|
|
119
117
|
default=FeatureFlag(False),
|
|
120
|
-
description=(
|
|
121
|
-
"Retired: replaced by the `enable_html_with_fence` config field "
|
|
122
|
-
"on ShowExecutedCodePostprocessorConfig (default true). "
|
|
123
|
-
"No code reads this field anymore. Kept only so removing it doesn't "
|
|
124
|
-
"trip the config-checker's breaking-change gate on this settings "
|
|
125
|
-
"model; delete once that checker allows field removal."
|
|
126
|
-
),
|
|
118
|
+
description="Render HTML code interpreter files as htmlWithSource fences instead of HtmlRendering blocks (UN-17927). Requires enable_code_execution_fence_un_17972 to also be enabled. Can be 'true' or comma-separated company IDs.",
|
|
127
119
|
)
|
|
128
120
|
|
|
129
121
|
enable_web_search_argument_screening_un_18741: FeatureFlag = Field(
|
|
@@ -21,7 +21,6 @@ from unique_toolkit.agentic.loop_runner.runners import (
|
|
|
21
21
|
BasicLoopIterationRunner,
|
|
22
22
|
BasicLoopIterationRunnerConfig,
|
|
23
23
|
MistralLoopIterationRunner,
|
|
24
|
-
PromptForcedToolLoopIterationRunner,
|
|
25
24
|
QwenLoopIterationRunner,
|
|
26
25
|
ResponsesBasicLoopIterationRunner,
|
|
27
26
|
)
|
|
@@ -35,7 +34,6 @@ __all__ = [
|
|
|
35
34
|
"BasicLoopIterationRunnerConfig",
|
|
36
35
|
"BasicLoopIterationRunner",
|
|
37
36
|
"MistralLoopIterationRunner",
|
|
38
|
-
"PromptForcedToolLoopIterationRunner",
|
|
39
37
|
"QwenLoopIterationRunner",
|
|
40
38
|
"handle_forced_tools_iteration",
|
|
41
39
|
"handle_last_iteration",
|
|
@@ -6,10 +6,6 @@ from unique_toolkit.agentic.loop_runner.runners.basic import (
|
|
|
6
6
|
from unique_toolkit.agentic.loop_runner.runners.mistral import (
|
|
7
7
|
MistralLoopIterationRunner,
|
|
8
8
|
)
|
|
9
|
-
from unique_toolkit.agentic.loop_runner.runners.prompt_forced_tool import (
|
|
10
|
-
PROMPT_FORCED_TOOL_CALL_INSTRUCTION,
|
|
11
|
-
PromptForcedToolLoopIterationRunner,
|
|
12
|
-
)
|
|
13
9
|
from unique_toolkit.agentic.loop_runner.runners.qwen import (
|
|
14
10
|
QWEN_FORCED_TOOL_CALL_INSTRUCTION,
|
|
15
11
|
QWEN_LAST_ITERATION_INSTRUCTION,
|
|
@@ -22,8 +18,6 @@ __all__ = [
|
|
|
22
18
|
"BasicLoopIterationRunner",
|
|
23
19
|
"ResponsesBasicLoopIterationRunner",
|
|
24
20
|
"MistralLoopIterationRunner",
|
|
25
|
-
"PROMPT_FORCED_TOOL_CALL_INSTRUCTION",
|
|
26
|
-
"PromptForcedToolLoopIterationRunner",
|
|
27
21
|
"QwenLoopIterationRunner",
|
|
28
22
|
"QWEN_FORCED_TOOL_CALL_INSTRUCTION",
|
|
29
23
|
"QWEN_LAST_ITERATION_INSTRUCTION",
|
|
@@ -6,10 +6,15 @@ from typing import override
|
|
|
6
6
|
from pydantic import BaseModel, Field
|
|
7
7
|
from pydantic.json_schema import SkipJsonSchema
|
|
8
8
|
|
|
9
|
+
from unique_toolkit.agentic.feature_flags import FeatureFlagNames
|
|
9
10
|
from unique_toolkit.agentic.postprocessor.postprocessor_manager import (
|
|
10
11
|
ResponsesApiPostprocessor,
|
|
11
12
|
)
|
|
12
13
|
from unique_toolkit.agentic.tools.config import get_configuration_dict
|
|
14
|
+
from unique_toolkit.experimental.resources.feature_flags import (
|
|
15
|
+
COMPANY_ID_PLACEHOLDER,
|
|
16
|
+
is_flag_enabled,
|
|
17
|
+
)
|
|
13
18
|
from unique_toolkit.language_model.schemas import ResponsesLanguageModelStreamResponse
|
|
14
19
|
|
|
15
20
|
_TEMPLATE = """
|
|
@@ -32,23 +37,7 @@ class ShowExecutedCodePostprocessorConfig(BaseModel):
|
|
|
32
37
|
model_config = get_configuration_dict()
|
|
33
38
|
enable: bool = Field(
|
|
34
39
|
default=True,
|
|
35
|
-
description="
|
|
36
|
-
)
|
|
37
|
-
enable_code_execution_fence: bool = Field(
|
|
38
|
-
default=True,
|
|
39
|
-
description=(
|
|
40
|
-
"Show generated files as interactive cards with a built-in code view "
|
|
41
|
-
"and hide the legacy collapsible code block below."
|
|
42
|
-
),
|
|
43
|
-
)
|
|
44
|
-
enable_html_with_fence: bool = Field(
|
|
45
|
-
default=True,
|
|
46
|
-
description=(
|
|
47
|
-
"Show generated HTML files as interactive cards with a built-in code "
|
|
48
|
-
"view instead of a plain rendered HTML block. Has no effect on its "
|
|
49
|
-
"own: 'enable_code_execution_fence' must be on as well. While that "
|
|
50
|
-
"switch is off, HTML files stay a plain rendered HTML block."
|
|
51
|
-
),
|
|
40
|
+
description="Enable display of executed code before the assistant message",
|
|
52
41
|
)
|
|
53
42
|
remove_from_history: SkipJsonSchema[bool] = (
|
|
54
43
|
Field( # At the moment, it's not possible to keep executed code in the history
|
|
@@ -66,15 +55,20 @@ class ShowExecutedCodePostprocessor(ResponsesApiPostprocessor):
|
|
|
66
55
|
def __init__(
|
|
67
56
|
self,
|
|
68
57
|
config: ShowExecutedCodePostprocessorConfig,
|
|
58
|
+
company_id: str | None = None,
|
|
69
59
|
):
|
|
70
60
|
super().__init__(self.__class__.__name__)
|
|
71
61
|
self._config = config
|
|
72
|
-
|
|
73
|
-
#
|
|
74
|
-
self._is_enabled =
|
|
62
|
+
self._company_id = company_id
|
|
63
|
+
# Resolved in run() (before apply_postprocessing_to_response) since flag evaluation is async.
|
|
64
|
+
self._is_enabled = False
|
|
75
65
|
|
|
76
66
|
@override
|
|
77
67
|
async def run(self, loop_response: ResponsesLanguageModelStreamResponse) -> None:
|
|
68
|
+
self._is_enabled = self._config.enable and not await is_flag_enabled(
|
|
69
|
+
FeatureFlagNames.enable_code_execution_fence_un_17972,
|
|
70
|
+
company_id=self._company_id or COMPANY_ID_PLACEHOLDER,
|
|
71
|
+
)
|
|
78
72
|
if self._is_enabled:
|
|
79
73
|
await asyncio.sleep(self._config.sleep_time_before_display)
|
|
80
74
|
|
|
@@ -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.agentic.feature_flags import FeatureFlagNames
|
|
24
25
|
from unique_toolkit.agentic.postprocessor.postprocessor_manager import (
|
|
25
26
|
ResponsesApiPostprocessor,
|
|
26
27
|
)
|
|
@@ -39,6 +40,10 @@ from unique_toolkit.agentic.tools.openai_builtin.code_interpreter.schemas import
|
|
|
39
40
|
)
|
|
40
41
|
from unique_toolkit.content.schemas import ContentReference
|
|
41
42
|
from unique_toolkit.content.service import ContentService
|
|
43
|
+
from unique_toolkit.experimental.resources.feature_flags import (
|
|
44
|
+
COMPANY_ID_PLACEHOLDER,
|
|
45
|
+
is_flag_enabled,
|
|
46
|
+
)
|
|
42
47
|
from unique_toolkit.language_model.schemas import ResponsesLanguageModelStreamResponse
|
|
43
48
|
from unique_toolkit.services.knowledge_base import KnowledgeBaseService
|
|
44
49
|
from unique_toolkit.short_term_memory.service import ShortTermMemoryService
|
|
@@ -371,8 +376,6 @@ class DisplayCodeInterpreterFilesPostProcessor(
|
|
|
371
376
|
company_id: str | None = None,
|
|
372
377
|
user_id: str | None = None,
|
|
373
378
|
chat_id: str | None = None,
|
|
374
|
-
code_execution_fence_enabled: bool = True,
|
|
375
|
-
html_with_fence_enabled: bool = True,
|
|
376
379
|
) -> None:
|
|
377
380
|
super().__init__(self.__class__.__name__)
|
|
378
381
|
|
|
@@ -380,6 +383,7 @@ class DisplayCodeInterpreterFilesPostProcessor(
|
|
|
380
383
|
self._chat_service = chat_service
|
|
381
384
|
self._client = client
|
|
382
385
|
self._config = config
|
|
386
|
+
self._company_id = company_id
|
|
383
387
|
|
|
384
388
|
if self._chat_service is None:
|
|
385
389
|
raise ValueError("ChatService is required if uploadToChat is True")
|
|
@@ -400,11 +404,9 @@ class DisplayCodeInterpreterFilesPostProcessor(
|
|
|
400
404
|
self._file_size_map: dict[str, int] = {}
|
|
401
405
|
self._container_files: list[CodeInterpreterContainerFile] = []
|
|
402
406
|
|
|
403
|
-
#
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
self._fence_enabled = code_execution_fence_enabled
|
|
407
|
-
self._html_fence_enabled = html_with_fence_enabled
|
|
407
|
+
# Resolved in run() (before apply_postprocessing_to_response) since flag evaluation is async.
|
|
408
|
+
self._fence_ff_on = False
|
|
409
|
+
self._html_fence_ff_on = False
|
|
408
410
|
|
|
409
411
|
def _build_retry(self) -> AsyncRetrying:
|
|
410
412
|
"""Build a tenacity retry policy from the current config.
|
|
@@ -509,6 +511,17 @@ class DisplayCodeInterpreterFilesPostProcessor(
|
|
|
509
511
|
run_t0 = time.monotonic()
|
|
510
512
|
self._log.info("run() started — fetching and uploading code interpreter files")
|
|
511
513
|
|
|
514
|
+
self._fence_ff_on = await is_flag_enabled(
|
|
515
|
+
FeatureFlagNames.enable_code_execution_fence_un_17972,
|
|
516
|
+
company_id=self._company_id or COMPANY_ID_PLACEHOLDER,
|
|
517
|
+
)
|
|
518
|
+
# htmlWithSource requires BOTH the fence FF and the HTML-fence FF on; default
|
|
519
|
+
# (FF off) keeps HtmlRendering, so existing deployments are unaffected.
|
|
520
|
+
self._html_fence_ff_on = await is_flag_enabled(
|
|
521
|
+
FeatureFlagNames.enable_html_with_fence_un_17927,
|
|
522
|
+
company_id=self._company_id or COMPANY_ID_PLACEHOLDER,
|
|
523
|
+
)
|
|
524
|
+
|
|
512
525
|
container_files = await self._resolve_container_files(loop_response)
|
|
513
526
|
self._container_files = container_files
|
|
514
527
|
self._log.info(
|
|
@@ -655,9 +668,9 @@ class DisplayCodeInterpreterFilesPostProcessor(
|
|
|
655
668
|
) -> bool:
|
|
656
669
|
apply_t0 = time.monotonic()
|
|
657
670
|
self._log.info(
|
|
658
|
-
"apply_postprocessing started — %d file(s) in content_map,
|
|
671
|
+
"apply_postprocessing started — %d file(s) in content_map, fence_ff=%s",
|
|
659
672
|
len(self._content_map),
|
|
660
|
-
self.
|
|
673
|
+
self._fence_ff_on,
|
|
661
674
|
)
|
|
662
675
|
|
|
663
676
|
if loop_response.message.references is None:
|
|
@@ -698,9 +711,9 @@ class DisplayCodeInterpreterFilesPostProcessor(
|
|
|
698
711
|
)
|
|
699
712
|
changed |= replaced
|
|
700
713
|
|
|
701
|
-
# HTML
|
|
702
|
-
#
|
|
703
|
-
elif is_html and not
|
|
714
|
+
# HTML rendered as HtmlRendering block unless the dedicated html-fence FF
|
|
715
|
+
# is on (enable_html_with_fence_un_17927). Default keeps HtmlRendering.
|
|
716
|
+
elif is_html and not self._html_fence_ff_on:
|
|
704
717
|
loop_response.message.text, replaced = _replace_container_html_citation(
|
|
705
718
|
text=loop_response.message.text or "",
|
|
706
719
|
filename=filename,
|
|
@@ -708,15 +721,15 @@ class DisplayCodeInterpreterFilesPostProcessor(
|
|
|
708
721
|
)
|
|
709
722
|
changed |= replaced
|
|
710
723
|
|
|
711
|
-
# Non-HTML files, or HTML when
|
|
712
|
-
#
|
|
724
|
+
# Non-HTML files, or HTML when self._html_fence_ff_on → inline content link for
|
|
725
|
+
# subsequent fence injection (htmlWithSource / imgWithSource / fileWithSource)
|
|
713
726
|
else:
|
|
714
727
|
loop_response.message.text, replaced = _replace_container_file_citation(
|
|
715
728
|
text=loop_response.message.text or "",
|
|
716
729
|
filename=filename,
|
|
717
730
|
content_id=content_id,
|
|
718
731
|
ref_number=ref_number,
|
|
719
|
-
use_content_link=self.
|
|
732
|
+
use_content_link=self._fence_ff_on,
|
|
720
733
|
)
|
|
721
734
|
changed |= replaced
|
|
722
735
|
|
|
@@ -733,7 +746,7 @@ class DisplayCodeInterpreterFilesPostProcessor(
|
|
|
733
746
|
|
|
734
747
|
# HtmlRendering and htmlWithSource both embed contentId directly — no ContentReference needed
|
|
735
748
|
is_html_rendered = is_html
|
|
736
|
-
if replaced and not (is_image or is_html_rendered or self.
|
|
749
|
+
if replaced and not (is_image or is_html_rendered or self._fence_ff_on):
|
|
737
750
|
loop_response.message.references.append(
|
|
738
751
|
ContentReference(
|
|
739
752
|
sequence_number=ref_number,
|
|
@@ -752,12 +765,12 @@ class DisplayCodeInterpreterFilesPostProcessor(
|
|
|
752
765
|
error_files,
|
|
753
766
|
)
|
|
754
767
|
|
|
755
|
-
if self.
|
|
768
|
+
if self._fence_ff_on:
|
|
756
769
|
code_blocks = _build_code_blocks(
|
|
757
770
|
loop_response,
|
|
758
771
|
self._content_map,
|
|
759
772
|
self._container_files,
|
|
760
|
-
include_html=self.
|
|
773
|
+
include_html=self._html_fence_ff_on,
|
|
761
774
|
)
|
|
762
775
|
self._log.info(
|
|
763
776
|
"Fence injection — %d code block(s), files: %s",
|
|
@@ -765,7 +778,7 @@ class DisplayCodeInterpreterFilesPostProcessor(
|
|
|
765
778
|
[f.filename for b in code_blocks for f in b.files],
|
|
766
779
|
)
|
|
767
780
|
_warn_unmatched_code_blocks(
|
|
768
|
-
self._content_map, code_blocks, include_html=self.
|
|
781
|
+
self._content_map, code_blocks, include_html=self._html_fence_ff_on
|
|
769
782
|
)
|
|
770
783
|
text_before = loop_response.message.text
|
|
771
784
|
loop_response.message.text = _inject_code_execution_fences(
|
|
@@ -1490,7 +1503,7 @@ def _warn_unmatched_code_blocks(
|
|
|
1490
1503
|
) -> None:
|
|
1491
1504
|
"""Warn for files that were uploaded but could not be matched to any code block.
|
|
1492
1505
|
|
|
1493
|
-
When fence
|
|
1506
|
+
When the fence feature flag is on, every uploaded file should map to a code block
|
|
1494
1507
|
via its /mnt/data/<filename> path so it can receive a fence. If a file is not
|
|
1495
1508
|
matched (e.g. the LLM used a variable for the output path rather than a literal
|
|
1496
1509
|
string) it falls back to a plain unique://content/ link with no code context.
|
|
@@ -1621,10 +1634,10 @@ def _replace_container_file_citation(
|
|
|
1621
1634
|
) -> tuple[str, bool]:
|
|
1622
1635
|
"""Replace a sandbox file link with either an inline content link or a superscript ref.
|
|
1623
1636
|
|
|
1624
|
-
When fence
|
|
1625
|
-
|
|
1626
|
-
|
|
1627
|
-
|
|
1637
|
+
When the fence feature flag is on (use_content_link=True), the sandbox link is
|
|
1638
|
+
replaced with [filename](unique://content/{id}) so the subsequent fence injection
|
|
1639
|
+
step can locate and wrap it. When the flag is off (use_content_link=False), the
|
|
1640
|
+
original pre-fence behaviour is restored: the link is replaced with <sup>N</sup>
|
|
1628
1641
|
and the file remains accessible via the references panel.
|
|
1629
1642
|
"""
|
|
1630
1643
|
file_markdown = _sandbox_link_pattern(filename)
|
|
@@ -96,9 +96,9 @@ DEFAULT_TOOL_DESCRIPTION_FOR_SYSTEM_PROMPT = (
|
|
|
96
96
|
_TOOL_DESCRIPTION_FOR_SYSTEM_PROMPT_BASE + _TOOL_DESCRIPTION_FILES_SUFFIX
|
|
97
97
|
).strip()
|
|
98
98
|
|
|
99
|
-
#
|
|
100
|
-
#
|
|
101
|
-
# before the sandbox link.
|
|
99
|
+
# Used when the code-execution fence feature flag (UN-17972) is enabled.
|
|
100
|
+
# The frontend derives the artifact title from the filename itself, so the
|
|
101
|
+
# LLM no longer needs to produce a markdown heading before the sandbox link.
|
|
102
102
|
#
|
|
103
103
|
# UN-19711 / Horizon follow-up: The HTML rules in the fence prompt reduce iframe height
|
|
104
104
|
# collapse when chat auto-measures the embedded document. Remaining gaps belong in the
|
{unique_toolkit-2026.40.0 → unique_toolkit-2026.40.0.dev0}/unique_toolkit/agentic_table/service.py
RENAMED
|
@@ -653,8 +653,6 @@ class AgenticTableService:
|
|
|
653
653
|
row_orders: list[int],
|
|
654
654
|
status: RowVerificationStatus,
|
|
655
655
|
locked: bool | None = None,
|
|
656
|
-
*,
|
|
657
|
-
emit_library_sheet_verified_event: bool | None = None,
|
|
658
656
|
):
|
|
659
657
|
"""Update the verification status of multiple rows at once.
|
|
660
658
|
|
|
@@ -662,27 +660,24 @@ class AgenticTableService:
|
|
|
662
660
|
row_orders: The row indexes to update.
|
|
663
661
|
status: The verification status to set (``NEEDS_REVIEW``, etc.; matches public API).
|
|
664
662
|
locked: When set, forwarded as ``locked`` on ``POST .../rows/bulk-update-status``.
|
|
665
|
-
emit_library_sheet_verified_event: When set, forwarded as
|
|
666
|
-
``emitLibrarySheetVerifiedEvent``. ``False`` marks the rows without
|
|
667
|
-
starting a ``LIBRARY_SHEET_ROW_VERIFIED`` run on library sheets; use it
|
|
668
|
-
when the caller has already ingested the rows. ``None`` omits the field
|
|
669
|
-
and keeps the server default (``True``). Servers that predate the field
|
|
670
|
-
reject it with a 400, so only set it against a backend that supports it.
|
|
671
663
|
"""
|
|
672
|
-
|
|
673
|
-
|
|
674
|
-
|
|
675
|
-
|
|
676
|
-
|
|
677
|
-
|
|
678
|
-
|
|
679
|
-
|
|
680
|
-
|
|
681
|
-
|
|
682
|
-
|
|
683
|
-
|
|
684
|
-
|
|
685
|
-
|
|
664
|
+
if locked is None:
|
|
665
|
+
await AgenticTable.bulk_update_status(
|
|
666
|
+
user_id=self._user_id,
|
|
667
|
+
company_id=self._company_id,
|
|
668
|
+
tableId=self.table_id,
|
|
669
|
+
rowOrders=row_orders,
|
|
670
|
+
status=status,
|
|
671
|
+
)
|
|
672
|
+
else:
|
|
673
|
+
await AgenticTable.bulk_update_status(
|
|
674
|
+
user_id=self._user_id,
|
|
675
|
+
company_id=self._company_id,
|
|
676
|
+
tableId=self.table_id,
|
|
677
|
+
rowOrders=row_orders,
|
|
678
|
+
status=status,
|
|
679
|
+
locked=locked,
|
|
680
|
+
)
|
|
686
681
|
|
|
687
682
|
async def import_questions_and_sources(
|
|
688
683
|
self,
|
|
@@ -188,46 +188,6 @@ async def modify_message_async(
|
|
|
188
188
|
raise e
|
|
189
189
|
|
|
190
190
|
|
|
191
|
-
async def mark_turn_system_interrupted_async(
|
|
192
|
-
user_id: str,
|
|
193
|
-
company_id: str,
|
|
194
|
-
chat_id: str,
|
|
195
|
-
user_message_id: str,
|
|
196
|
-
) -> ChatMessage:
|
|
197
|
-
"""Marks the turn anchored on *user_message_id* as system-interrupted.
|
|
198
|
-
|
|
199
|
-
Persists ``turnInterruptionReason = SYSTEM_INTERRUPTED`` on the originating
|
|
200
|
-
USER message via a dedicated service-authenticated node-chat endpoint. The
|
|
201
|
-
server guarantees idempotency and never overwrites ``userAbortedAt`` (a
|
|
202
|
-
user-initiated stop wins if both race).
|
|
203
|
-
|
|
204
|
-
Args:
|
|
205
|
-
user_id (str): The user ID.
|
|
206
|
-
company_id (str): The company ID.
|
|
207
|
-
chat_id (str): The chat ID.
|
|
208
|
-
user_message_id (str): The originating USER message of the turn.
|
|
209
|
-
|
|
210
|
-
Returns:
|
|
211
|
-
ChatMessage: The USER message after the update (unchanged if the call
|
|
212
|
-
was a no-op due to idempotency or a racing user stop).
|
|
213
|
-
|
|
214
|
-
Raises:
|
|
215
|
-
Exception: If the request fails.
|
|
216
|
-
|
|
217
|
-
"""
|
|
218
|
-
try:
|
|
219
|
-
message = await unique_sdk.Message.mark_turn_system_interrupted_async(
|
|
220
|
-
user_id=user_id,
|
|
221
|
-
company_id=company_id,
|
|
222
|
-
id=user_message_id,
|
|
223
|
-
chatId=chat_id,
|
|
224
|
-
)
|
|
225
|
-
return ChatMessage(**message)
|
|
226
|
-
except Exception as e:
|
|
227
|
-
_LOGGER.error(f"Failed to mark turn as system-interrupted: {e}")
|
|
228
|
-
raise e
|
|
229
|
-
|
|
230
|
-
|
|
231
191
|
def map_references(references: list[ContentReference]) -> list[dict[str, Any]]:
|
|
232
192
|
return [
|
|
233
193
|
{
|
|
@@ -192,12 +192,6 @@ class MessageLogStatus(StrEnum):
|
|
|
192
192
|
RUNNING = "RUNNING"
|
|
193
193
|
COMPLETED = "COMPLETED"
|
|
194
194
|
FAILED = "FAILED"
|
|
195
|
-
CANCELLED = "CANCELLED"
|
|
196
|
-
"""The user pressed Stop while this thinking/tool step was in flight.
|
|
197
|
-
|
|
198
|
-
Use ``FAILED`` for system-side interruption (timeout, truncation, terminal
|
|
199
|
-
backend failure), not for user-initiated cancellation.
|
|
200
|
-
"""
|
|
201
195
|
|
|
202
196
|
|
|
203
197
|
class MessageExecutionStatus(StrEnum):
|