unique-toolkit 2026.38.0.dev0__tar.gz → 2026.38.0.dev2__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.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/PKG-INFO +1 -1
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/pyproject.toml +1 -1
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/postprocessors/artifacts.py +7 -5
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/postprocessors/generated_files.py +127 -21
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/schemas.py +10 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/language_model/model_costs.py +9 -2
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/README.md +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/__init__.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/_common/__init__.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/_common/_base_service.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/_common/_time_utils.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/_common/api_calling/human_verification_manager.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/_common/base_model_type_attribute.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/_common/chunk_relevancy_sorter/config.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/_common/chunk_relevancy_sorter/exception.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/_common/chunk_relevancy_sorter/schemas.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/_common/chunk_relevancy_sorter/service.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/_common/chunk_relevancy_sorter/tests/test_service.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/_common/config_checker/README.md +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/_common/config_checker/__init__.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/_common/config_checker/__main__.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/_common/config_checker/cli.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/_common/config_checker/differ.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/_common/config_checker/exporter.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/_common/config_checker/models.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/_common/config_checker/registry.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/_common/config_checker/validator.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/_common/default_language_model.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/_common/docx_generator/__init__.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/_common/docx_generator/config.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/_common/docx_generator/pandoc_converter.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/_common/docx_generator/schemas.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/_common/docx_generator/service.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/_common/docx_generator/template/Doc Template.docx +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/_common/endpoint_builder.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/_common/endpoint_requestor.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/_common/event_bus.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/_common/exception.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/_common/execution.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/_common/experimental/endpoint_builder.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/_common/experimental/endpoint_requestor.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/_common/experimental/write_up_agent/README.md +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/_common/experimental/write_up_agent/__init__.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/_common/experimental/write_up_agent/agent.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/_common/experimental/write_up_agent/config.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/_common/experimental/write_up_agent/examples/data.csv +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/_common/experimental/write_up_agent/examples/example_usage.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/_common/experimental/write_up_agent/schemas.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/_common/experimental/write_up_agent/services/__init__.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/_common/experimental/write_up_agent/services/dataframe_handler/__init__.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/_common/experimental/write_up_agent/services/dataframe_handler/exceptions.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/_common/experimental/write_up_agent/services/dataframe_handler/service.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/_common/experimental/write_up_agent/services/dataframe_handler/utils.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/__init__.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/config.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/exceptions.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/prompts/config.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/prompts/system_prompt.j2 +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/prompts/user_prompt.j2 +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/service.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/_common/experimental/write_up_agent/services/template_handler/__init__.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/_common/experimental/write_up_agent/services/template_handler/default_template.j2 +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/_common/experimental/write_up_agent/services/template_handler/exceptions.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/_common/experimental/write_up_agent/services/template_handler/service.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/_common/experimental/write_up_agent/services/template_handler/utils.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/_common/experimental/write_up_agent/utils.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/_common/feature_flags/schema.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/_common/metadata_filter_scope.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/_common/pydantic/rjsf_tags.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/_common/pydantic_helpers.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/_common/referencing.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/_common/string_utilities.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/_common/tests/test_referencing.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/_common/tests/test_string_utilities.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/_common/token/__init__.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/_common/token/image_token_counting.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/_common/token/token_counting.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/_common/token/tokenizers/deepseek/tokenizer.json +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/_common/token/tokenizers/qwen/tokenizer.json +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/_common/utils/__init__.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/_common/utils/files.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/_common/utils/image/encode.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/_common/utils/jinja/helpers.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/_common/utils/jinja/render.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/_common/utils/jinja/schema.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/_common/utils/jinja/utils.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/_common/utils/structured_output/__init__.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/_common/utils/structured_output/schema.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/_common/utils/write_configuration.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/_common/validate_required_values.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/_common/validators.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/__init__.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/debug_info_manager/debug_info_manager.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/debug_info_manager/test/test_debug_info_manager.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/evaluation/config.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/evaluation/context_relevancy/prompts/__init__.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/evaluation/context_relevancy/prompts/system_prompt.j2 +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/evaluation/context_relevancy/prompts/user_prompt.j2 +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/evaluation/context_relevancy/schema.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/evaluation/context_relevancy/service.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/evaluation/evaluation_manager.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/evaluation/exception.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/evaluation/hallucination/constants.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/evaluation/hallucination/hallucination_evaluation.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/evaluation/hallucination/prompts/__init__.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/evaluation/hallucination/prompts/system_prompt.j2 +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/evaluation/hallucination/prompts/user_prompt.j2 +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/evaluation/hallucination/service.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/evaluation/hallucination/utils.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/evaluation/output_parser.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/evaluation/schemas.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/evaluation/tests/fixtures.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/evaluation/tests/test_config.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/evaluation/tests/test_context_relevancy_service.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/evaluation/tests/test_hallucination_constants.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/evaluation/tests/test_hallucination_external_context.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/evaluation/tests/test_hallucination_utils.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/evaluation/tests/test_output_parser.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/evaluation/tests/test_prompt_loaders.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/evaluation/utils.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/feature_flags/__init__.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/feature_flags/feature_flags.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/history_manager/history_construction_with_contents.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/history_manager/history_manager.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/history_manager/loop_token_reducer.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/history_manager/settings.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/history_manager/utils.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/loop_runner/__init__.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/loop_runner/_iteration_handler_utils.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/loop_runner/_responses_iteration_handler_utils.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/loop_runner/_responses_stream_handler_utils.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/loop_runner/_stream_handler_utils.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/loop_runner/base.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/loop_runner/middleware/__init__.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/loop_runner/middleware/planning/__init__.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/loop_runner/middleware/planning/planning.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/loop_runner/middleware/planning/schema.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/loop_runner/runners/__init__.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/loop_runner/runners/basic.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/loop_runner/runners/mistral/__init__.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/loop_runner/runners/mistral/mistral_runner.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/loop_runner/runners/qwen/__init__.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/loop_runner/runners/qwen/helpers.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/loop_runner/runners/qwen/qwen_runner.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/message_log_manager/__init__.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/message_log_manager/service.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/message_log_order.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/postprocessor/postprocessor_manager.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/reference_manager/reference_manager.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/reference_manager/tests/test_external_context.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/responses_api/__init__.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/responses_api/postprocessors/code_display.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/responses_api/postprocessors/generated_files.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/responses_api/stream_handler.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/short_term_memory_manager/persistent_short_term_memory_manager.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/thinking_manager/thinking_manager.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/tools/__init__.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/tools/a2a/__init__.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/tools/a2a/config.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/tools/a2a/evaluation/__init__.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/tools/a2a/evaluation/_utils.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/tools/a2a/evaluation/config.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/tools/a2a/evaluation/evaluator.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/tools/a2a/evaluation/summarization_user_message.j2 +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/tools/a2a/manager.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/tools/a2a/postprocessing/__init__.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/tools/a2a/postprocessing/_display_utils.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/tools/a2a/postprocessing/_ref_utils.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/tools/a2a/postprocessing/config.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/tools/a2a/postprocessing/display.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/tools/a2a/postprocessing/references.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/tools/a2a/postprocessing/test/test_display.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/tools/a2a/postprocessing/test/test_display_utils.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/tools/a2a/postprocessing/test/test_ref_utils.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/tools/a2a/postprocessing/test/test_references.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/tools/a2a/prompts.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/tools/a2a/response_watcher/__init__.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/tools/a2a/response_watcher/service.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/tools/a2a/tool/__init__.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/tools/a2a/tool/_memory.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/tools/a2a/tool/_schema.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/tools/a2a/tool/config.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/tools/a2a/tool/service.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/tools/a2a/tool/test/test_service_utils.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/tools/agent_chunks_hanlder.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/tools/config.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/tools/experimental/__init__.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/tools/experimental/ask_user_tool/__init__.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/tools/experimental/ask_user_tool/config.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/tools/experimental/ask_user_tool/tool.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/tools/experimental/open_file_tool/__init__.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/tools/experimental/open_file_tool/config.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/tools/experimental/open_file_tool/runtime.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/tools/experimental/open_file_tool/tool.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/tools/experimental/retrieve_search_scope_tool/__init__.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/tools/experimental/retrieve_search_scope_tool/config.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/tools/experimental/retrieve_search_scope_tool/tool.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/tools/experimental/todo/__init__.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/tools/experimental/todo/config.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/tools/experimental/todo/prompts/__init__.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/tools/experimental/todo/prompts/execution_reminder.j2 +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/tools/experimental/todo/prompts/system_prompt.j2 +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/tools/experimental/todo/prompts/tool_description.j2 +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/tools/experimental/todo/prompts/verification_nudge.j2 +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/tools/experimental/todo/schemas.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/tools/experimental/todo/service.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/tools/factory.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/tools/mcp/__init__.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/tools/mcp/manager.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/tools/mcp/models.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/tools/mcp/tool_wrapper.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/tools/names.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/tools/openai_builtin/__init__.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/tools/openai_builtin/base.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/__init__.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/activator/__init__.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/activator/config.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/activator/service.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/builder/__init__.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/builder/_container.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/builder/_files.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/builder/_memory.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/builder/builder.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/config.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/postprocessors/__init__.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/postprocessors/code_display.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/postprocessors/office_preview.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/tool/__init__.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/tool/config.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/tool/service.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/tools/openai_builtin/manager.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/tools/run_context.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/tools/schemas.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/tools/test/test_mcp_manager.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/tools/test/test_tool_progress_reporter.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/tools/tool.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/tools/tool_manager.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/tools/tool_progress_reporter.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/tools/utils/__init__.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/tools/utils/source_handling/__init__.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/tools/utils/source_handling/schema.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/tools/utils/source_handling/source_formatting.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic/tools/utils/source_handling/tests/test_source_formatting.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic_table/__init__.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic_table/schemas.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic_table/service.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/agentic_table/synthetic_chat_event.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/app/__init__.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/app/chat_event_filter_options_settings.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/app/dev_util.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/app/fast_api_factory.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/app/feature_flags.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/app/find_env_file.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/app/init_logging.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/app/init_sdk.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/app/performance/async_tasks.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/app/performance/async_wrapper.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/app/schemas.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/app/unique_settings.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/app/verification.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/app/webhook.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/chat/__init__.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/chat/cancellation.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/chat/constants.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/chat/deprecated/__init__.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/chat/deprecated/service.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/chat/functions.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/chat/rendering.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/chat/responses_api.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/chat/schemas.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/chat/service.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/chat/state.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/chat/utils.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/content/__init__.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/content/constants.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/content/functions.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/content/schemas.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/content/service.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/content/smart_rules.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/content/utils.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/data_extraction/README.md +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/data_extraction/__init__.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/data_extraction/augmented/__init__.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/data_extraction/augmented/service.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/data_extraction/base.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/data_extraction/basic/__init__.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/data_extraction/basic/config.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/data_extraction/basic/prompt.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/data_extraction/basic/service.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/elicitation/__init__.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/elicitation/constants.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/elicitation/exceptions.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/elicitation/functions.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/elicitation/schemas.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/elicitation/service.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/embedding/__init__.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/embedding/constants.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/embedding/functions.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/embedding/schemas.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/embedding/service.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/embedding/utils.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/experimental/README.md +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/experimental/__init__.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/experimental/_internal/__init__.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/experimental/_internal/streaming/__init__.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/experimental/_internal/streaming/common.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/experimental/_internal/streaming/pattern_replacer.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/experimental/components/__init__.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/experimental/components/_base.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/experimental/components/content_tree/__init__.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/experimental/components/content_tree/functions.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/experimental/components/content_tree/schemas.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/experimental/components/content_tree/service.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/experimental/components/internal_search/__init__.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/experimental/components/internal_search/base/__init__.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/experimental/components/internal_search/base/config.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/experimental/components/internal_search/base/schemas.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/experimental/components/internal_search/base/service.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/experimental/components/internal_search/base/utils.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/experimental/components/internal_search/chat/__init__.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/experimental/components/internal_search/chat/config.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/experimental/components/internal_search/chat/schemas.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/experimental/components/internal_search/chat/service.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/experimental/components/internal_search/knowledge_base/__init__.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/experimental/components/internal_search/knowledge_base/config.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/experimental/components/internal_search/knowledge_base/schemas.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/experimental/components/internal_search/knowledge_base/service.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/experimental/components/internal_search/post_processing/__init__.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/experimental/components/internal_search/post_processing/config.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/experimental/components/internal_search/post_processing/service.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/experimental/content_tree/__init__.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/experimental/identity/__init__.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/experimental/integrations/__init__.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/experimental/integrations/openai/__init__.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/experimental/integrations/openai/streaming/__init__.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/__init__.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/_async_bridge.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/_model_params.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/chat_completions/__init__.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/chat_completions/complete_with_references.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/chat_completions/stream_event_router.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/chat_completions/text_event_handler.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/chat_completions/tool_call_event_handler.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/events.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/protocols/__init__.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/protocols/chat_completions.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/protocols/responses.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/responses/__init__.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/responses/code_interpreter_event_handler.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/responses/complete_with_references.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/responses/completed_event_handler.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/responses/stream_event_router.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/responses/text_delta_event_handler.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/responses/tool_call_event_handler.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/subscribers/__init__.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/subscribers/message_persister.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/subscribers/progress_log_persister.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/experimental/resources/__init__.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/experimental/resources/content_folder/__init__.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/experimental/resources/content_folder/functions.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/experimental/resources/content_folder/schemas.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/experimental/resources/content_folder/service.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/experimental/resources/facades/__init__.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/experimental/resources/facades/identity/__init__.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/experimental/resources/facades/identity/service.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/experimental/resources/feature_flags/README.md +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/experimental/resources/feature_flags/__init__.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/experimental/resources/feature_flags/_graphql_client.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/experimental/resources/feature_flags/_ttl_cache.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/experimental/resources/feature_flags/client.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/experimental/resources/feature_flags/schemas.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/experimental/resources/feature_flags/settings.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/experimental/resources/group/__init__.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/experimental/resources/group/functions.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/experimental/resources/group/schemas.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/experimental/resources/group/service.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/experimental/resources/scheduled_task/__init__.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/experimental/resources/scheduled_task/cron.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/experimental/resources/scheduled_task/functions.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/experimental/resources/scheduled_task/schemas.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/experimental/resources/scheduled_task/service.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/experimental/resources/user/__init__.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/experimental/resources/user/functions.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/experimental/resources/user/schemas.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/experimental/resources/user/service.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/experimental/testing/__init__.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/framework_utilities/__init__.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/framework_utilities/langchain/__init__.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/framework_utilities/langchain/client.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/framework_utilities/langchain/history.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/framework_utilities/openai/__init__.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/framework_utilities/openai/client.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/framework_utilities/openai/message_builder.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/framework_utilities/utils.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/language_model/__init__.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/language_model/_responses_api_utils.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/language_model/builder.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/language_model/constants.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/language_model/default_language_model.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/language_model/functions.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/language_model/infos.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/language_model/invocation_stats.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/language_model/prompt.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/language_model/reference.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/language_model/schemas.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/language_model/service.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/language_model/settings.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/language_model/stream_transform.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/language_model/utils.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/monitoring/__init__.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/monitoring/gunicorn.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/monitoring/middleware.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/monitoring/registry.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/monitoring/tracing.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/protocols/support.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/services/__init__.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/services/chat_service.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/services/factory.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/services/knowledge_base.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/short_term_memory/__init__.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/short_term_memory/constants.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/short_term_memory/functions.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/short_term_memory/schemas.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/short_term_memory/service.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/smart_rules/__init__.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/smart_rules/compile.py +0 -0
- {unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/test_utilities/events.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.3
|
|
2
2
|
Name: unique-toolkit
|
|
3
|
-
Version: 2026.38.0.
|
|
3
|
+
Version: 2026.38.0.dev2
|
|
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>
|
|
@@ -6,7 +6,6 @@ from pathlib import Path
|
|
|
6
6
|
from typing import Any
|
|
7
7
|
|
|
8
8
|
import unique_sdk.utils.file_io as file_io
|
|
9
|
-
from openai.types.responses.response_output_text import AnnotationContainerFileCitation
|
|
10
9
|
from pydantic import BaseModel
|
|
11
10
|
|
|
12
11
|
from unique_toolkit import ChatService
|
|
@@ -16,6 +15,9 @@ from unique_toolkit.agentic.tools.openai_builtin.code_interpreter.postprocessors
|
|
|
16
15
|
convert_office_bytes_to_preview_pdf,
|
|
17
16
|
office_extension,
|
|
18
17
|
)
|
|
18
|
+
from unique_toolkit.agentic.tools.openai_builtin.code_interpreter.schemas import (
|
|
19
|
+
CodeInterpreterContainerFile,
|
|
20
|
+
)
|
|
19
21
|
from unique_toolkit.content.schemas import Content
|
|
20
22
|
|
|
21
23
|
_CODE_EXECUTION_ARTIFACT_METADATA_KEY: str = "codeExecutionArtifactMetadata"
|
|
@@ -61,7 +63,7 @@ def _kb_safe_mime(mime: str) -> str:
|
|
|
61
63
|
|
|
62
64
|
|
|
63
65
|
def _artifact_metadata(
|
|
64
|
-
file:
|
|
66
|
+
file: CodeInterpreterContainerFile,
|
|
65
67
|
) -> dict[str, Any]:
|
|
66
68
|
return {
|
|
67
69
|
_CODE_EXECUTION_ARTIFACT_METADATA_KEY: CodeExecutionArtifactMetadata(
|
|
@@ -74,7 +76,7 @@ def _artifact_metadata(
|
|
|
74
76
|
|
|
75
77
|
async def _upload_artifact_bytes(
|
|
76
78
|
chat_service: ChatService,
|
|
77
|
-
file:
|
|
79
|
+
file: CodeInterpreterContainerFile,
|
|
78
80
|
file_bytes: bytes,
|
|
79
81
|
mime: str,
|
|
80
82
|
) -> Content:
|
|
@@ -97,7 +99,7 @@ async def _upload_artifact_bytes(
|
|
|
97
99
|
|
|
98
100
|
async def _upload_office_artifact_with_preview(
|
|
99
101
|
chat_service: ChatService,
|
|
100
|
-
file:
|
|
102
|
+
file: CodeInterpreterContainerFile,
|
|
101
103
|
file_bytes: bytes,
|
|
102
104
|
mime: str,
|
|
103
105
|
) -> Content | None:
|
|
@@ -146,7 +148,7 @@ async def _upload_office_artifact_with_preview(
|
|
|
146
148
|
|
|
147
149
|
async def save_code_execution_artifact(
|
|
148
150
|
chat_service: ChatService,
|
|
149
|
-
file:
|
|
151
|
+
file: CodeInterpreterContainerFile,
|
|
150
152
|
file_bytes: bytes,
|
|
151
153
|
*,
|
|
152
154
|
attach_office_preview: bool = False,
|
|
@@ -6,10 +6,10 @@ import time
|
|
|
6
6
|
from dataclasses import dataclass
|
|
7
7
|
from mimetypes import guess_type
|
|
8
8
|
from typing import NamedTuple, TypedDict, override
|
|
9
|
+
from urllib.parse import quote, unquote
|
|
9
10
|
|
|
10
11
|
import httpx
|
|
11
12
|
from openai import AsyncOpenAI
|
|
12
|
-
from openai.types.responses.response_output_text import AnnotationContainerFileCitation
|
|
13
13
|
from pydantic import BaseModel, Field, RootModel
|
|
14
14
|
from pydantic.json_schema import SkipJsonSchema
|
|
15
15
|
from tenacity import (
|
|
@@ -34,6 +34,7 @@ from unique_toolkit.agentic.tools.openai_builtin.code_interpreter.postprocessors
|
|
|
34
34
|
)
|
|
35
35
|
from unique_toolkit.agentic.tools.openai_builtin.code_interpreter.schemas import (
|
|
36
36
|
CodeInterpreterBlock,
|
|
37
|
+
CodeInterpreterContainerFile,
|
|
37
38
|
CodeInterpreterFile,
|
|
38
39
|
CodeInterpreterFileType,
|
|
39
40
|
)
|
|
@@ -311,7 +312,7 @@ class _FileProgressTracker:
|
|
|
311
312
|
if state.phase == "pending":
|
|
312
313
|
continue
|
|
313
314
|
progress = self._format_inline(filename, state)
|
|
314
|
-
pattern =
|
|
315
|
+
pattern = _sandbox_link_pattern(filename)
|
|
315
316
|
text = re.sub(pattern, progress, text)
|
|
316
317
|
|
|
317
318
|
active = {
|
|
@@ -401,6 +402,7 @@ class DisplayCodeInterpreterFilesPostProcessor(
|
|
|
401
402
|
|
|
402
403
|
# Cleared at the start of each run(); holds this-turn download sizes.
|
|
403
404
|
self._file_size_map: dict[str, int] = {}
|
|
405
|
+
self._container_files: list[CodeInterpreterContainerFile] = []
|
|
404
406
|
|
|
405
407
|
# Resolved in run() (before apply_postprocessing_to_response) since flag evaluation is async.
|
|
406
408
|
self._fence_ff_on = False
|
|
@@ -419,6 +421,89 @@ class DisplayCodeInterpreterFilesPostProcessor(
|
|
|
419
421
|
reraise=True,
|
|
420
422
|
)
|
|
421
423
|
|
|
424
|
+
async def _resolve_container_files(
|
|
425
|
+
self, loop_response: ResponsesLanguageModelStreamResponse
|
|
426
|
+
) -> list[CodeInterpreterContainerFile]:
|
|
427
|
+
"""
|
|
428
|
+
Matches files cited by the agent to their id.
|
|
429
|
+
First tries to match files using the `citations` in the llm response.
|
|
430
|
+
If that fails, uses `container.files.list` in order to find the correct file
|
|
431
|
+
"""
|
|
432
|
+
container_files = [
|
|
433
|
+
CodeInterpreterContainerFile(
|
|
434
|
+
container_id=annotation.container_id,
|
|
435
|
+
file_id=annotation.file_id,
|
|
436
|
+
filename=annotation.filename,
|
|
437
|
+
)
|
|
438
|
+
for annotation in loop_response.container_files
|
|
439
|
+
]
|
|
440
|
+
|
|
441
|
+
text = loop_response.message.text or ""
|
|
442
|
+
cited_files = set(_extract_container_file_citations_from_text(text))
|
|
443
|
+
|
|
444
|
+
unresolved_files = cited_files - {file.filename for file in container_files}
|
|
445
|
+
|
|
446
|
+
if len(unresolved_files) == 0:
|
|
447
|
+
return container_files
|
|
448
|
+
|
|
449
|
+
code_interpreter_calls = loop_response.code_interpreter_calls
|
|
450
|
+
|
|
451
|
+
if len(code_interpreter_calls) == 0:
|
|
452
|
+
return container_files
|
|
453
|
+
|
|
454
|
+
container_id = code_interpreter_calls[0].container_id
|
|
455
|
+
|
|
456
|
+
self._log.info(
|
|
457
|
+
"Recovering %d unresolved sandbox link(s) from container %s: %s",
|
|
458
|
+
len(unresolved_files),
|
|
459
|
+
container_id,
|
|
460
|
+
list(unresolved_files),
|
|
461
|
+
)
|
|
462
|
+
|
|
463
|
+
try:
|
|
464
|
+
async for container_file in self._client.containers.files.list(
|
|
465
|
+
container_id=container_id,
|
|
466
|
+
order="desc",
|
|
467
|
+
):
|
|
468
|
+
if container_file.source != "assistant":
|
|
469
|
+
continue
|
|
470
|
+
|
|
471
|
+
path = container_file.path
|
|
472
|
+
filename = (
|
|
473
|
+
path.removeprefix("/mnt/data/")
|
|
474
|
+
if path.startswith("/mnt/data/")
|
|
475
|
+
else path
|
|
476
|
+
)
|
|
477
|
+
|
|
478
|
+
if filename in unresolved_files:
|
|
479
|
+
unresolved_files.remove(filename)
|
|
480
|
+
container_files.append(
|
|
481
|
+
CodeInterpreterContainerFile(
|
|
482
|
+
container_id=container_file.container_id,
|
|
483
|
+
file_id=container_file.id,
|
|
484
|
+
filename=filename,
|
|
485
|
+
)
|
|
486
|
+
)
|
|
487
|
+
|
|
488
|
+
if len(unresolved_files) == 0:
|
|
489
|
+
break
|
|
490
|
+
|
|
491
|
+
except Exception:
|
|
492
|
+
self._log.exception(
|
|
493
|
+
"Failed to list files for container %s while recovering "
|
|
494
|
+
"missing citations; dangling-link handling will continue.",
|
|
495
|
+
container_id,
|
|
496
|
+
)
|
|
497
|
+
|
|
498
|
+
if len(unresolved_files) > 0:
|
|
499
|
+
self._log.info(
|
|
500
|
+
"%d sandbox link(s) left unresolved after recovery: %s",
|
|
501
|
+
len(unresolved_files),
|
|
502
|
+
list(unresolved_files),
|
|
503
|
+
)
|
|
504
|
+
|
|
505
|
+
return container_files
|
|
506
|
+
|
|
422
507
|
@override
|
|
423
508
|
async def run(
|
|
424
509
|
self, loop_response: ResponsesLanguageModelStreamResponse
|
|
@@ -437,9 +522,10 @@ class DisplayCodeInterpreterFilesPostProcessor(
|
|
|
437
522
|
company_id=self._company_id or COMPANY_ID_PLACEHOLDER,
|
|
438
523
|
)
|
|
439
524
|
|
|
440
|
-
container_files = loop_response
|
|
525
|
+
container_files = await self._resolve_container_files(loop_response)
|
|
526
|
+
self._container_files = container_files
|
|
441
527
|
self._log.info(
|
|
442
|
-
"run()
|
|
528
|
+
"run() resolved %d container file(s): %s",
|
|
443
529
|
len(container_files),
|
|
444
530
|
[cf.filename for cf in container_files],
|
|
445
531
|
)
|
|
@@ -535,10 +621,12 @@ class DisplayCodeInterpreterFilesPostProcessor(
|
|
|
535
621
|
save_ms,
|
|
536
622
|
)
|
|
537
623
|
|
|
538
|
-
return self._compute_artifacts_debug_info(loop_response)
|
|
624
|
+
return self._compute_artifacts_debug_info(loop_response, container_files)
|
|
539
625
|
|
|
540
626
|
def _compute_artifacts_debug_info(
|
|
541
|
-
self,
|
|
627
|
+
self,
|
|
628
|
+
loop_response: ResponsesLanguageModelStreamResponse,
|
|
629
|
+
container_files: list[CodeInterpreterContainerFile],
|
|
542
630
|
) -> ArtifactsDebugInfo | None:
|
|
543
631
|
"""Compute this turn's successfully-created artifacts.
|
|
544
632
|
|
|
@@ -562,7 +650,7 @@ class DisplayCodeInterpreterFilesPostProcessor(
|
|
|
562
650
|
|
|
563
651
|
created_filenames = {
|
|
564
652
|
cf.filename
|
|
565
|
-
for cf in
|
|
653
|
+
for cf in container_files
|
|
566
654
|
if self._content_map.get(cf.filename) is not None
|
|
567
655
|
}
|
|
568
656
|
total_bytes = sum(
|
|
@@ -679,7 +767,10 @@ class DisplayCodeInterpreterFilesPostProcessor(
|
|
|
679
767
|
|
|
680
768
|
if self._fence_ff_on:
|
|
681
769
|
code_blocks = _build_code_blocks(
|
|
682
|
-
loop_response,
|
|
770
|
+
loop_response,
|
|
771
|
+
self._content_map,
|
|
772
|
+
self._container_files,
|
|
773
|
+
include_html=self._html_fence_ff_on,
|
|
683
774
|
)
|
|
684
775
|
self._log.info(
|
|
685
776
|
"Fence injection — %d code block(s), files: %s",
|
|
@@ -733,7 +824,7 @@ class DisplayCodeInterpreterFilesPostProcessor(
|
|
|
733
824
|
@failsafe_async(failure_return_value=None, logger=logger)
|
|
734
825
|
async def _download_and_upload_container_files_to_knowledge_base(
|
|
735
826
|
self,
|
|
736
|
-
container_file:
|
|
827
|
+
container_file: CodeInterpreterContainerFile,
|
|
737
828
|
semaphore: asyncio.Semaphore,
|
|
738
829
|
tracker: _FileProgressTracker | None = None,
|
|
739
830
|
) -> _ContentInfo | None:
|
|
@@ -804,7 +895,7 @@ class DisplayCodeInterpreterFilesPostProcessor(
|
|
|
804
895
|
|
|
805
896
|
async def _download_file_bytes_with_progress(
|
|
806
897
|
self,
|
|
807
|
-
container_file:
|
|
898
|
+
container_file: CodeInterpreterContainerFile,
|
|
808
899
|
tracker: _FileProgressTracker | None,
|
|
809
900
|
) -> bytes:
|
|
810
901
|
"""Download container file with streaming progress and manual retry loop.
|
|
@@ -887,7 +978,7 @@ class DisplayCodeInterpreterFilesPostProcessor(
|
|
|
887
978
|
|
|
888
979
|
async def _stream_download_bytes(
|
|
889
980
|
self,
|
|
890
|
-
container_file:
|
|
981
|
+
container_file: CodeInterpreterContainerFile,
|
|
891
982
|
tracker: _FileProgressTracker | None,
|
|
892
983
|
retry_attempt: int,
|
|
893
984
|
download_start: float,
|
|
@@ -1195,6 +1286,7 @@ def _inject_code_execution_fences(
|
|
|
1195
1286
|
def _build_code_blocks(
|
|
1196
1287
|
loop_response: ResponsesLanguageModelStreamResponse,
|
|
1197
1288
|
content_map: dict[str, str | None],
|
|
1289
|
+
container_files: list[CodeInterpreterContainerFile],
|
|
1198
1290
|
include_html: bool = False,
|
|
1199
1291
|
) -> list[CodeInterpreterBlock]:
|
|
1200
1292
|
"""Map each code interpreter call to the files it produced via /mnt/data/ path matching.
|
|
@@ -1225,7 +1317,7 @@ def _build_code_blocks(
|
|
|
1225
1317
|
for idx, call in enumerate(calls):
|
|
1226
1318
|
if not call.code:
|
|
1227
1319
|
continue
|
|
1228
|
-
for annotation in
|
|
1320
|
+
for annotation in container_files:
|
|
1229
1321
|
if (
|
|
1230
1322
|
content_map.get(annotation.filename) is not None
|
|
1231
1323
|
and f"/mnt/data/{annotation.filename}" in call.code
|
|
@@ -1254,7 +1346,7 @@ def _build_code_blocks(
|
|
|
1254
1346
|
for idx, call in enumerate(calls):
|
|
1255
1347
|
if not call.code:
|
|
1256
1348
|
continue
|
|
1257
|
-
for annotation in
|
|
1349
|
+
for annotation in container_files:
|
|
1258
1350
|
if annotation.filename in primary_matched_filenames:
|
|
1259
1351
|
continue
|
|
1260
1352
|
if content_map.get(annotation.filename) is None:
|
|
@@ -1281,7 +1373,7 @@ def _build_code_blocks(
|
|
|
1281
1373
|
if call.code:
|
|
1282
1374
|
last_block_idx = idx
|
|
1283
1375
|
if last_block_idx is not None:
|
|
1284
|
-
for annotation in
|
|
1376
|
+
for annotation in container_files:
|
|
1285
1377
|
if annotation.filename in file_to_block_idx:
|
|
1286
1378
|
continue
|
|
1287
1379
|
if content_map.get(annotation.filename) is None:
|
|
@@ -1294,7 +1386,7 @@ def _build_code_blocks(
|
|
|
1294
1386
|
# file appears exactly once per block (last annotation wins, consistent with
|
|
1295
1387
|
# the last-writer-wins rule applied in step 1).
|
|
1296
1388
|
block_file_map: dict[int, dict[str, CodeInterpreterFile]] = {}
|
|
1297
|
-
for annotation in
|
|
1389
|
+
for annotation in container_files:
|
|
1298
1390
|
if not include_html and _get_file_type(annotation.filename) == "html":
|
|
1299
1391
|
continue
|
|
1300
1392
|
content_id = content_map.get(annotation.filename)
|
|
@@ -1345,10 +1437,24 @@ def _warn_missing_content_ids(text: str, content_map: dict[str, str | None]) ->
|
|
|
1345
1437
|
# so the entire `[label](sandbox://...)` token can be replaced rather than just the URL.
|
|
1346
1438
|
_SANDBOX_MARKDOWN_LINK_RE = re.compile(r"!?\[.*?\]\(sandbox:/mnt/data/\S+?\)")
|
|
1347
1439
|
|
|
1440
|
+
|
|
1441
|
+
def _sandbox_link_pattern(filename: str) -> str:
|
|
1442
|
+
"""Return a pattern matching the markdown sandbox link for `filename`."""
|
|
1443
|
+
spellings = "|".join(
|
|
1444
|
+
dict.fromkeys([re.escape(filename), re.escape(quote(filename))])
|
|
1445
|
+
)
|
|
1446
|
+
return rf"!?\[.*?\]\(sandbox:/mnt/data/(?:{spellings})\)"
|
|
1447
|
+
|
|
1448
|
+
|
|
1348
1449
|
# Extracts the bare filename from a sandbox URL like `sandbox:/mnt/data/foo.csv`.
|
|
1349
1450
|
_SANDBOX_FILENAME_RE = re.compile(r"sandbox:/mnt/data/([^)\s]+)")
|
|
1350
1451
|
|
|
1351
1452
|
|
|
1453
|
+
def _extract_container_file_citations_from_text(text: str) -> list[str]:
|
|
1454
|
+
"""Extract container filenames from sandbox citations in their text order."""
|
|
1455
|
+
return [unquote(filename) for filename in _SANDBOX_FILENAME_RE.findall(text)]
|
|
1456
|
+
|
|
1457
|
+
|
|
1352
1458
|
def _replace_dangling_sandbox_links(
|
|
1353
1459
|
text: str, *, ci_ran: bool = True
|
|
1354
1460
|
) -> tuple[str, bool]:
|
|
@@ -1371,8 +1477,8 @@ def _replace_dangling_sandbox_links(
|
|
|
1371
1477
|
return text, False
|
|
1372
1478
|
|
|
1373
1479
|
def _replacement(m: re.Match[str]) -> str:
|
|
1374
|
-
|
|
1375
|
-
filename =
|
|
1480
|
+
filenames = _extract_container_file_citations_from_text(m.group())
|
|
1481
|
+
filename = filenames[0] if filenames else "the file"
|
|
1376
1482
|
logger.warning(
|
|
1377
1483
|
"Dangling sandbox link found in final text: '%s'. ci_ran=%s. "
|
|
1378
1484
|
"The file was either never generated or the link format did not match "
|
|
@@ -1433,7 +1539,7 @@ def _get_next_ref_number(references: list[ContentReference] | None) -> int:
|
|
|
1433
1539
|
def _replace_container_file_error(
|
|
1434
1540
|
text: str, filename: str, error_message: str
|
|
1435
1541
|
) -> tuple[str, bool]:
|
|
1436
|
-
image_markdown =
|
|
1542
|
+
image_markdown = _sandbox_link_pattern(filename)
|
|
1437
1543
|
|
|
1438
1544
|
if not re.search(image_markdown, text):
|
|
1439
1545
|
logger.warning(
|
|
@@ -1454,7 +1560,7 @@ def _replace_container_file_error(
|
|
|
1454
1560
|
def _replace_container_image_citation(
|
|
1455
1561
|
text: str, filename: str, content_id: str
|
|
1456
1562
|
) -> tuple[str, bool]:
|
|
1457
|
-
image_markdown =
|
|
1563
|
+
image_markdown = _sandbox_link_pattern(filename)
|
|
1458
1564
|
|
|
1459
1565
|
if not re.search(image_markdown, text):
|
|
1460
1566
|
logger.warning(
|
|
@@ -1476,7 +1582,7 @@ def _replace_container_image_citation(
|
|
|
1476
1582
|
def _replace_container_html_citation(
|
|
1477
1583
|
text: str, filename: str, content_id: str
|
|
1478
1584
|
) -> tuple[str, bool]:
|
|
1479
|
-
link_core =
|
|
1585
|
+
link_core = _sandbox_link_pattern(filename)
|
|
1480
1586
|
html_markdown = link_core
|
|
1481
1587
|
|
|
1482
1588
|
if not re.search(html_markdown, text):
|
|
@@ -1534,7 +1640,7 @@ def _replace_container_file_citation(
|
|
|
1534
1640
|
original pre-fence behaviour is restored: the link is replaced with <sup>N</sup>
|
|
1535
1641
|
and the file remains accessible via the references panel.
|
|
1536
1642
|
"""
|
|
1537
|
-
file_markdown =
|
|
1643
|
+
file_markdown = _sandbox_link_pattern(filename)
|
|
1538
1644
|
|
|
1539
1645
|
if not re.search(file_markdown, text):
|
|
1540
1646
|
logger.warning(
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"""Code interpreter types used by the generated-files postprocessor."""
|
|
2
2
|
|
|
3
|
+
from dataclasses import dataclass
|
|
3
4
|
from typing import Literal
|
|
4
5
|
|
|
5
6
|
from pydantic import BaseModel
|
|
@@ -7,6 +8,15 @@ from pydantic import BaseModel
|
|
|
7
8
|
CodeInterpreterFileType = Literal["image", "document", "html"]
|
|
8
9
|
|
|
9
10
|
|
|
11
|
+
@dataclass(frozen=True)
|
|
12
|
+
class CodeInterpreterContainerFile:
|
|
13
|
+
"""Provider-independent identity of a file in a code interpreter container."""
|
|
14
|
+
|
|
15
|
+
container_id: str
|
|
16
|
+
file_id: str
|
|
17
|
+
filename: str
|
|
18
|
+
|
|
19
|
+
|
|
10
20
|
class CodeInterpreterFile(BaseModel):
|
|
11
21
|
"""A single file produced by a code interpreter execution."""
|
|
12
22
|
|
|
@@ -25,17 +25,24 @@ _CACHE_MAX_AGE_SECONDS = 5 * 60
|
|
|
25
25
|
class ModelCost(BaseModel):
|
|
26
26
|
"""Per-million-token prices for one language model."""
|
|
27
27
|
|
|
28
|
-
|
|
28
|
+
# Unknown fields are ignored, not rejected: the Helm-rendered schema evolves
|
|
29
|
+
# independently of this one. Required fields below still validate strictly.
|
|
30
|
+
model_config = ConfigDict(extra="ignore", populate_by_name=True)
|
|
29
31
|
|
|
30
32
|
input: float
|
|
31
33
|
completion: float
|
|
32
34
|
currency: str = Field(default="USD", min_length=1)
|
|
35
|
+
# Optional cache pricing rendered by the same Helm chart as node-chat's
|
|
36
|
+
# cost-sheet.schema.json. Absent for rows without verified cache pricing yet.
|
|
37
|
+
cached_input: float | None = Field(default=None, alias="cachedInput")
|
|
38
|
+
cache_write: float | None = Field(default=None, alias="cacheWrite")
|
|
39
|
+
cache_write_1h: float | None = Field(default=None, alias="cacheWrite1h")
|
|
33
40
|
|
|
34
41
|
|
|
35
42
|
class ModelCostCatalog(BaseModel):
|
|
36
43
|
"""Versioned model-price catalog rendered by the platform Helm charts."""
|
|
37
44
|
|
|
38
|
-
model_config = ConfigDict(extra="
|
|
45
|
+
model_config = ConfigDict(extra="ignore", populate_by_name=True)
|
|
39
46
|
|
|
40
47
|
cost_schema_version: int = Field(alias="costSchemaVersion")
|
|
41
48
|
models: dict[str, ModelCost] = Field(min_length=1)
|
|
File without changes
|
|
File without changes
|
{unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/_common/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/_common/event_bus.py
RENAMED
|
File without changes
|
{unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/_common/exception.py
RENAMED
|
File without changes
|
{unique_toolkit-2026.38.0.dev0 → unique_toolkit-2026.38.0.dev2}/unique_toolkit/_common/execution.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|