unique_toolkit 1.63.2__tar.gz → 1.64.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/PKG-INFO +1 -1
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/pyproject.toml +1 -1
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/agentic/feature_flags/feature_flags.py +5 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/agentic/history_manager/history_manager.py +6 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/agentic/history_manager/loop_token_reducer.py +27 -12
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/agentic/tools/openai_builtin/base.py +10 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/postprocessors/code_display.py +16 -18
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/postprocessors/generated_files.py +143 -7
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/service.py +9 -1
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/agentic/tools/openai_builtin/manager.py +12 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/agentic/tools/tool_manager.py +6 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/README.md +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/__init__.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/_common/__init__.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/_common/_base_service.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/_common/_time_utils.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/_common/api_calling/human_verification_manager.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/_common/base_model_type_attribute.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/_common/chunk_relevancy_sorter/config.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/_common/chunk_relevancy_sorter/exception.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/_common/chunk_relevancy_sorter/schemas.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/_common/chunk_relevancy_sorter/service.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/_common/chunk_relevancy_sorter/tests/test_service.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/_common/config_checker/README.md +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/_common/config_checker/__init__.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/_common/config_checker/__main__.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/_common/config_checker/cli.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/_common/config_checker/differ.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/_common/config_checker/exporter.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/_common/config_checker/models.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/_common/config_checker/registry.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/_common/config_checker/validator.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/_common/default_language_model.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/_common/docx_generator/__init__.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/_common/docx_generator/config.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/_common/docx_generator/pandoc_converter.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/_common/docx_generator/schemas.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/_common/docx_generator/service.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/_common/docx_generator/template/Doc Template.docx +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/_common/endpoint_builder.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/_common/endpoint_requestor.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/_common/event_bus.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/_common/exception.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/_common/execution.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/_common/experimental/endpoint_builder.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/_common/experimental/endpoint_requestor.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/_common/experimental/write_up_agent/README.md +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/_common/experimental/write_up_agent/__init__.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/_common/experimental/write_up_agent/agent.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/_common/experimental/write_up_agent/config.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/_common/experimental/write_up_agent/examples/data.csv +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/_common/experimental/write_up_agent/examples/example_usage.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/_common/experimental/write_up_agent/schemas.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/_common/experimental/write_up_agent/services/__init__.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/_common/experimental/write_up_agent/services/dataframe_handler/__init__.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/_common/experimental/write_up_agent/services/dataframe_handler/exceptions.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/_common/experimental/write_up_agent/services/dataframe_handler/service.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/_common/experimental/write_up_agent/services/dataframe_handler/utils.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/__init__.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/config.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/exceptions.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/prompts/config.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/prompts/system_prompt.j2 +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/prompts/user_prompt.j2 +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/service.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/_common/experimental/write_up_agent/services/template_handler/__init__.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/_common/experimental/write_up_agent/services/template_handler/default_template.j2 +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/_common/experimental/write_up_agent/services/template_handler/exceptions.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/_common/experimental/write_up_agent/services/template_handler/service.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/_common/experimental/write_up_agent/services/template_handler/utils.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/_common/experimental/write_up_agent/utils.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/_common/feature_flags/schema.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/_common/pydantic/rjsf_tags.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/_common/pydantic_helpers.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/_common/referencing.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/_common/string_utilities.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/_common/tests/test_referencing.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/_common/tests/test_string_utilities.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/_common/token/__init__.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/_common/token/image_token_counting.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/_common/token/token_counting.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/_common/token/tokenizers/deepseek/tokenizer.json +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/_common/token/tokenizers/qwen/tokenizer.json +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/_common/utils/__init__.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/_common/utils/files.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/_common/utils/image/encode.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/_common/utils/jinja/helpers.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/_common/utils/jinja/render.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/_common/utils/jinja/schema.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/_common/utils/jinja/utils.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/_common/utils/structured_output/__init__.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/_common/utils/structured_output/schema.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/_common/utils/write_configuration.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/_common/validate_required_values.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/_common/validators.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/agentic/__init__.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/agentic/debug_info_manager/debug_info_manager.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/agentic/debug_info_manager/test/test_debug_info_manager.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/agentic/evaluation/config.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/agentic/evaluation/context_relevancy/prompts/__init__.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/agentic/evaluation/context_relevancy/prompts/system_prompt.j2 +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/agentic/evaluation/context_relevancy/prompts/user_prompt.j2 +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/agentic/evaluation/context_relevancy/schema.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/agentic/evaluation/context_relevancy/service.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/agentic/evaluation/evaluation_manager.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/agentic/evaluation/exception.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/agentic/evaluation/hallucination/constants.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/agentic/evaluation/hallucination/hallucination_evaluation.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/agentic/evaluation/hallucination/prompts/__init__.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/agentic/evaluation/hallucination/prompts/system_prompt.j2 +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/agentic/evaluation/hallucination/prompts/user_prompt.j2 +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/agentic/evaluation/hallucination/service.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/agentic/evaluation/hallucination/utils.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/agentic/evaluation/output_parser.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/agentic/evaluation/schemas.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/agentic/evaluation/tests/fixtures.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/agentic/evaluation/tests/test_config.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/agentic/evaluation/tests/test_context_relevancy_service.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/agentic/evaluation/tests/test_hallucination_constants.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/agentic/evaluation/tests/test_hallucination_utils.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/agentic/evaluation/tests/test_output_parser.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/agentic/evaluation/tests/test_prompt_loaders.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/agentic/evaluation/utils.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/agentic/feature_flags/__init__.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/agentic/history_manager/history_construction_with_contents.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/agentic/history_manager/utils.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/agentic/loop_runner/__init__.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/agentic/loop_runner/_iteration_handler_utils.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/agentic/loop_runner/_responses_iteration_handler_utils.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/agentic/loop_runner/_responses_stream_handler_utils.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/agentic/loop_runner/_stream_handler_utils.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/agentic/loop_runner/base.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/agentic/loop_runner/middleware/__init__.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/agentic/loop_runner/middleware/planning/__init__.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/agentic/loop_runner/middleware/planning/planning.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/agentic/loop_runner/middleware/planning/schema.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/agentic/loop_runner/runners/__init__.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/agentic/loop_runner/runners/basic.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/agentic/loop_runner/runners/mistral/__init__.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/agentic/loop_runner/runners/mistral/mistral_runner.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/agentic/loop_runner/runners/qwen/__init__.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/agentic/loop_runner/runners/qwen/helpers.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/agentic/loop_runner/runners/qwen/qwen_runner.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/agentic/message_log_manager/__init__.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/agentic/message_log_manager/service.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/agentic/postprocessor/postprocessor_manager.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/agentic/reference_manager/reference_manager.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/agentic/responses_api/__init__.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/agentic/responses_api/postprocessors/code_display.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/agentic/responses_api/postprocessors/generated_files.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/agentic/responses_api/stream_handler.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/agentic/short_term_memory_manager/persistent_short_term_memory_manager.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/agentic/thinking_manager/thinking_manager.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/agentic/tools/__init__.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/agentic/tools/a2a/__init__.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/agentic/tools/a2a/config.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/agentic/tools/a2a/evaluation/__init__.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/agentic/tools/a2a/evaluation/_utils.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/agentic/tools/a2a/evaluation/config.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/agentic/tools/a2a/evaluation/evaluator.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/agentic/tools/a2a/evaluation/summarization_user_message.j2 +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/agentic/tools/a2a/manager.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/agentic/tools/a2a/postprocessing/__init__.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/agentic/tools/a2a/postprocessing/_display_utils.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/agentic/tools/a2a/postprocessing/_ref_utils.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/agentic/tools/a2a/postprocessing/config.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/agentic/tools/a2a/postprocessing/display.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/agentic/tools/a2a/postprocessing/references.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/agentic/tools/a2a/postprocessing/test/test_display.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/agentic/tools/a2a/postprocessing/test/test_display_utils.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/agentic/tools/a2a/postprocessing/test/test_ref_utils.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/agentic/tools/a2a/prompts.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/agentic/tools/a2a/response_watcher/__init__.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/agentic/tools/a2a/response_watcher/service.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/agentic/tools/a2a/tool/__init__.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/agentic/tools/a2a/tool/_memory.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/agentic/tools/a2a/tool/_schema.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/agentic/tools/a2a/tool/config.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/agentic/tools/a2a/tool/service.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/agentic/tools/a2a/tool/test/test_service_utils.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/agentic/tools/agent_chunks_hanlder.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/agentic/tools/config.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/agentic/tools/factory.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/agentic/tools/mcp/__init__.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/agentic/tools/mcp/manager.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/agentic/tools/mcp/models.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/agentic/tools/mcp/tool_wrapper.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/agentic/tools/openai_builtin/__init__.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/__init__.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/config.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/postprocessors/__init__.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/schemas.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/agentic/tools/schemas.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/agentic/tools/test/test_mcp_manager.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/agentic/tools/test/test_tool_progress_reporter.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/agentic/tools/tool.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/agentic/tools/tool_progress_reporter.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/agentic/tools/utils/__init__.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/agentic/tools/utils/source_handling/__init__.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/agentic/tools/utils/source_handling/schema.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/agentic/tools/utils/source_handling/source_formatting.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/agentic/tools/utils/source_handling/tests/test_source_formatting.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/agentic_table/__init__.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/agentic_table/schemas.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/agentic_table/service.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/app/__init__.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/app/dev_util.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/app/fast_api_factory.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/app/init_logging.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/app/init_sdk.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/app/performance/async_tasks.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/app/performance/async_wrapper.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/app/schemas.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/app/unique_settings.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/app/verification.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/app/webhook.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/chat/__init__.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/chat/cancellation.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/chat/constants.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/chat/deprecated/service.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/chat/functions.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/chat/rendering.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/chat/responses_api.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/chat/schemas.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/chat/service.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/chat/state.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/chat/utils.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/content/__init__.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/content/constants.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/content/functions.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/content/schemas.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/content/service.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/content/smart_rules.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/content/utils.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/data_extraction/README.md +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/data_extraction/__init__.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/data_extraction/augmented/__init__.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/data_extraction/augmented/service.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/data_extraction/base.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/data_extraction/basic/__init__.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/data_extraction/basic/config.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/data_extraction/basic/prompt.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/data_extraction/basic/service.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/elicitation/__init__.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/elicitation/constants.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/elicitation/exceptions.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/elicitation/functions.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/elicitation/schemas.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/elicitation/service.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/embedding/__init__.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/embedding/constants.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/embedding/functions.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/embedding/schemas.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/embedding/service.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/embedding/utils.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/framework_utilities/__init__.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/framework_utilities/langchain/__init__.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/framework_utilities/langchain/client.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/framework_utilities/langchain/history.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/framework_utilities/openai/__init__.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/framework_utilities/openai/client.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/framework_utilities/openai/message_builder.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/framework_utilities/utils.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/language_model/__init__.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/language_model/_responses_api_utils.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/language_model/builder.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/language_model/constants.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/language_model/default_language_model.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/language_model/functions.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/language_model/infos.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/language_model/prompt.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/language_model/reference.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/language_model/schemas.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/language_model/service.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/language_model/stream_transform.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/language_model/utils.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/protocols/support.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/services/__init__.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/services/chat_service.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/services/factory.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/services/knowledge_base.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/short_term_memory/__init__.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/short_term_memory/constants.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/short_term_memory/functions.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/short_term_memory/schemas.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/short_term_memory/service.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/smart_rules/__init__.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/smart_rules/compile.py +0 -0
- {unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/test_utilities/events.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.3
|
|
2
2
|
Name: unique-toolkit
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.64.1
|
|
4
4
|
Summary:
|
|
5
5
|
Author: Cedric Klinkert, Martin Fadler, Sadique Sheik, Fabian Schläpfer, Pascal Hauri, Ejiroghene Oki-Peter, Rami Azouz, Ricardo Visini, Sanzio Monti
|
|
6
6
|
Author-email: Cedric Klinkert <cedric.klinkert@unique.ch>, Martin Fadler <martin.fadler@unique.ch>, Sadique Sheik <sadique@unique.ch>, Fabian Schläpfer <fabian@unique.ch>, Pascal Hauri <pascal@unique.ch>, Ejiroghene Oki-Peter <oki-peter.ejiroghene@unique.ai>, Rami Azouz <rami.ext@unique.ch>, Ricardo Visini <ricardo.visini@unique.ch>, Sanzio Monti <sanzio.monti@unique.ai>
|
|
@@ -82,6 +82,11 @@ class FeatureFlags(BaseSettings):
|
|
|
82
82
|
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.",
|
|
83
83
|
)
|
|
84
84
|
|
|
85
|
+
enable_tool_call_persistence_un_15977: FeatureFlag = Field(
|
|
86
|
+
default=FeatureFlag(False),
|
|
87
|
+
description="Persist tool calls and reconstruct tool call history across turns (UN-15977). Can be 'true' or comma-separated company IDs.",
|
|
88
|
+
)
|
|
89
|
+
|
|
85
90
|
model_config = SettingsConfigDict(
|
|
86
91
|
extra="ignore",
|
|
87
92
|
env_prefix="FEATURE_FLAG_",
|
|
@@ -77,6 +77,11 @@ class HistoryManagerConfig(BaseModel):
|
|
|
77
77
|
* self.percent_of_max_tokens_for_history,
|
|
78
78
|
)
|
|
79
79
|
|
|
80
|
+
enable_tool_call_persistence: bool = Field(
|
|
81
|
+
default=False,
|
|
82
|
+
description="When True, tool calls are persisted to the database and reconstructed from prior turns.",
|
|
83
|
+
)
|
|
84
|
+
|
|
80
85
|
uploaded_content_config: (
|
|
81
86
|
Annotated[
|
|
82
87
|
UploadedContentConfig,
|
|
@@ -125,6 +130,7 @@ class HistoryManager:
|
|
|
125
130
|
has_uploaded_content_config=bool(self._config.uploaded_content_config),
|
|
126
131
|
language_model=self._language_model,
|
|
127
132
|
reference_manager=reference_manager,
|
|
133
|
+
enable_tool_call_persistence=self._config.enable_tool_call_persistence,
|
|
128
134
|
)
|
|
129
135
|
self._reference_manager = reference_manager
|
|
130
136
|
self._tool_call_result_history: list[ToolCallResponse] = []
|
|
@@ -10,6 +10,7 @@ from unique_toolkit._common.token.token_counting import (
|
|
|
10
10
|
from unique_toolkit._common.validators import LMI
|
|
11
11
|
from unique_toolkit.agentic.history_manager.history_construction_with_contents import (
|
|
12
12
|
FileContentSerialization,
|
|
13
|
+
get_full_history_with_contents,
|
|
13
14
|
get_full_history_with_contents_and_tool_calls,
|
|
14
15
|
)
|
|
15
16
|
from unique_toolkit.agentic.history_manager.utils import serialize_tool_content_json
|
|
@@ -54,6 +55,7 @@ class LoopTokenReducer:
|
|
|
54
55
|
has_uploaded_content_config: bool,
|
|
55
56
|
reference_manager: ReferenceManager,
|
|
56
57
|
language_model: LMI,
|
|
58
|
+
enable_tool_call_persistence: bool = False,
|
|
57
59
|
):
|
|
58
60
|
self._max_history_tokens = max_history_tokens
|
|
59
61
|
self._has_uploaded_content_config = has_uploaded_content_config
|
|
@@ -73,6 +75,7 @@ class LoopTokenReducer:
|
|
|
73
75
|
)
|
|
74
76
|
self._max_db_source_number: int = -1
|
|
75
77
|
self._db_source_map: dict[int, ContentChunk] = {}
|
|
78
|
+
self._enable_tool_call_persistence = enable_tool_call_persistence
|
|
76
79
|
|
|
77
80
|
@property
|
|
78
81
|
def max_db_source_number(self) -> int:
|
|
@@ -303,19 +306,31 @@ class LoopTokenReducer:
|
|
|
303
306
|
Returns:
|
|
304
307
|
list[LanguageModelMessage]: The history
|
|
305
308
|
"""
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
content_service=self._content_service,
|
|
311
|
-
file_content_serialization_type=(
|
|
312
|
-
FileContentSerialization.NONE
|
|
313
|
-
if self._has_uploaded_content_config
|
|
314
|
-
else FileContentSerialization.FILE_NAME
|
|
315
|
-
),
|
|
309
|
+
file_content_serialization_type = (
|
|
310
|
+
FileContentSerialization.NONE
|
|
311
|
+
if self._has_uploaded_content_config
|
|
312
|
+
else FileContentSerialization.FILE_NAME
|
|
316
313
|
)
|
|
317
|
-
self.
|
|
318
|
-
|
|
314
|
+
if self._enable_tool_call_persistence:
|
|
315
|
+
full_history, max_src, src_map = (
|
|
316
|
+
get_full_history_with_contents_and_tool_calls(
|
|
317
|
+
user_message=self._user_message,
|
|
318
|
+
chat_id=self._chat_id,
|
|
319
|
+
chat_service=self._chat_service,
|
|
320
|
+
content_service=self._content_service,
|
|
321
|
+
file_content_serialization_type=file_content_serialization_type,
|
|
322
|
+
)
|
|
323
|
+
)
|
|
324
|
+
self._max_db_source_number = max_src
|
|
325
|
+
self._db_source_map = src_map
|
|
326
|
+
else:
|
|
327
|
+
full_history = get_full_history_with_contents(
|
|
328
|
+
user_message=self._user_message,
|
|
329
|
+
chat_id=self._chat_id,
|
|
330
|
+
chat_service=self._chat_service,
|
|
331
|
+
content_service=self._content_service,
|
|
332
|
+
file_content_serialization_type=file_content_serialization_type,
|
|
333
|
+
)
|
|
319
334
|
|
|
320
335
|
if remove_from_text is not None:
|
|
321
336
|
full_history.root = await self._clean_messages(
|
{unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/agentic/tools/openai_builtin/base.py
RENAMED
|
@@ -2,6 +2,7 @@ from abc import ABC, abstractmethod
|
|
|
2
2
|
from enum import StrEnum
|
|
3
3
|
from typing import Generic, TypeVar
|
|
4
4
|
|
|
5
|
+
from openai.types.responses import ResponseIncludable
|
|
5
6
|
from openai.types.responses.tool_param import CodeInterpreter
|
|
6
7
|
|
|
7
8
|
from unique_toolkit.agentic.tools.schemas import ToolPrompts
|
|
@@ -44,3 +45,12 @@ class OpenAIBuiltInTool(ABC, Generic[ToolType]):
|
|
|
44
45
|
@abstractmethod
|
|
45
46
|
def display_name(self) -> str:
|
|
46
47
|
raise NotImplementedError()
|
|
48
|
+
|
|
49
|
+
def get_required_include_params(self) -> list[ResponseIncludable]:
|
|
50
|
+
"""Return Responses API `include` values required by this tool.
|
|
51
|
+
|
|
52
|
+
Subclasses override this when they need additional data attached to the
|
|
53
|
+
response (e.g. code interpreter execution logs). The default is an
|
|
54
|
+
empty list, meaning no extra includes are needed.
|
|
55
|
+
"""
|
|
56
|
+
return []
|
|
@@ -6,6 +6,7 @@ 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.feature_flags import feature_flags
|
|
9
10
|
from unique_toolkit.agentic.postprocessor.postprocessor_manager import (
|
|
10
11
|
ResponsesApiPostprocessor,
|
|
11
12
|
)
|
|
@@ -24,22 +25,6 @@ _TEMPLATE = """
|
|
|
24
25
|
|
|
25
26
|
""".lstrip()
|
|
26
27
|
|
|
27
|
-
# Pattern matching the block emitted by _TEMPLATE (including trailing </br>).
|
|
28
|
-
# Used when another postprocessor supersedes this content (e.g. fence injection).
|
|
29
|
-
_EXECUTED_CODE_BLOCK_RE = re.compile(
|
|
30
|
-
r"\n*<details><summary>Code Interpreter Call</summary>.*?</details>[ \t]*\n*(?:[ \t]*</br>[ \t]*\n*)?",
|
|
31
|
-
re.DOTALL,
|
|
32
|
-
)
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
def strip_executed_code_blocks(text: str) -> str:
|
|
36
|
-
"""Remove all executed-code <details> blocks emitted by this postprocessor.
|
|
37
|
-
|
|
38
|
-
Call this when the same content is represented elsewhere (e.g. imgWithSource
|
|
39
|
-
/ fileWithSource fences) so the message does not contain duplicate code blocks.
|
|
40
|
-
"""
|
|
41
|
-
return _EXECUTED_CODE_BLOCK_RE.sub("", text)
|
|
42
|
-
|
|
43
28
|
|
|
44
29
|
logger = logging.getLogger(__name__)
|
|
45
30
|
|
|
@@ -59,18 +44,32 @@ class ShowExecutedCodePostprocessorConfig(BaseModel):
|
|
|
59
44
|
|
|
60
45
|
|
|
61
46
|
class ShowExecutedCodePostprocessor(ResponsesApiPostprocessor):
|
|
62
|
-
def __init__(
|
|
47
|
+
def __init__(
|
|
48
|
+
self,
|
|
49
|
+
config: ShowExecutedCodePostprocessorConfig,
|
|
50
|
+
company_id: str | None = None,
|
|
51
|
+
):
|
|
63
52
|
super().__init__(self.__class__.__name__)
|
|
64
53
|
self._config = config
|
|
54
|
+
self._company_id = company_id
|
|
65
55
|
|
|
66
56
|
@override
|
|
67
57
|
async def run(self, loop_response: ResponsesLanguageModelStreamResponse) -> None:
|
|
58
|
+
if feature_flags.enable_code_execution_fence_un_17972.is_enabled(
|
|
59
|
+
self._company_id
|
|
60
|
+
):
|
|
61
|
+
return
|
|
68
62
|
await asyncio.sleep(self._config.sleep_time_before_display)
|
|
69
63
|
|
|
70
64
|
@override
|
|
71
65
|
def apply_postprocessing_to_response(
|
|
72
66
|
self, loop_response: ResponsesLanguageModelStreamResponse
|
|
73
67
|
) -> bool:
|
|
68
|
+
if feature_flags.enable_code_execution_fence_un_17972.is_enabled(
|
|
69
|
+
self._company_id
|
|
70
|
+
):
|
|
71
|
+
return False
|
|
72
|
+
|
|
74
73
|
prepended_text = ""
|
|
75
74
|
for output in loop_response.code_interpreter_calls:
|
|
76
75
|
prepended_text += _TEMPLATE.format(code=output.code)
|
|
@@ -83,6 +82,5 @@ class ShowExecutedCodePostprocessor(ResponsesApiPostprocessor):
|
|
|
83
82
|
async def remove_from_text(self, text) -> str:
|
|
84
83
|
if not self._config.remove_from_history:
|
|
85
84
|
return text
|
|
86
|
-
# Remove code interpreter blocks using regex
|
|
87
85
|
pattern = r"<details><summary>Code Interpreter Call</summary>.*?</details>"
|
|
88
86
|
return re.sub(pattern, "", text, flags=re.DOTALL)
|
|
@@ -6,6 +6,7 @@ from mimetypes import guess_type
|
|
|
6
6
|
from typing import NamedTuple, override
|
|
7
7
|
|
|
8
8
|
from openai import AsyncOpenAI
|
|
9
|
+
from openai.types.responses import ResponseCodeInterpreterToolCall
|
|
9
10
|
from openai.types.responses.response_output_text import AnnotationContainerFileCitation
|
|
10
11
|
from pydantic import BaseModel, Field, RootModel
|
|
11
12
|
from pydantic.json_schema import SkipJsonSchema
|
|
@@ -20,9 +21,6 @@ from unique_toolkit.agentic.short_term_memory_manager.persistent_short_term_memo
|
|
|
20
21
|
PersistentShortMemoryManager,
|
|
21
22
|
)
|
|
22
23
|
from unique_toolkit.agentic.tools.config import get_configuration_dict
|
|
23
|
-
from unique_toolkit.agentic.tools.openai_builtin.code_interpreter.postprocessors.code_display import (
|
|
24
|
-
strip_executed_code_blocks,
|
|
25
|
-
)
|
|
26
24
|
from unique_toolkit.agentic.tools.openai_builtin.code_interpreter.schemas import (
|
|
27
25
|
CodeInterpreterBlock,
|
|
28
26
|
CodeInterpreterFile,
|
|
@@ -110,6 +108,7 @@ class DisplayCodeInterpreterFilesPostProcessor(
|
|
|
110
108
|
if self._chat_service is None:
|
|
111
109
|
raise ValueError("ChatService is required if uploadToChat is True")
|
|
112
110
|
|
|
111
|
+
self._orphan_code_blocks: list[CodeInterpreterBlock] = []
|
|
113
112
|
self._short_term_memory_manager = None
|
|
114
113
|
if chat_id is not None and user_id is not None and company_id is not None:
|
|
115
114
|
self._short_term_memory_manager = _init_short_term_memory_manager(
|
|
@@ -150,10 +149,23 @@ class DisplayCodeInterpreterFilesPostProcessor(
|
|
|
150
149
|
]
|
|
151
150
|
)
|
|
152
151
|
|
|
152
|
+
if feature_flags.enable_code_execution_fence_un_17972.is_enabled(
|
|
153
|
+
self._company_id
|
|
154
|
+
):
|
|
155
|
+
self._orphan_code_blocks = await self._upload_orphan_code_as_txt(
|
|
156
|
+
loop_response
|
|
157
|
+
)
|
|
158
|
+
else:
|
|
159
|
+
self._orphan_code_blocks = []
|
|
160
|
+
|
|
153
161
|
@override
|
|
154
162
|
def apply_postprocessing_to_response(
|
|
155
163
|
self, loop_response: ResponsesLanguageModelStreamResponse
|
|
156
164
|
) -> bool:
|
|
165
|
+
if loop_response.message.references is None:
|
|
166
|
+
loop_response.message.references = []
|
|
167
|
+
if loop_response.message.text is None:
|
|
168
|
+
loop_response.message.text = ""
|
|
157
169
|
ref_number = _get_next_ref_number(loop_response.message.references)
|
|
158
170
|
changed = False
|
|
159
171
|
|
|
@@ -248,6 +260,27 @@ class DisplayCodeInterpreterFilesPostProcessor(
|
|
|
248
260
|
)
|
|
249
261
|
changed |= loop_response.message.text != text_before
|
|
250
262
|
|
|
263
|
+
if self._orphan_code_blocks:
|
|
264
|
+
fence_id = _get_next_fence_id(loop_response.message.text)
|
|
265
|
+
orphan_fences = _build_orphan_fences(self._orphan_code_blocks, fence_id)
|
|
266
|
+
loop_response.message.text = (
|
|
267
|
+
loop_response.message.text.rstrip() + "\n\n" + orphan_fences
|
|
268
|
+
)
|
|
269
|
+
ref_number = _get_next_ref_number(loop_response.message.references)
|
|
270
|
+
for block in self._orphan_code_blocks:
|
|
271
|
+
for file in block.files:
|
|
272
|
+
loop_response.message.references.append(
|
|
273
|
+
ContentReference(
|
|
274
|
+
sequence_number=ref_number,
|
|
275
|
+
source_id=file.content_id,
|
|
276
|
+
source="node-ingestion-chunks",
|
|
277
|
+
url=f"unique://content/{file.content_id}",
|
|
278
|
+
name=file.filename,
|
|
279
|
+
)
|
|
280
|
+
)
|
|
281
|
+
ref_number += 1
|
|
282
|
+
changed = True
|
|
283
|
+
|
|
251
284
|
_warn_missing_content_ids(loop_response.message.text, self._content_map)
|
|
252
285
|
loop_response.message.text, dangling_replaced = _replace_dangling_sandbox_links(
|
|
253
286
|
loop_response.message.text, self._config.file_download_failed_message
|
|
@@ -317,6 +350,110 @@ class DisplayCodeInterpreterFilesPostProcessor(
|
|
|
317
350
|
_DisplayedFilesShortTermMemorySchema(root=content_infos)
|
|
318
351
|
)
|
|
319
352
|
|
|
353
|
+
async def _upload_orphan_code_as_txt(
|
|
354
|
+
self, loop_response: ResponsesLanguageModelStreamResponse
|
|
355
|
+
) -> list[CodeInterpreterBlock]:
|
|
356
|
+
"""Upload stdout (or code) from calls that produced no container files as .txt artifacts.
|
|
357
|
+
|
|
358
|
+
When code interpreter runs but generates no files or images, the response
|
|
359
|
+
text has no sandbox links for fence injection to hook onto. This method
|
|
360
|
+
converts those "orphan" calls into downloadable .txt files so the fence
|
|
361
|
+
postprocessor can attach a fileWithSource component and the new Code
|
|
362
|
+
Execution UI is shown instead of the legacy <details> block.
|
|
363
|
+
|
|
364
|
+
Called only when the fence feature flag is enabled. Skipped entirely if
|
|
365
|
+
any container files were produced (normal fencing handles those).
|
|
366
|
+
"""
|
|
367
|
+
if loop_response.container_files:
|
|
368
|
+
return []
|
|
369
|
+
|
|
370
|
+
calls = loop_response.code_interpreter_calls
|
|
371
|
+
if not calls:
|
|
372
|
+
return []
|
|
373
|
+
|
|
374
|
+
assert self._chat_service is not None # Checked in __init__
|
|
375
|
+
|
|
376
|
+
use_numeric_suffix = len(calls) > 1
|
|
377
|
+
orphan_blocks: list[CodeInterpreterBlock] = []
|
|
378
|
+
|
|
379
|
+
for i, call in enumerate(calls):
|
|
380
|
+
if not call.code:
|
|
381
|
+
continue
|
|
382
|
+
|
|
383
|
+
# Code interpreter logs are only present on each code_interpreter_call when
|
|
384
|
+
# the create/retrieve request sets include=["code_interpreter_call.outputs"]
|
|
385
|
+
# (see OpenAI Responses API `include` and manual examples in
|
|
386
|
+
# docs/manual_examples_for_docs/code_execution_openai_client.py). If
|
|
387
|
+
# `outputs` is omitted, call.outputs is null and we fall back to the
|
|
388
|
+
# source code as the downloadable txt.
|
|
389
|
+
txt_content = _collect_stdout(call) or call.code
|
|
390
|
+
filename = f"code_{i + 1}.txt" if use_numeric_suffix else "code.txt"
|
|
391
|
+
|
|
392
|
+
try:
|
|
393
|
+
content = await self._chat_service.upload_to_chat_from_bytes_async(
|
|
394
|
+
content=txt_content.encode("utf-8"),
|
|
395
|
+
content_name=filename,
|
|
396
|
+
mime_type="text/plain",
|
|
397
|
+
skip_ingestion=True,
|
|
398
|
+
hide_in_chat=True,
|
|
399
|
+
)
|
|
400
|
+
except Exception:
|
|
401
|
+
logger.exception(
|
|
402
|
+
"Failed to upload orphan code block as txt for call %d ('%s'); "
|
|
403
|
+
"falling back to legacy code block display.",
|
|
404
|
+
i,
|
|
405
|
+
filename,
|
|
406
|
+
)
|
|
407
|
+
continue
|
|
408
|
+
|
|
409
|
+
orphan_file = CodeInterpreterFile(
|
|
410
|
+
filename=filename,
|
|
411
|
+
content_id=content.id,
|
|
412
|
+
type="document",
|
|
413
|
+
)
|
|
414
|
+
orphan_blocks.append(
|
|
415
|
+
CodeInterpreterBlock(code=call.code, files=[orphan_file])
|
|
416
|
+
)
|
|
417
|
+
logger.info(
|
|
418
|
+
"Uploaded orphan code block as '%s' (content_id=%s)",
|
|
419
|
+
filename,
|
|
420
|
+
content.id,
|
|
421
|
+
)
|
|
422
|
+
|
|
423
|
+
return orphan_blocks
|
|
424
|
+
|
|
425
|
+
|
|
426
|
+
def _collect_stdout(call: ResponseCodeInterpreterToolCall) -> str:
|
|
427
|
+
"""Collect all stdout logs from a code interpreter call's outputs."""
|
|
428
|
+
if not call.outputs:
|
|
429
|
+
return ""
|
|
430
|
+
return "\n".join(output.logs for output in call.outputs if output.type == "logs")
|
|
431
|
+
|
|
432
|
+
|
|
433
|
+
def _get_next_fence_id(text: str) -> int:
|
|
434
|
+
"""Return the next available fence id by scanning existing fences in the text."""
|
|
435
|
+
existing = re.findall(r"````(?:imgWithSource|fileWithSource)\(id='(\d+)'", text)
|
|
436
|
+
if not existing:
|
|
437
|
+
return 1
|
|
438
|
+
return max(int(fid) for fid in existing) + 1
|
|
439
|
+
|
|
440
|
+
|
|
441
|
+
def _build_orphan_fences(
|
|
442
|
+
blocks: list[CodeInterpreterBlock], start_fence_id: int
|
|
443
|
+
) -> str:
|
|
444
|
+
"""Build concatenated fence text for orphan code blocks.
|
|
445
|
+
|
|
446
|
+
Orphan blocks have no inline ref in the message text, so their fences are
|
|
447
|
+
appended directly rather than injected via pattern replacement.
|
|
448
|
+
"""
|
|
449
|
+
fence_id = start_fence_id
|
|
450
|
+
parts: list[str] = []
|
|
451
|
+
for block in blocks:
|
|
452
|
+
for file in block.files:
|
|
453
|
+
parts.append(_build_file_fence(file, block.code, fence_id))
|
|
454
|
+
fence_id += 1
|
|
455
|
+
return "\n".join(parts)
|
|
456
|
+
|
|
320
457
|
|
|
321
458
|
def _get_file_type(filename: str) -> CodeInterpreterFileType:
|
|
322
459
|
mime = guess_type(filename)[0] or ""
|
|
@@ -460,8 +597,6 @@ def _inject_code_execution_fences(
|
|
|
460
597
|
|
|
461
598
|
Each file gets its own fence placed at the position of its inline ref. Duplicate
|
|
462
599
|
refs for the same file (overwrite case) are removed after the first is replaced.
|
|
463
|
-
When at least one fence was injected, executed-code <details> blocks are
|
|
464
|
-
stripped via strip_executed_code_blocks() from the code_display postprocessor.
|
|
465
600
|
|
|
466
601
|
fence_id is a message-level counter so each fence has a unique id.
|
|
467
602
|
"""
|
|
@@ -487,7 +622,6 @@ def _inject_code_execution_fences(
|
|
|
487
622
|
# Remove duplicate refs (overwrite case)
|
|
488
623
|
text = re.sub(pattern, "", text)
|
|
489
624
|
if any_fence_injected:
|
|
490
|
-
text = strip_executed_code_blocks(text)
|
|
491
625
|
text = _ensure_fences_are_standalone(text)
|
|
492
626
|
text = _CONSECUTIVE_FENCES_RE.sub(r"\1\n", text)
|
|
493
627
|
return text
|
|
@@ -694,7 +828,9 @@ def _warn_unmatched_code_blocks(
|
|
|
694
828
|
)
|
|
695
829
|
|
|
696
830
|
|
|
697
|
-
def _get_next_ref_number(references: list[ContentReference]) -> int:
|
|
831
|
+
def _get_next_ref_number(references: list[ContentReference] | None) -> int:
|
|
832
|
+
if not references:
|
|
833
|
+
return 1
|
|
698
834
|
max_ref_number = 0
|
|
699
835
|
for ref in references:
|
|
700
836
|
max_ref_number = max(max_ref_number, ref.sequence_number)
|
|
@@ -2,7 +2,7 @@ import logging
|
|
|
2
2
|
from typing import Any, override
|
|
3
3
|
|
|
4
4
|
from openai import AsyncOpenAI, BaseModel, NotFoundError
|
|
5
|
-
from openai.types.responses import ResponseCodeInterpreterToolCall
|
|
5
|
+
from openai.types.responses import ResponseCodeInterpreterToolCall, ResponseIncludable
|
|
6
6
|
from openai.types.responses.tool_param import CodeInterpreter
|
|
7
7
|
|
|
8
8
|
from unique_toolkit import ContentService, ShortTermMemoryService
|
|
@@ -280,6 +280,14 @@ class OpenAICodeInterpreterTool(OpenAIBuiltInTool[CodeInterpreter]):
|
|
|
280
280
|
def display_name(self) -> str:
|
|
281
281
|
return self.DISPLAY_NAME
|
|
282
282
|
|
|
283
|
+
@override
|
|
284
|
+
def get_required_include_params(self) -> list[ResponseIncludable]:
|
|
285
|
+
if feature_flags.enable_code_execution_fence_un_17972.is_enabled(
|
|
286
|
+
self._company_id
|
|
287
|
+
):
|
|
288
|
+
return ["code_interpreter_call.outputs"]
|
|
289
|
+
return []
|
|
290
|
+
|
|
283
291
|
@classmethod
|
|
284
292
|
def get_debug_info(cls, call: ResponseCodeInterpreterToolCall) -> dict[str, Any]:
|
|
285
293
|
return {
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
from openai import AsyncOpenAI
|
|
2
|
+
from openai.types.responses import ResponseIncludable
|
|
2
3
|
|
|
3
4
|
from unique_toolkit.agentic.tools.config import ToolBuildConfig
|
|
4
5
|
from unique_toolkit.agentic.tools.openai_builtin.base import (
|
|
@@ -79,3 +80,14 @@ class OpenAIBuiltInToolManager:
|
|
|
79
80
|
|
|
80
81
|
def get_all_openai_builtin_tools(self) -> list[OpenAIBuiltInTool]:
|
|
81
82
|
return self._builtin_tools.copy()
|
|
83
|
+
|
|
84
|
+
def get_required_include_params(self) -> list[ResponseIncludable]:
|
|
85
|
+
"""Aggregate include params required by all active built-in tools."""
|
|
86
|
+
seen: set[str] = set()
|
|
87
|
+
result: list[ResponseIncludable] = []
|
|
88
|
+
for tool in self._builtin_tools:
|
|
89
|
+
for param in tool.get_required_include_params():
|
|
90
|
+
if param not in seen:
|
|
91
|
+
seen.add(param)
|
|
92
|
+
result.append(param)
|
|
93
|
+
return result
|
{unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/agentic/tools/tool_manager.py
RENAMED
|
@@ -7,6 +7,7 @@ from openai.types.chat import (
|
|
|
7
7
|
ChatCompletionNamedToolChoiceParam,
|
|
8
8
|
)
|
|
9
9
|
from openai.types.responses import (
|
|
10
|
+
ResponseIncludable,
|
|
10
11
|
ToolParam,
|
|
11
12
|
response_create_params,
|
|
12
13
|
)
|
|
@@ -490,6 +491,7 @@ class ResponsesApiToolManager(_ToolManager[Literal["responses"]]):
|
|
|
490
491
|
a2a_manager: A2AManager,
|
|
491
492
|
builtin_tool_manager: OpenAIBuiltInToolManager,
|
|
492
493
|
) -> None:
|
|
494
|
+
self._builtin_tool_manager = builtin_tool_manager
|
|
493
495
|
super().__init__(
|
|
494
496
|
logger=logger,
|
|
495
497
|
config=config,
|
|
@@ -500,3 +502,7 @@ class ResponsesApiToolManager(_ToolManager[Literal["responses"]]):
|
|
|
500
502
|
api_mode="responses",
|
|
501
503
|
builtin_tool_manager=builtin_tool_manager,
|
|
502
504
|
)
|
|
505
|
+
|
|
506
|
+
def get_required_include_params(self) -> list[ResponseIncludable]:
|
|
507
|
+
"""Return Responses API include params required by all active built-in tools."""
|
|
508
|
+
return self._builtin_tool_manager.get_required_include_params()
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/_common/base_model_type_attribute.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/_common/config_checker/README.md
RENAMED
|
File without changes
|
{unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/_common/config_checker/__init__.py
RENAMED
|
File without changes
|
{unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/_common/config_checker/__main__.py
RENAMED
|
File without changes
|
{unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/_common/config_checker/cli.py
RENAMED
|
File without changes
|
{unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/_common/config_checker/differ.py
RENAMED
|
File without changes
|
{unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/_common/config_checker/exporter.py
RENAMED
|
File without changes
|
{unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/_common/config_checker/models.py
RENAMED
|
File without changes
|
{unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/_common/config_checker/registry.py
RENAMED
|
File without changes
|
{unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/_common/config_checker/validator.py
RENAMED
|
File without changes
|
{unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/_common/default_language_model.py
RENAMED
|
File without changes
|
{unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/_common/docx_generator/__init__.py
RENAMED
|
File without changes
|
{unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/_common/docx_generator/config.py
RENAMED
|
File without changes
|
|
File without changes
|
{unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/_common/docx_generator/schemas.py
RENAMED
|
File without changes
|
{unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/_common/docx_generator/service.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{unique_toolkit-1.63.2 → unique_toolkit-1.64.1}/unique_toolkit/_common/endpoint_requestor.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
|