unique_toolkit 1.62.4__tar.gz → 1.63.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.62.4 → unique_toolkit-1.63.1}/PKG-INFO +1 -1
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/pyproject.toml +1 -1
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/agentic/history_manager/history_construction_with_contents.py +25 -3
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/agentic/history_manager/history_manager.py +53 -37
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/agentic/history_manager/loop_token_reducer.py +18 -81
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/agentic/history_manager/utils.py +67 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/app/unique_settings.py +4 -1
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/chat/functions.py +5 -14
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/README.md +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/__init__.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/_common/__init__.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/_common/_base_service.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/_common/_time_utils.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/_common/api_calling/human_verification_manager.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/_common/base_model_type_attribute.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/_common/chunk_relevancy_sorter/config.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/_common/chunk_relevancy_sorter/exception.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/_common/chunk_relevancy_sorter/schemas.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/_common/chunk_relevancy_sorter/service.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/_common/chunk_relevancy_sorter/tests/test_service.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/_common/config_checker/README.md +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/_common/config_checker/__init__.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/_common/config_checker/__main__.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/_common/config_checker/cli.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/_common/config_checker/differ.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/_common/config_checker/exporter.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/_common/config_checker/models.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/_common/config_checker/registry.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/_common/config_checker/validator.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/_common/default_language_model.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/_common/docx_generator/__init__.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/_common/docx_generator/config.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/_common/docx_generator/pandoc_converter.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/_common/docx_generator/schemas.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/_common/docx_generator/service.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/_common/docx_generator/template/Doc Template.docx +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/_common/endpoint_builder.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/_common/endpoint_requestor.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/_common/event_bus.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/_common/exception.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/_common/execution.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/_common/experimental/endpoint_builder.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/_common/experimental/endpoint_requestor.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/_common/experimental/write_up_agent/README.md +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/_common/experimental/write_up_agent/__init__.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/_common/experimental/write_up_agent/agent.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/_common/experimental/write_up_agent/config.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/_common/experimental/write_up_agent/examples/data.csv +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/_common/experimental/write_up_agent/examples/example_usage.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/_common/experimental/write_up_agent/schemas.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/_common/experimental/write_up_agent/services/__init__.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/_common/experimental/write_up_agent/services/dataframe_handler/__init__.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/_common/experimental/write_up_agent/services/dataframe_handler/exceptions.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/_common/experimental/write_up_agent/services/dataframe_handler/service.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/_common/experimental/write_up_agent/services/dataframe_handler/utils.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/__init__.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/config.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/exceptions.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/prompts/config.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/prompts/system_prompt.j2 +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/prompts/user_prompt.j2 +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/service.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/_common/experimental/write_up_agent/services/template_handler/__init__.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/_common/experimental/write_up_agent/services/template_handler/default_template.j2 +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/_common/experimental/write_up_agent/services/template_handler/exceptions.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/_common/experimental/write_up_agent/services/template_handler/service.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/_common/experimental/write_up_agent/services/template_handler/utils.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/_common/experimental/write_up_agent/utils.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/_common/feature_flags/schema.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/_common/pydantic/rjsf_tags.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/_common/pydantic_helpers.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/_common/referencing.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/_common/string_utilities.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/_common/tests/test_referencing.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/_common/tests/test_string_utilities.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/_common/token/__init__.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/_common/token/image_token_counting.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/_common/token/token_counting.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/_common/token/tokenizers/deepseek/tokenizer.json +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/_common/token/tokenizers/qwen/tokenizer.json +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/_common/utils/__init__.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/_common/utils/files.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/_common/utils/image/encode.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/_common/utils/jinja/helpers.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/_common/utils/jinja/render.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/_common/utils/jinja/schema.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/_common/utils/jinja/utils.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/_common/utils/structured_output/__init__.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/_common/utils/structured_output/schema.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/_common/utils/write_configuration.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/_common/validate_required_values.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/_common/validators.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/agentic/__init__.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/agentic/debug_info_manager/debug_info_manager.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/agentic/debug_info_manager/test/test_debug_info_manager.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/agentic/evaluation/config.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/agentic/evaluation/context_relevancy/prompts/__init__.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/agentic/evaluation/context_relevancy/prompts/system_prompt.j2 +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/agentic/evaluation/context_relevancy/prompts/user_prompt.j2 +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/agentic/evaluation/context_relevancy/schema.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/agentic/evaluation/context_relevancy/service.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/agentic/evaluation/evaluation_manager.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/agentic/evaluation/exception.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/agentic/evaluation/hallucination/constants.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/agentic/evaluation/hallucination/hallucination_evaluation.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/agentic/evaluation/hallucination/prompts/__init__.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/agentic/evaluation/hallucination/prompts/system_prompt.j2 +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/agentic/evaluation/hallucination/prompts/user_prompt.j2 +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/agentic/evaluation/hallucination/service.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/agentic/evaluation/hallucination/utils.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/agentic/evaluation/output_parser.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/agentic/evaluation/schemas.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/agentic/evaluation/tests/fixtures.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/agentic/evaluation/tests/test_config.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/agentic/evaluation/tests/test_context_relevancy_service.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/agentic/evaluation/tests/test_hallucination_constants.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/agentic/evaluation/tests/test_hallucination_utils.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/agentic/evaluation/tests/test_output_parser.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/agentic/evaluation/tests/test_prompt_loaders.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/agentic/evaluation/utils.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/agentic/feature_flags/__init__.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/agentic/feature_flags/feature_flags.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/agentic/loop_runner/__init__.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/agentic/loop_runner/_iteration_handler_utils.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/agentic/loop_runner/_responses_iteration_handler_utils.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/agentic/loop_runner/_responses_stream_handler_utils.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/agentic/loop_runner/_stream_handler_utils.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/agentic/loop_runner/base.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/agentic/loop_runner/middleware/__init__.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/agentic/loop_runner/middleware/planning/__init__.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/agentic/loop_runner/middleware/planning/planning.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/agentic/loop_runner/middleware/planning/schema.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/agentic/loop_runner/runners/__init__.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/agentic/loop_runner/runners/basic.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/agentic/loop_runner/runners/mistral/__init__.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/agentic/loop_runner/runners/mistral/mistral_runner.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/agentic/loop_runner/runners/qwen/__init__.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/agentic/loop_runner/runners/qwen/helpers.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/agentic/loop_runner/runners/qwen/qwen_runner.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/agentic/message_log_manager/__init__.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/agentic/message_log_manager/service.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/agentic/postprocessor/postprocessor_manager.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/agentic/reference_manager/reference_manager.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/agentic/responses_api/__init__.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/agentic/responses_api/postprocessors/code_display.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/agentic/responses_api/postprocessors/generated_files.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/agentic/responses_api/stream_handler.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/agentic/short_term_memory_manager/persistent_short_term_memory_manager.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/agentic/thinking_manager/thinking_manager.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/agentic/tools/__init__.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/agentic/tools/a2a/__init__.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/agentic/tools/a2a/config.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/agentic/tools/a2a/evaluation/__init__.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/agentic/tools/a2a/evaluation/_utils.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/agentic/tools/a2a/evaluation/config.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/agentic/tools/a2a/evaluation/evaluator.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/agentic/tools/a2a/evaluation/summarization_user_message.j2 +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/agentic/tools/a2a/manager.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/agentic/tools/a2a/postprocessing/__init__.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/agentic/tools/a2a/postprocessing/_display_utils.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/agentic/tools/a2a/postprocessing/_ref_utils.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/agentic/tools/a2a/postprocessing/config.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/agentic/tools/a2a/postprocessing/display.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/agentic/tools/a2a/postprocessing/references.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/agentic/tools/a2a/postprocessing/test/test_display.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/agentic/tools/a2a/postprocessing/test/test_display_utils.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/agentic/tools/a2a/postprocessing/test/test_ref_utils.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/agentic/tools/a2a/prompts.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/agentic/tools/a2a/response_watcher/__init__.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/agentic/tools/a2a/response_watcher/service.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/agentic/tools/a2a/tool/__init__.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/agentic/tools/a2a/tool/_memory.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/agentic/tools/a2a/tool/_schema.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/agentic/tools/a2a/tool/config.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/agentic/tools/a2a/tool/service.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/agentic/tools/a2a/tool/test/test_service_utils.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/agentic/tools/agent_chunks_hanlder.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/agentic/tools/config.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/agentic/tools/factory.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/agentic/tools/mcp/__init__.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/agentic/tools/mcp/manager.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/agentic/tools/mcp/models.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/agentic/tools/mcp/tool_wrapper.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/agentic/tools/openai_builtin/__init__.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/agentic/tools/openai_builtin/base.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/__init__.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/config.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/postprocessors/__init__.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/postprocessors/code_display.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/postprocessors/generated_files.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/schemas.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/service.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/agentic/tools/openai_builtin/manager.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/agentic/tools/schemas.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/agentic/tools/test/test_mcp_manager.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/agentic/tools/test/test_tool_progress_reporter.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/agentic/tools/tool.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/agentic/tools/tool_manager.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/agentic/tools/tool_progress_reporter.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/agentic/tools/utils/__init__.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/agentic/tools/utils/source_handling/__init__.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/agentic/tools/utils/source_handling/schema.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/agentic/tools/utils/source_handling/source_formatting.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/agentic/tools/utils/source_handling/tests/test_source_formatting.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/agentic_table/__init__.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/agentic_table/schemas.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/agentic_table/service.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/app/__init__.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/app/dev_util.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/app/fast_api_factory.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/app/init_logging.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/app/init_sdk.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/app/performance/async_tasks.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/app/performance/async_wrapper.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/app/schemas.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/app/verification.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/app/webhook.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/chat/__init__.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/chat/cancellation.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/chat/constants.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/chat/deprecated/service.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/chat/rendering.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/chat/responses_api.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/chat/schemas.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/chat/service.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/chat/state.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/chat/utils.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/content/__init__.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/content/constants.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/content/functions.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/content/schemas.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/content/service.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/content/smart_rules.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/content/utils.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/data_extraction/README.md +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/data_extraction/__init__.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/data_extraction/augmented/__init__.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/data_extraction/augmented/service.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/data_extraction/base.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/data_extraction/basic/__init__.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/data_extraction/basic/config.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/data_extraction/basic/prompt.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/data_extraction/basic/service.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/elicitation/__init__.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/elicitation/constants.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/elicitation/exceptions.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/elicitation/functions.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/elicitation/schemas.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/elicitation/service.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/embedding/__init__.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/embedding/constants.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/embedding/functions.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/embedding/schemas.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/embedding/service.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/embedding/utils.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/framework_utilities/__init__.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/framework_utilities/langchain/__init__.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/framework_utilities/langchain/client.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/framework_utilities/langchain/history.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/framework_utilities/openai/__init__.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/framework_utilities/openai/client.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/framework_utilities/openai/message_builder.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/framework_utilities/utils.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/language_model/__init__.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/language_model/_responses_api_utils.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/language_model/builder.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/language_model/constants.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/language_model/default_language_model.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/language_model/functions.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/language_model/infos.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/language_model/prompt.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/language_model/reference.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/language_model/schemas.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/language_model/service.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/language_model/stream_transform.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/language_model/utils.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/protocols/support.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/services/__init__.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/services/chat_service.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/services/factory.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/services/knowledge_base.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/short_term_memory/__init__.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/short_term_memory/constants.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/short_term_memory/functions.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/short_term_memory/schemas.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/short_term_memory/service.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/smart_rules/__init__.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/smart_rules/compile.py +0 -0
- {unique_toolkit-1.62.4 → unique_toolkit-1.63.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.63.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>
|
|
@@ -9,6 +9,7 @@ from itertools import groupby
|
|
|
9
9
|
from typing import TYPE_CHECKING
|
|
10
10
|
|
|
11
11
|
if TYPE_CHECKING:
|
|
12
|
+
from unique_toolkit.content.schemas import ContentChunk
|
|
12
13
|
from unique_toolkit.language_model.builder import MessagesBuilder
|
|
13
14
|
|
|
14
15
|
import numpy as np
|
|
@@ -256,13 +257,30 @@ def get_full_history_with_contents_and_tool_calls(
|
|
|
256
257
|
content_service: ContentService,
|
|
257
258
|
include_images: ImageContentInclusion = ImageContentInclusion.ALL,
|
|
258
259
|
file_content_serialization_type: FileContentSerialization = FileContentSerialization.FILE_NAME,
|
|
259
|
-
) -> LanguageModelMessages:
|
|
260
|
-
"""Build the full LLM message history, including persisted tool call rounds.
|
|
260
|
+
) -> tuple[LanguageModelMessages, int, dict[int, "ContentChunk"]]:
|
|
261
|
+
"""Build the full LLM message history, including persisted tool call rounds.
|
|
262
|
+
|
|
263
|
+
Returns:
|
|
264
|
+
A triple of (messages, max_source_number, source_map) where
|
|
265
|
+
*max_source_number* is the highest ``source_number`` found in any
|
|
266
|
+
persisted tool response (``-1`` when none exist) and *source_map*
|
|
267
|
+
maps each ``source_number`` to a ``ContentChunk`` reconstructed from
|
|
268
|
+
the persisted response content.
|
|
269
|
+
"""
|
|
270
|
+
from unique_toolkit.agentic.history_manager.utils import (
|
|
271
|
+
build_source_map_from_tool_calls,
|
|
272
|
+
compute_max_source_number_from_tool_calls,
|
|
273
|
+
)
|
|
274
|
+
from unique_toolkit.content.schemas import (
|
|
275
|
+
ContentChunk as ContentChunk, # noqa: F811
|
|
276
|
+
)
|
|
277
|
+
|
|
261
278
|
chat_history = chat_service.get_full_history()
|
|
262
279
|
|
|
263
280
|
assistant_message_ids = [
|
|
264
281
|
msg.id for msg in chat_history if msg.role == ChatRole.ASSISTANT and msg.id
|
|
265
282
|
]
|
|
283
|
+
all_tool_calls: list[ChatMessageTool] = []
|
|
266
284
|
tool_calls_by_message: dict[str, list[ChatMessageTool]] = {}
|
|
267
285
|
if assistant_message_ids:
|
|
268
286
|
try:
|
|
@@ -276,6 +294,10 @@ def get_full_history_with_contents_and_tool_calls(
|
|
|
276
294
|
_LOGGER.warning(
|
|
277
295
|
"Failed to batch-load tool calls, falling back to empty", exc_info=True
|
|
278
296
|
)
|
|
297
|
+
max_source_number = compute_max_source_number_from_tool_calls(all_tool_calls)
|
|
298
|
+
source_map: dict[int, ContentChunk] = build_source_map_from_tool_calls(
|
|
299
|
+
all_tool_calls
|
|
300
|
+
)
|
|
279
301
|
|
|
280
302
|
grouped_elements = get_chat_history_with_contents(
|
|
281
303
|
user_message=user_message,
|
|
@@ -366,7 +388,7 @@ def get_full_history_with_contents_and_tool_calls(
|
|
|
366
388
|
content_service=content_service,
|
|
367
389
|
chat_id=chat_id,
|
|
368
390
|
)
|
|
369
|
-
return builder.build()
|
|
391
|
+
return builder.build(), max_source_number, source_map
|
|
370
392
|
|
|
371
393
|
|
|
372
394
|
def get_full_history_as_llm_messages(
|
|
@@ -19,6 +19,7 @@ from unique_toolkit.agentic.tools.config import get_configuration_dict
|
|
|
19
19
|
from unique_toolkit.agentic.tools.schemas import ToolCallResponse
|
|
20
20
|
from unique_toolkit.app.schemas import ChatEvent
|
|
21
21
|
from unique_toolkit.chat.schemas import ChatMessageTool, ChatMessageToolResponse
|
|
22
|
+
from unique_toolkit.content.schemas import ContentChunk
|
|
22
23
|
from unique_toolkit.language_model.default_language_model import DEFAULT_GPT_4o
|
|
23
24
|
from unique_toolkit.language_model.infos import LanguageModelInfo
|
|
24
25
|
from unique_toolkit.language_model.schemas import (
|
|
@@ -67,13 +68,6 @@ class HistoryManagerConfig(BaseModel):
|
|
|
67
68
|
description="The fraction of the max input tokens that will be reserved for the history.",
|
|
68
69
|
)
|
|
69
70
|
|
|
70
|
-
percent_for_tool_call_history: float = Field(
|
|
71
|
-
default=0.0,
|
|
72
|
-
ge=0.0,
|
|
73
|
-
lt=1.0,
|
|
74
|
-
description="The fraction of the max input tokens reserved for tool call rounds. 0 disables.",
|
|
75
|
-
)
|
|
76
|
-
|
|
77
71
|
language_model: LMI = LanguageModelInfo.from_name(DEFAULT_GPT_4o)
|
|
78
72
|
|
|
79
73
|
@property
|
|
@@ -83,13 +77,6 @@ class HistoryManagerConfig(BaseModel):
|
|
|
83
77
|
* self.percent_of_max_tokens_for_history,
|
|
84
78
|
)
|
|
85
79
|
|
|
86
|
-
@property
|
|
87
|
-
def max_tool_call_history_tokens(self) -> int:
|
|
88
|
-
return int(
|
|
89
|
-
self.language_model.token_limits.token_limit_input
|
|
90
|
-
* self.percent_for_tool_call_history,
|
|
91
|
-
)
|
|
92
|
-
|
|
93
80
|
uploaded_content_config: (
|
|
94
81
|
Annotated[
|
|
95
82
|
UploadedContentConfig,
|
|
@@ -138,12 +125,15 @@ class HistoryManager:
|
|
|
138
125
|
has_uploaded_content_config=bool(self._config.uploaded_content_config),
|
|
139
126
|
language_model=self._language_model,
|
|
140
127
|
reference_manager=reference_manager,
|
|
141
|
-
max_tokens_for_tool_call_history=self._config.max_tool_call_history_tokens,
|
|
142
128
|
)
|
|
129
|
+
self._reference_manager = reference_manager
|
|
143
130
|
self._tool_call_result_history: list[ToolCallResponse] = []
|
|
144
131
|
self._tool_calls: list[LanguageModelFunction] = []
|
|
145
132
|
self._loop_history: list[LanguageModelMessage] = []
|
|
146
133
|
self._source_enumerator = 0
|
|
134
|
+
self._initial_source_offset = 0
|
|
135
|
+
self._db_source_map: dict[int, ContentChunk] = {}
|
|
136
|
+
self._source_offset_initialized = False
|
|
147
137
|
self._collected_tool_response_image_urls: list[tuple[str, str]] = []
|
|
148
138
|
|
|
149
139
|
def add_tool_call(self, tool_call: LanguageModelFunction) -> None:
|
|
@@ -196,16 +186,13 @@ class HistoryManager:
|
|
|
196
186
|
tool_response.content_chunks or []
|
|
197
187
|
) # it can be that the tool response does not have content chunks
|
|
198
188
|
|
|
199
|
-
# Transform content chunks into sources to be appended to tool result
|
|
200
189
|
stringified_sources, sources = transform_chunks_to_string(
|
|
201
190
|
content_chunks,
|
|
202
191
|
self._source_enumerator,
|
|
203
192
|
)
|
|
204
193
|
content = stringified_sources
|
|
205
194
|
|
|
206
|
-
self._source_enumerator += len(
|
|
207
|
-
sources
|
|
208
|
-
) # To make sure all sources have unique source numbers
|
|
195
|
+
self._source_enumerator += len(sources)
|
|
209
196
|
|
|
210
197
|
if tool_response.system_reminder:
|
|
211
198
|
content += f"\n\n{tool_response.system_reminder}"
|
|
@@ -246,6 +233,18 @@ class HistoryManager:
|
|
|
246
233
|
image_data_urls_from_tools=image_data_from_tools,
|
|
247
234
|
)
|
|
248
235
|
self._collected_tool_response_image_urls = []
|
|
236
|
+
|
|
237
|
+
if not self._source_offset_initialized:
|
|
238
|
+
offset = max(0, self._token_reducer.max_db_source_number + 1)
|
|
239
|
+
self._source_enumerator = offset
|
|
240
|
+
self._initial_source_offset = offset
|
|
241
|
+
self._db_source_map = self._token_reducer.db_source_map
|
|
242
|
+
self._source_offset_initialized = True
|
|
243
|
+
|
|
244
|
+
self._source_enumerator = self._initial_source_offset + len(
|
|
245
|
+
self._reference_manager.get_chunks()
|
|
246
|
+
)
|
|
247
|
+
|
|
249
248
|
return messages
|
|
250
249
|
|
|
251
250
|
async def get_user_visible_chat_history(
|
|
@@ -270,29 +269,47 @@ class HistoryManager:
|
|
|
270
269
|
)
|
|
271
270
|
return LanguageModelMessages(history)
|
|
272
271
|
|
|
272
|
+
@staticmethod
|
|
273
|
+
def _placeholder_chunk() -> ContentChunk:
|
|
274
|
+
"""An empty but backend-valid placeholder for gap positions."""
|
|
275
|
+
return ContentChunk(key="", chunk_id="")
|
|
276
|
+
|
|
277
|
+
def get_content_chunks_for_backend(self) -> list[ContentChunk]:
|
|
278
|
+
"""Build a positional list where ``result[N]`` is the chunk for ``[sourceN]``.
|
|
279
|
+
|
|
280
|
+
Positions ``0..K-1`` are filled from ``_db_source_map`` (prior turns).
|
|
281
|
+
Gaps get placeholder ``ContentChunk`` instances with empty-string
|
|
282
|
+
``key`` / ``chunk_id`` so the backend doesn't reject the payload.
|
|
283
|
+
Positions ``K..`` are the current turn's chunks from the reference
|
|
284
|
+
manager.
|
|
285
|
+
"""
|
|
286
|
+
current_chunks = self._reference_manager.get_chunks()
|
|
287
|
+
total_size = self._initial_source_offset + len(current_chunks)
|
|
288
|
+
result: list[ContentChunk] = [
|
|
289
|
+
self._placeholder_chunk() for _ in range(total_size)
|
|
290
|
+
]
|
|
291
|
+
for source_number, chunk in self._db_source_map.items():
|
|
292
|
+
if source_number < self._initial_source_offset:
|
|
293
|
+
result[source_number] = chunk
|
|
294
|
+
for i, chunk in enumerate(current_chunks):
|
|
295
|
+
result[self._initial_source_offset + i] = chunk
|
|
296
|
+
return result
|
|
297
|
+
|
|
273
298
|
def extract_message_tools(self) -> list[ChatMessageTool]:
|
|
274
299
|
"""Convert the in-memory loop history into persistable ChatMessageTool records."""
|
|
300
|
+
# Build a map of tool_call_id -> response_content in O(T) time
|
|
301
|
+
tool_responses: dict[str, str | None] = {}
|
|
302
|
+
for msg in self._loop_history:
|
|
303
|
+
if isinstance(msg, LanguageModelToolMessage):
|
|
304
|
+
response_content = msg.content if isinstance(msg.content, str) else None
|
|
305
|
+
tool_responses[msg.tool_call_id] = response_content
|
|
306
|
+
|
|
275
307
|
records: list[ChatMessageTool] = []
|
|
276
308
|
round_index = 0
|
|
277
|
-
|
|
278
|
-
while i < len(self._loop_history):
|
|
279
|
-
msg = self._loop_history[i]
|
|
309
|
+
for msg in self._loop_history:
|
|
280
310
|
if isinstance(msg, LanguageModelAssistantMessage) and msg.tool_calls:
|
|
281
311
|
for seq_index, tc in enumerate(msg.tool_calls):
|
|
282
|
-
response_content = None
|
|
283
|
-
for j in range(i + 1, len(self._loop_history)):
|
|
284
|
-
candidate = self._loop_history[j]
|
|
285
|
-
if (
|
|
286
|
-
isinstance(candidate, LanguageModelToolMessage)
|
|
287
|
-
and candidate.tool_call_id == tc.id
|
|
288
|
-
):
|
|
289
|
-
response_content = (
|
|
290
|
-
candidate.content
|
|
291
|
-
if isinstance(candidate.content, str)
|
|
292
|
-
else None
|
|
293
|
-
)
|
|
294
|
-
break
|
|
295
|
-
|
|
312
|
+
response_content = tool_responses.get(tc.id) if tc.id else None
|
|
296
313
|
response = (
|
|
297
314
|
ChatMessageToolResponse(content=response_content)
|
|
298
315
|
if response_content is not None
|
|
@@ -309,7 +326,6 @@ class HistoryManager:
|
|
|
309
326
|
)
|
|
310
327
|
)
|
|
311
328
|
round_index += 1
|
|
312
|
-
i += 1
|
|
313
329
|
return records
|
|
314
330
|
|
|
315
331
|
@staticmethod
|
|
@@ -54,11 +54,9 @@ class LoopTokenReducer:
|
|
|
54
54
|
has_uploaded_content_config: bool,
|
|
55
55
|
reference_manager: ReferenceManager,
|
|
56
56
|
language_model: LMI,
|
|
57
|
-
max_tokens_for_tool_call_history: int | None = None,
|
|
58
57
|
):
|
|
59
58
|
self._max_history_tokens = max_history_tokens
|
|
60
59
|
self._has_uploaded_content_config = has_uploaded_content_config
|
|
61
|
-
self._max_tokens_for_tool_call_history = max_tokens_for_tool_call_history
|
|
62
60
|
self._logger = logger
|
|
63
61
|
self._reference_manager = reference_manager
|
|
64
62
|
self._language_model = language_model
|
|
@@ -73,6 +71,16 @@ class LoopTokenReducer:
|
|
|
73
71
|
self._language_model.token_limits.token_limit_input
|
|
74
72
|
* (1 - MAX_INPUT_TOKENS_SAFETY_PERCENTAGE)
|
|
75
73
|
)
|
|
74
|
+
self._max_db_source_number: int = -1
|
|
75
|
+
self._db_source_map: dict[int, ContentChunk] = {}
|
|
76
|
+
|
|
77
|
+
@property
|
|
78
|
+
def max_db_source_number(self) -> int:
|
|
79
|
+
return self._max_db_source_number
|
|
80
|
+
|
|
81
|
+
@property
|
|
82
|
+
def db_source_map(self) -> dict[int, ContentChunk]:
|
|
83
|
+
return self._db_source_map
|
|
76
84
|
|
|
77
85
|
def _get_encoder(self, language_model: LMI) -> Callable[[str], list[int]]:
|
|
78
86
|
return language_model.get_encoder()
|
|
@@ -106,7 +114,9 @@ class LoopTokenReducer:
|
|
|
106
114
|
|
|
107
115
|
while self._exceeds_token_limit(token_count):
|
|
108
116
|
token_count_before_reduction = token_count
|
|
109
|
-
loop_history = self._handle_token_limit_exceeded(
|
|
117
|
+
loop_history[:] = self._handle_token_limit_exceeded(
|
|
118
|
+
loop_history, token_count
|
|
119
|
+
)
|
|
110
120
|
messages = self._construct_history(
|
|
111
121
|
history_from_db,
|
|
112
122
|
loop_history,
|
|
@@ -293,7 +303,7 @@ class LoopTokenReducer:
|
|
|
293
303
|
Returns:
|
|
294
304
|
list[LanguageModelMessage]: The history
|
|
295
305
|
"""
|
|
296
|
-
full_history = get_full_history_with_contents_and_tool_calls(
|
|
306
|
+
full_history, max_src, src_map = get_full_history_with_contents_and_tool_calls(
|
|
297
307
|
user_message=self._user_message,
|
|
298
308
|
chat_id=self._chat_id,
|
|
299
309
|
chat_service=self._chat_service,
|
|
@@ -304,16 +314,14 @@ class LoopTokenReducer:
|
|
|
304
314
|
else FileContentSerialization.FILE_NAME
|
|
305
315
|
),
|
|
306
316
|
)
|
|
317
|
+
self._max_db_source_number = max_src
|
|
318
|
+
self._db_source_map = src_map
|
|
319
|
+
|
|
307
320
|
if remove_from_text is not None:
|
|
308
321
|
full_history.root = await self._clean_messages(
|
|
309
322
|
full_history.root, remove_from_text
|
|
310
323
|
)
|
|
311
324
|
|
|
312
|
-
if self._max_tokens_for_tool_call_history is not None:
|
|
313
|
-
full_history.root = self._limit_tool_call_tokens(
|
|
314
|
-
full_history.root, self._max_tokens_for_tool_call_history
|
|
315
|
-
)
|
|
316
|
-
|
|
317
325
|
limited_history_messages = self._limit_to_token_window(
|
|
318
326
|
full_history.root, self._max_history_tokens
|
|
319
327
|
)
|
|
@@ -384,77 +392,6 @@ class LoopTokenReducer:
|
|
|
384
392
|
|
|
385
393
|
return [msg for turn in selected_turns[::-1] for msg in turn]
|
|
386
394
|
|
|
387
|
-
def _limit_tool_call_tokens(
|
|
388
|
-
self,
|
|
389
|
-
messages: list[LanguageModelMessage],
|
|
390
|
-
budget: int,
|
|
391
|
-
) -> list[LanguageModelMessage]:
|
|
392
|
-
"""Drop older tool-call rounds so the total stays within *budget* tokens.
|
|
393
|
-
|
|
394
|
-
A "round" is a contiguous block of one ``LanguageModelAssistantMessage``
|
|
395
|
-
(with ``tool_calls``) followed by its ``LanguageModelToolMessage`` replies.
|
|
396
|
-
Rounds are kept from the back (most recent first). When *budget* is
|
|
397
|
-
positive, at least one round is always preserved even if it alone exceeds
|
|
398
|
-
the budget. A *budget* of ``0`` removes **all** tool-call rounds.
|
|
399
|
-
"""
|
|
400
|
-
rounds: list[tuple[int, int]] = []
|
|
401
|
-
i = 0
|
|
402
|
-
while i < len(messages):
|
|
403
|
-
msg = messages[i]
|
|
404
|
-
if isinstance(msg, LanguageModelAssistantMessage) and msg.tool_calls:
|
|
405
|
-
start = i
|
|
406
|
-
i += 1
|
|
407
|
-
while i < len(messages) and isinstance(
|
|
408
|
-
messages[i], LanguageModelToolMessage
|
|
409
|
-
):
|
|
410
|
-
i += 1
|
|
411
|
-
rounds.append((start, i))
|
|
412
|
-
else:
|
|
413
|
-
i += 1
|
|
414
|
-
|
|
415
|
-
if not rounds:
|
|
416
|
-
return messages
|
|
417
|
-
|
|
418
|
-
if budget <= 0:
|
|
419
|
-
drop_all: set[int] = set()
|
|
420
|
-
for start, end in rounds:
|
|
421
|
-
drop_all.update(range(start, end))
|
|
422
|
-
self._logger.info(
|
|
423
|
-
f"Tool-call budget is 0: dropping all {len(rounds)} tool-call rounds",
|
|
424
|
-
)
|
|
425
|
-
return [m for i, m in enumerate(messages) if i not in drop_all]
|
|
426
|
-
|
|
427
|
-
round_tokens = [
|
|
428
|
-
sum(
|
|
429
|
-
self._count_message_tokens(LanguageModelMessages(root=[m]))
|
|
430
|
-
for m in messages[start:end]
|
|
431
|
-
)
|
|
432
|
-
for start, end in rounds
|
|
433
|
-
]
|
|
434
|
-
|
|
435
|
-
keep: set[int] = set()
|
|
436
|
-
cumulative = 0
|
|
437
|
-
for idx in range(len(rounds) - 1, -1, -1):
|
|
438
|
-
cumulative += round_tokens[idx]
|
|
439
|
-
if cumulative > budget and keep:
|
|
440
|
-
break
|
|
441
|
-
keep.add(idx)
|
|
442
|
-
|
|
443
|
-
drop_indices: set[int] = set()
|
|
444
|
-
for idx, (start, end) in enumerate(rounds):
|
|
445
|
-
if idx not in keep:
|
|
446
|
-
drop_indices.update(range(start, end))
|
|
447
|
-
|
|
448
|
-
if not drop_indices:
|
|
449
|
-
return messages
|
|
450
|
-
|
|
451
|
-
self._logger.info(
|
|
452
|
-
f"Tool-call budget: dropping {len(rounds) - len(keep)} of {len(rounds)} "
|
|
453
|
-
f"rounds ({sum(round_tokens[i] for i in range(len(rounds)) if i not in keep)} tokens freed)",
|
|
454
|
-
)
|
|
455
|
-
|
|
456
|
-
return [m for i, m in enumerate(messages) if i not in drop_indices]
|
|
457
|
-
|
|
458
395
|
async def _clean_messages(
|
|
459
396
|
self,
|
|
460
397
|
messages: list[
|
|
@@ -516,7 +453,7 @@ class LoopTokenReducer:
|
|
|
516
453
|
history_reduced: list[LanguageModelMessage] = []
|
|
517
454
|
content_chunks_reduced: list[ContentChunk] = []
|
|
518
455
|
chunk_offset = 0
|
|
519
|
-
source_offset = 0
|
|
456
|
+
source_offset = max(0, self._max_db_source_number + 1)
|
|
520
457
|
|
|
521
458
|
for message in history:
|
|
522
459
|
if self._should_reduce_message(message):
|
{unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/agentic/history_manager/utils.py
RENAMED
|
@@ -100,3 +100,70 @@ def load_sources_from_string(
|
|
|
100
100
|
except (json.JSONDecodeError, ValueError):
|
|
101
101
|
logger.warning("Failed to parse source string")
|
|
102
102
|
return None
|
|
103
|
+
|
|
104
|
+
|
|
105
|
+
def _parse_sources_from_response(content: str) -> list[dict[str, Any]]:
|
|
106
|
+
"""Parse the JSON source array from a persisted tool response content string.
|
|
107
|
+
|
|
108
|
+
Returns an empty list when the content is not valid JSON or not a list.
|
|
109
|
+
"""
|
|
110
|
+
try:
|
|
111
|
+
data = json.loads(content)
|
|
112
|
+
if isinstance(data, list):
|
|
113
|
+
return data
|
|
114
|
+
return []
|
|
115
|
+
except (json.JSONDecodeError, ValueError) as exc:
|
|
116
|
+
logger.warning(
|
|
117
|
+
"_parse_sources_from_response: JSON parse failed (content_len=%d): %s",
|
|
118
|
+
len(content),
|
|
119
|
+
exc,
|
|
120
|
+
)
|
|
121
|
+
return []
|
|
122
|
+
|
|
123
|
+
|
|
124
|
+
def compute_max_source_number_from_tool_calls(
|
|
125
|
+
tool_calls: list[Any],
|
|
126
|
+
) -> int:
|
|
127
|
+
"""Find the highest ``source_number`` across all persisted tool-call responses.
|
|
128
|
+
|
|
129
|
+
Returns ``-1`` when no source numbers are found.
|
|
130
|
+
"""
|
|
131
|
+
from unique_toolkit.chat.schemas import ChatMessageTool
|
|
132
|
+
|
|
133
|
+
max_num = -1
|
|
134
|
+
for tc in tool_calls:
|
|
135
|
+
if not isinstance(tc, ChatMessageTool):
|
|
136
|
+
continue
|
|
137
|
+
if not tc.response or not tc.response.content:
|
|
138
|
+
continue
|
|
139
|
+
for entry in _parse_sources_from_response(tc.response.content):
|
|
140
|
+
sn = entry.get("source_number")
|
|
141
|
+
if isinstance(sn, int) and sn > max_num:
|
|
142
|
+
max_num = sn
|
|
143
|
+
return max_num
|
|
144
|
+
|
|
145
|
+
|
|
146
|
+
def build_source_map_from_tool_calls(
|
|
147
|
+
tool_calls: list[Any],
|
|
148
|
+
) -> dict[int, ContentChunk]:
|
|
149
|
+
"""Build a mapping ``{source_number: ContentChunk}`` from persisted tool responses.
|
|
150
|
+
|
|
151
|
+
Only entries that have both a valid ``source_number`` and ``content`` are included.
|
|
152
|
+
"""
|
|
153
|
+
from unique_toolkit.chat.schemas import ChatMessageTool
|
|
154
|
+
|
|
155
|
+
source_map: dict[int, ContentChunk] = {}
|
|
156
|
+
for tc in tool_calls:
|
|
157
|
+
if not isinstance(tc, ChatMessageTool):
|
|
158
|
+
continue
|
|
159
|
+
if not tc.response or not tc.response.content:
|
|
160
|
+
continue
|
|
161
|
+
for entry in _parse_sources_from_response(tc.response.content):
|
|
162
|
+
sn = entry.get("source_number")
|
|
163
|
+
text = entry.get("content")
|
|
164
|
+
if isinstance(sn, int) and isinstance(text, str):
|
|
165
|
+
content_id = entry.get("content_id") or ""
|
|
166
|
+
source_map[sn] = ContentChunk(
|
|
167
|
+
id=content_id, text=text, key="", chunk_id=""
|
|
168
|
+
)
|
|
169
|
+
return source_map
|
|
@@ -334,7 +334,10 @@ class UniqueApi(BaseSettings):
|
|
|
334
334
|
base_path = "/public/chat-gen2"
|
|
335
335
|
|
|
336
336
|
if parsed.hostname and (
|
|
337
|
-
"localhost" in parsed.hostname
|
|
337
|
+
"localhost" in parsed.hostname
|
|
338
|
+
or "svc.cluster.local" in parsed.hostname
|
|
339
|
+
or ".svc." in parsed.hostname
|
|
340
|
+
or parsed.hostname.endswith(".svc")
|
|
338
341
|
):
|
|
339
342
|
base_path = "/public"
|
|
340
343
|
|
|
@@ -1410,9 +1410,6 @@ async def update_message_execution_async(
|
|
|
1410
1410
|
raise e
|
|
1411
1411
|
|
|
1412
1412
|
|
|
1413
|
-
_MAX_TOOL_RESPONSE_CONTENT_LEN = 10_000
|
|
1414
|
-
|
|
1415
|
-
|
|
1416
1413
|
def _build_tool_call_items(
|
|
1417
1414
|
tool_calls: list[ChatMessageTool],
|
|
1418
1415
|
) -> list[dict[str, object]]:
|
|
@@ -1423,15 +1420,7 @@ def _build_tool_call_items(
|
|
|
1423
1420
|
"arguments": tc.arguments,
|
|
1424
1421
|
"roundIndex": tc.round_index,
|
|
1425
1422
|
"sequenceIndex": tc.sequence_index,
|
|
1426
|
-
**(
|
|
1427
|
-
{
|
|
1428
|
-
"response": {
|
|
1429
|
-
"content": tc.response.content[:_MAX_TOOL_RESPONSE_CONTENT_LEN]
|
|
1430
|
-
}
|
|
1431
|
-
}
|
|
1432
|
-
if tc.response
|
|
1433
|
-
else {}
|
|
1434
|
-
),
|
|
1423
|
+
**({"response": {"content": tc.response.content}} if tc.response else {}),
|
|
1435
1424
|
}
|
|
1436
1425
|
for tc in tool_calls
|
|
1437
1426
|
]
|
|
@@ -1484,7 +1473,8 @@ async def create_message_tools_async(
|
|
|
1484
1473
|
messageId=message_id,
|
|
1485
1474
|
tools=_build_tool_call_items(tool_calls), # type: ignore
|
|
1486
1475
|
)
|
|
1487
|
-
|
|
1476
|
+
tools = [ChatMessageTool.model_validate(dict(item)) for item in result.data]
|
|
1477
|
+
return tools
|
|
1488
1478
|
except Exception as e:
|
|
1489
1479
|
_LOGGER.error(f"Failed to create message tools: {e}")
|
|
1490
1480
|
raise e
|
|
@@ -1507,7 +1497,8 @@ def get_message_tools(
|
|
|
1507
1497
|
company_id=company_id,
|
|
1508
1498
|
messageIds=ids,
|
|
1509
1499
|
)
|
|
1510
|
-
|
|
1500
|
+
tools = [ChatMessageTool.model_validate(dict(item)) for item in result.data]
|
|
1501
|
+
return tools
|
|
1511
1502
|
except Exception as e:
|
|
1512
1503
|
_LOGGER.error(f"Failed to get message tools: {e}")
|
|
1513
1504
|
raise e
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{unique_toolkit-1.62.4 → unique_toolkit-1.63.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.62.4 → unique_toolkit-1.63.1}/unique_toolkit/_common/config_checker/README.md
RENAMED
|
File without changes
|
{unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/_common/config_checker/__init__.py
RENAMED
|
File without changes
|
{unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/_common/config_checker/__main__.py
RENAMED
|
File without changes
|
{unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/_common/config_checker/cli.py
RENAMED
|
File without changes
|
{unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/_common/config_checker/differ.py
RENAMED
|
File without changes
|
{unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/_common/config_checker/exporter.py
RENAMED
|
File without changes
|
{unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/_common/config_checker/models.py
RENAMED
|
File without changes
|
{unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/_common/config_checker/registry.py
RENAMED
|
File without changes
|
{unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/_common/config_checker/validator.py
RENAMED
|
File without changes
|
{unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/_common/default_language_model.py
RENAMED
|
File without changes
|
{unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/_common/docx_generator/__init__.py
RENAMED
|
File without changes
|
{unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/_common/docx_generator/config.py
RENAMED
|
File without changes
|
|
File without changes
|
{unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/_common/docx_generator/schemas.py
RENAMED
|
File without changes
|
{unique_toolkit-1.62.4 → unique_toolkit-1.63.1}/unique_toolkit/_common/docx_generator/service.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{unique_toolkit-1.62.4 → unique_toolkit-1.63.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
|