unique_toolkit 1.49.0__tar.gz → 1.50.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.49.0 → unique_toolkit-1.50.1}/CHANGELOG.md +13 -5
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/PKG-INFO +15 -7
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/pyproject.toml +9 -3
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/service.py +2 -2
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/content/functions.py +67 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/content/service.py +27 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/services/chat_service.py +20 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/services/knowledge_base.py +26 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/LICENSE +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/README.md +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/__init__.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/_common/__init__.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/_common/_base_service.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/_common/_time_utils.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/_common/api_calling/human_verification_manager.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/_common/base_model_type_attribute.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/_common/chunk_relevancy_sorter/config.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/_common/chunk_relevancy_sorter/exception.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/_common/chunk_relevancy_sorter/schemas.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/_common/chunk_relevancy_sorter/service.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/_common/chunk_relevancy_sorter/tests/test_service.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/_common/config_checker/README.md +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/_common/config_checker/__init__.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/_common/config_checker/__main__.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/_common/config_checker/cli.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/_common/config_checker/differ.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/_common/config_checker/exporter.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/_common/config_checker/models.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/_common/config_checker/registry.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/_common/config_checker/validator.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/_common/default_language_model.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/_common/docx_generator/__init__.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/_common/docx_generator/config.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/_common/docx_generator/pandoc_converter.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/_common/docx_generator/schemas.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/_common/docx_generator/service.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/_common/docx_generator/template/Doc Template.docx +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/_common/endpoint_builder.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/_common/endpoint_requestor.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/_common/event_bus.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/_common/exception.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/_common/execution.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/_common/experimental/endpoint_builder.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/_common/experimental/endpoint_requestor.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/_common/experimental/write_up_agent/README.md +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/_common/experimental/write_up_agent/__init__.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/_common/experimental/write_up_agent/agent.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/_common/experimental/write_up_agent/config.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/_common/experimental/write_up_agent/examples/data.csv +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/_common/experimental/write_up_agent/examples/example_usage.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/_common/experimental/write_up_agent/schemas.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/_common/experimental/write_up_agent/services/__init__.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/_common/experimental/write_up_agent/services/dataframe_handler/__init__.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/_common/experimental/write_up_agent/services/dataframe_handler/exceptions.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/_common/experimental/write_up_agent/services/dataframe_handler/service.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/_common/experimental/write_up_agent/services/dataframe_handler/utils.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/__init__.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/config.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/exceptions.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/prompts/config.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/prompts/system_prompt.j2 +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/prompts/user_prompt.j2 +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/service.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/_common/experimental/write_up_agent/services/template_handler/__init__.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/_common/experimental/write_up_agent/services/template_handler/default_template.j2 +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/_common/experimental/write_up_agent/services/template_handler/exceptions.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/_common/experimental/write_up_agent/services/template_handler/service.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/_common/experimental/write_up_agent/services/template_handler/utils.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/_common/experimental/write_up_agent/utils.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/_common/feature_flags/schema.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/_common/pydantic/rjsf_tags.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/_common/pydantic_helpers.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/_common/referencing.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/_common/string_utilities.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/_common/tests/test_referencing.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/_common/tests/test_string_utilities.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/_common/token/__init__.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/_common/token/image_token_counting.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/_common/token/token_counting.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/_common/token/tokenizers/deepseek/tokenizer.json +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/_common/token/tokenizers/qwen/tokenizer.json +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/_common/utils/__init__.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/_common/utils/files.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/_common/utils/image/encode.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/_common/utils/jinja/helpers.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/_common/utils/jinja/render.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/_common/utils/jinja/schema.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/_common/utils/jinja/utils.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/_common/utils/structured_output/__init__.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/_common/utils/structured_output/schema.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/_common/utils/write_configuration.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/_common/validate_required_values.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/_common/validators.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/agentic/__init__.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/agentic/debug_info_manager/debug_info_manager.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/agentic/debug_info_manager/test/test_debug_info_manager.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/agentic/evaluation/config.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/agentic/evaluation/context_relevancy/prompts/__init__.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/agentic/evaluation/context_relevancy/prompts/system_prompt.j2 +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/agentic/evaluation/context_relevancy/prompts/user_prompt.j2 +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/agentic/evaluation/context_relevancy/schema.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/agentic/evaluation/context_relevancy/service.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/agentic/evaluation/evaluation_manager.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/agentic/evaluation/exception.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/agentic/evaluation/hallucination/constants.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/agentic/evaluation/hallucination/hallucination_evaluation.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/agentic/evaluation/hallucination/prompts/__init__.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/agentic/evaluation/hallucination/prompts/system_prompt.j2 +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/agentic/evaluation/hallucination/prompts/user_prompt.j2 +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/agentic/evaluation/hallucination/service.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/agentic/evaluation/hallucination/utils.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/agentic/evaluation/output_parser.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/agentic/evaluation/schemas.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/agentic/evaluation/tests/fixtures.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/agentic/evaluation/tests/test_config.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/agentic/evaluation/tests/test_context_relevancy_service.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/agentic/evaluation/tests/test_hallucination_constants.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/agentic/evaluation/tests/test_hallucination_utils.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/agentic/evaluation/tests/test_output_parser.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/agentic/evaluation/tests/test_prompt_loaders.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/agentic/evaluation/utils.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/agentic/feature_flags/__init__.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/agentic/feature_flags/feature_flags.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/agentic/history_manager/history_construction_with_contents.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/agentic/history_manager/history_manager.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/agentic/history_manager/loop_token_reducer.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/agentic/history_manager/utils.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/agentic/loop_runner/__init__.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/agentic/loop_runner/_iteration_handler_utils.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/agentic/loop_runner/_responses_iteration_handler_utils.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/agentic/loop_runner/_responses_stream_handler_utils.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/agentic/loop_runner/_stream_handler_utils.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/agentic/loop_runner/base.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/agentic/loop_runner/middleware/__init__.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/agentic/loop_runner/middleware/planning/__init__.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/agentic/loop_runner/middleware/planning/planning.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/agentic/loop_runner/middleware/planning/schema.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/agentic/loop_runner/runners/__init__.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/agentic/loop_runner/runners/basic.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/agentic/loop_runner/runners/qwen/__init__.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/agentic/loop_runner/runners/qwen/helpers.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/agentic/loop_runner/runners/qwen/qwen_runner.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/agentic/message_log_manager/__init__.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/agentic/message_log_manager/service.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/agentic/postprocessor/postprocessor_manager.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/agentic/reference_manager/reference_manager.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/agentic/responses_api/__init__.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/agentic/responses_api/postprocessors/code_display.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/agentic/responses_api/postprocessors/generated_files.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/agentic/responses_api/stream_handler.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/agentic/short_term_memory_manager/persistent_short_term_memory_manager.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/agentic/thinking_manager/thinking_manager.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/agentic/tools/__init__.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/agentic/tools/a2a/__init__.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/agentic/tools/a2a/config.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/agentic/tools/a2a/evaluation/__init__.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/agentic/tools/a2a/evaluation/_utils.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/agentic/tools/a2a/evaluation/config.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/agentic/tools/a2a/evaluation/evaluator.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/agentic/tools/a2a/evaluation/summarization_user_message.j2 +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/agentic/tools/a2a/manager.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/agentic/tools/a2a/postprocessing/__init__.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/agentic/tools/a2a/postprocessing/_display_utils.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/agentic/tools/a2a/postprocessing/_ref_utils.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/agentic/tools/a2a/postprocessing/config.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/agentic/tools/a2a/postprocessing/display.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/agentic/tools/a2a/postprocessing/references.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/agentic/tools/a2a/postprocessing/test/test_display.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/agentic/tools/a2a/postprocessing/test/test_display_utils.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/agentic/tools/a2a/postprocessing/test/test_ref_utils.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/agentic/tools/a2a/prompts.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/agentic/tools/a2a/response_watcher/__init__.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/agentic/tools/a2a/response_watcher/service.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/agentic/tools/a2a/tool/__init__.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/agentic/tools/a2a/tool/_memory.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/agentic/tools/a2a/tool/_schema.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/agentic/tools/a2a/tool/config.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/agentic/tools/a2a/tool/service.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/agentic/tools/a2a/tool/test/test_service_utils.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/agentic/tools/agent_chunks_hanlder.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/agentic/tools/config.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/agentic/tools/factory.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/agentic/tools/mcp/__init__.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/agentic/tools/mcp/manager.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/agentic/tools/mcp/models.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/agentic/tools/mcp/tool_wrapper.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/agentic/tools/openai_builtin/__init__.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/agentic/tools/openai_builtin/base.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/__init__.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/config.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/postprocessors/__init__.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/postprocessors/code_display.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/postprocessors/generated_files.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/agentic/tools/openai_builtin/manager.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/agentic/tools/schemas.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/agentic/tools/test/test_mcp_manager.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/agentic/tools/test/test_tool_progress_reporter.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/agentic/tools/tool.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/agentic/tools/tool_manager.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/agentic/tools/tool_progress_reporter.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/agentic/tools/utils/__init__.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/agentic/tools/utils/source_handling/__init__.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/agentic/tools/utils/source_handling/schema.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/agentic/tools/utils/source_handling/source_formatting.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/agentic/tools/utils/source_handling/tests/test_source_formatting.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/agentic_table/__init__.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/agentic_table/schemas.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/agentic_table/service.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/app/__init__.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/app/dev_util.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/app/fast_api_factory.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/app/init_logging.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/app/init_sdk.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/app/performance/async_tasks.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/app/performance/async_wrapper.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/app/schemas.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/app/unique_settings.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/app/verification.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/app/webhook.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/chat/__init__.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/chat/cancellation.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/chat/constants.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/chat/deprecated/service.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/chat/functions.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/chat/rendering.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/chat/responses_api.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/chat/schemas.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/chat/service.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/chat/state.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/chat/utils.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/content/__init__.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/content/constants.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/content/schemas.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/content/smart_rules.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/content/utils.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/data_extraction/README.md +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/data_extraction/__init__.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/data_extraction/augmented/__init__.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/data_extraction/augmented/service.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/data_extraction/base.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/data_extraction/basic/__init__.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/data_extraction/basic/config.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/data_extraction/basic/prompt.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/data_extraction/basic/service.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/elicitation/__init__.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/elicitation/constants.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/elicitation/exceptions.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/elicitation/functions.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/elicitation/schemas.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/elicitation/service.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/embedding/__init__.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/embedding/constants.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/embedding/functions.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/embedding/schemas.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/embedding/service.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/embedding/utils.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/framework_utilities/__init__.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/framework_utilities/langchain/__init__.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/framework_utilities/langchain/client.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/framework_utilities/langchain/history.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/framework_utilities/openai/__init__.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/framework_utilities/openai/client.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/framework_utilities/openai/message_builder.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/framework_utilities/utils.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/language_model/__init__.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/language_model/_responses_api_utils.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/language_model/builder.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/language_model/constants.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/language_model/default_language_model.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/language_model/functions.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/language_model/infos.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/language_model/prompt.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/language_model/reference.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/language_model/schemas.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/language_model/service.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/language_model/stream_transform.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/language_model/utils.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/protocols/support.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/services/__init__.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/short_term_memory/__init__.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/short_term_memory/constants.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/short_term_memory/functions.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/short_term_memory/schemas.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/short_term_memory/service.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/smart_rules/__init__.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/smart_rules/compile.py +0 -0
- {unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/test_utilities/events.py +0 -0
|
@@ -5,8 +5,16 @@ All notable changes to this project will be documented in this file.
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
+
## [1.50.1] - 2026-03-02
|
|
9
|
+
- Security: upgrade pillow from 10.4.0 to 12.1.1 (CVE / Dependabot alert — out-of-bounds write in PSD loader)
|
|
10
|
+
- Security: upgrade starlette from 0.48.0 to 0.49.1 (Dependabot alert)
|
|
11
|
+
|
|
12
|
+
## [1.50.0] - 2026-03-02
|
|
13
|
+
- Add async download-to-bytes functions: `download_content_to_bytes_async` on `KnowledgeBaseService`, `ContentService`, and `download_chat_content_to_bytes_async` on `ChatService`
|
|
14
|
+
|
|
8
15
|
## [1.49.0] - 2026-03-02
|
|
9
16
|
- Make the code execution tool always available to the agent
|
|
17
|
+
|
|
10
18
|
## [1.48.1] - 2026-03-02
|
|
11
19
|
- Revert `DocxGeneratorConfig` and `DocxGeneratorService` additions from 1.47.11 (broke SWOT tool, pending further testing)
|
|
12
20
|
|
|
@@ -207,7 +215,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
207
215
|
## [1.43.1] - 2026-01-12
|
|
208
216
|
- Remove accidental example report.md from repo
|
|
209
217
|
|
|
210
|
-
##[1.43.0] - 2026-01-11
|
|
218
|
+
## [1.43.0] - 2026-01-11
|
|
211
219
|
- Add `WriteUpAgent` as an experimental service
|
|
212
220
|
|
|
213
221
|
## [1.42.9] - 2026-01-11
|
|
@@ -304,7 +312,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
304
312
|
## [1.34.0] - 2025-12-02
|
|
305
313
|
- Add option to upload code interpreter generated files to the chat.
|
|
306
314
|
|
|
307
|
-
##[1.33.3] - 2025-12-02
|
|
315
|
+
## [1.33.3] - 2025-12-02
|
|
308
316
|
- Fix serialization of ToolBuildConfig `configuration` field.
|
|
309
317
|
|
|
310
318
|
## [1.33.2] - 2025-12-01
|
|
@@ -350,17 +358,17 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
350
358
|
- Add early return in `create_message_log_entry` if chat_service doesn't have assistant_message_id (relevant for agentic
|
|
351
359
|
table)
|
|
352
360
|
|
|
353
|
-
##[1.29.0] - 2025-11-21
|
|
361
|
+
## [1.29.0] - 2025-11-21
|
|
354
362
|
- Add option to force include references in sub agent responses even if unused by main agent response.
|
|
355
363
|
|
|
356
364
|
## [1.28.9] - 2025-11-21
|
|
357
365
|
- Remove `knolwedge_base_service` from DocXGeneratorService
|
|
358
366
|
|
|
359
|
-
##[1.28.8] - 2025-11-20
|
|
367
|
+
## [1.28.8] - 2025-11-20
|
|
360
368
|
- Add query params to api operation
|
|
361
369
|
- Add query params to endpoint builder
|
|
362
370
|
|
|
363
|
-
##[1.28.7] - 2025-11-20
|
|
371
|
+
## [1.28.7] - 2025-11-20
|
|
364
372
|
- Adding Message Step Logger Class to the agentic tools.
|
|
365
373
|
|
|
366
374
|
## [1.28.6] - 2025-11-20
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.3
|
|
2
2
|
Name: unique_toolkit
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.50.1
|
|
4
4
|
Summary:
|
|
5
5
|
License: Proprietary
|
|
6
6
|
Author: Cedric Klinkert
|
|
@@ -21,7 +21,7 @@ Requires-Dist: markdown-it-py (>=4.0.0,<5.0.0)
|
|
|
21
21
|
Requires-Dist: numpy (>=2.4.2,<3.0.0)
|
|
22
22
|
Requires-Dist: openai (>=1.99.9,<2.0.0)
|
|
23
23
|
Requires-Dist: pandas (>=2.3.0,<3.0.0)
|
|
24
|
-
Requires-Dist: pillow (>=
|
|
24
|
+
Requires-Dist: pillow (>=12.1.1)
|
|
25
25
|
Requires-Dist: platformdirs (>=4.0.0,<5.0.0)
|
|
26
26
|
Requires-Dist: pydantic (>=2.8.2,<3.0.0)
|
|
27
27
|
Requires-Dist: pydantic-settings (>=2.10.1,<3.0.0)
|
|
@@ -129,8 +129,16 @@ All notable changes to this project will be documented in this file.
|
|
|
129
129
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
130
130
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
131
131
|
|
|
132
|
+
## [1.50.1] - 2026-03-02
|
|
133
|
+
- Security: upgrade pillow from 10.4.0 to 12.1.1 (CVE / Dependabot alert — out-of-bounds write in PSD loader)
|
|
134
|
+
- Security: upgrade starlette from 0.48.0 to 0.49.1 (Dependabot alert)
|
|
135
|
+
|
|
136
|
+
## [1.50.0] - 2026-03-02
|
|
137
|
+
- Add async download-to-bytes functions: `download_content_to_bytes_async` on `KnowledgeBaseService`, `ContentService`, and `download_chat_content_to_bytes_async` on `ChatService`
|
|
138
|
+
|
|
132
139
|
## [1.49.0] - 2026-03-02
|
|
133
140
|
- Make the code execution tool always available to the agent
|
|
141
|
+
|
|
134
142
|
## [1.48.1] - 2026-03-02
|
|
135
143
|
- Revert `DocxGeneratorConfig` and `DocxGeneratorService` additions from 1.47.11 (broke SWOT tool, pending further testing)
|
|
136
144
|
|
|
@@ -331,7 +339,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
331
339
|
## [1.43.1] - 2026-01-12
|
|
332
340
|
- Remove accidental example report.md from repo
|
|
333
341
|
|
|
334
|
-
##[1.43.0] - 2026-01-11
|
|
342
|
+
## [1.43.0] - 2026-01-11
|
|
335
343
|
- Add `WriteUpAgent` as an experimental service
|
|
336
344
|
|
|
337
345
|
## [1.42.9] - 2026-01-11
|
|
@@ -428,7 +436,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
428
436
|
## [1.34.0] - 2025-12-02
|
|
429
437
|
- Add option to upload code interpreter generated files to the chat.
|
|
430
438
|
|
|
431
|
-
##[1.33.3] - 2025-12-02
|
|
439
|
+
## [1.33.3] - 2025-12-02
|
|
432
440
|
- Fix serialization of ToolBuildConfig `configuration` field.
|
|
433
441
|
|
|
434
442
|
## [1.33.2] - 2025-12-01
|
|
@@ -474,17 +482,17 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
474
482
|
- Add early return in `create_message_log_entry` if chat_service doesn't have assistant_message_id (relevant for agentic
|
|
475
483
|
table)
|
|
476
484
|
|
|
477
|
-
##[1.29.0] - 2025-11-21
|
|
485
|
+
## [1.29.0] - 2025-11-21
|
|
478
486
|
- Add option to force include references in sub agent responses even if unused by main agent response.
|
|
479
487
|
|
|
480
488
|
## [1.28.9] - 2025-11-21
|
|
481
489
|
- Remove `knolwedge_base_service` from DocXGeneratorService
|
|
482
490
|
|
|
483
|
-
##[1.28.8] - 2025-11-20
|
|
491
|
+
## [1.28.8] - 2025-11-20
|
|
484
492
|
- Add query params to api operation
|
|
485
493
|
- Add query params to endpoint builder
|
|
486
494
|
|
|
487
|
-
##[1.28.7] - 2025-11-20
|
|
495
|
+
## [1.28.7] - 2025-11-20
|
|
488
496
|
- Adding Message Step Logger Class to the agentic tools.
|
|
489
497
|
|
|
490
498
|
## [1.28.6] - 2025-11-20
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[tool.poetry]
|
|
2
2
|
name = "unique_toolkit"
|
|
3
|
-
version = "1.
|
|
3
|
+
version = "1.50.1"
|
|
4
4
|
description = ""
|
|
5
5
|
authors = [
|
|
6
6
|
"Cedric Klinkert <cedric.klinkert@unique.ch>",
|
|
@@ -28,7 +28,7 @@ pydantic-settings = "^2.10.1"
|
|
|
28
28
|
sseclient = "^0.0.27"
|
|
29
29
|
openai = "^1.99.9"
|
|
30
30
|
platformdirs = "^4.0.0"
|
|
31
|
-
pillow = "
|
|
31
|
+
pillow = ">=12.1.1"
|
|
32
32
|
unique-sdk = "^0.10.80"
|
|
33
33
|
jambo = "^0.1.2"
|
|
34
34
|
jinja2 = "^3.1.6"
|
|
@@ -56,7 +56,8 @@ langchain-core = "^0.3.0"
|
|
|
56
56
|
optional = true
|
|
57
57
|
|
|
58
58
|
[tool.poetry.group.fastapi.dependencies]
|
|
59
|
-
fastapi = "^0.
|
|
59
|
+
fastapi = "^0.121.0"
|
|
60
|
+
starlette = ">=0.49.1"
|
|
60
61
|
uvicorn = "^0.37.0"
|
|
61
62
|
|
|
62
63
|
[tool.poetry.group.ci.dependencies]
|
|
@@ -84,6 +85,11 @@ pandas = "^2.3.3"
|
|
|
84
85
|
requires = ["poetry-core"]
|
|
85
86
|
build-backend = "poetry.core.masonry.api"
|
|
86
87
|
|
|
88
|
+
[tool.uv]
|
|
89
|
+
constraint-dependencies = [
|
|
90
|
+
"starlette>=0.49.1",
|
|
91
|
+
]
|
|
92
|
+
|
|
87
93
|
[tool.poe.tasks]
|
|
88
94
|
lint = "ruff check ."
|
|
89
95
|
lint-fix = "ruff check . --fix"
|
|
@@ -125,9 +125,9 @@ async def _upload_files_to_container(
|
|
|
125
125
|
logger.info(
|
|
126
126
|
"Uploding file %s to container %s", file.id, memory.container_id
|
|
127
127
|
)
|
|
128
|
-
file_content = content_service.
|
|
128
|
+
file_content = await content_service.download_content_to_bytes_async(
|
|
129
129
|
content_id=file.id, chat_id=chat_id
|
|
130
|
-
)
|
|
130
|
+
)
|
|
131
131
|
|
|
132
132
|
openai_file = await client.containers.files.create(
|
|
133
133
|
container_id=container_id,
|
|
@@ -677,6 +677,39 @@ def request_content_by_id(
|
|
|
677
677
|
return requests.get(url, headers=headers)
|
|
678
678
|
|
|
679
679
|
|
|
680
|
+
async def request_content_by_id_async(
|
|
681
|
+
user_id: str, company_id: str, content_id: str, chat_id: str | None
|
|
682
|
+
) -> httpx.Response:
|
|
683
|
+
"""
|
|
684
|
+
Sends an async request to download content.
|
|
685
|
+
|
|
686
|
+
Args:
|
|
687
|
+
user_id (str): The user ID.
|
|
688
|
+
company_id (str): The company ID.
|
|
689
|
+
content_id (str): The ID of the content to download.
|
|
690
|
+
chat_id (str): The ID of the chat from which to download the content. Defaults to None to download from knowledge base.
|
|
691
|
+
|
|
692
|
+
Returns:
|
|
693
|
+
httpx.Response: The response object containing the downloaded content.
|
|
694
|
+
|
|
695
|
+
"""
|
|
696
|
+
logger.info(f"Requesting content with content_id: {content_id}")
|
|
697
|
+
url = f"{unique_sdk.api_base}/content/{content_id}/file"
|
|
698
|
+
if chat_id:
|
|
699
|
+
url = f"{url}?chatId={chat_id}"
|
|
700
|
+
|
|
701
|
+
headers = {
|
|
702
|
+
"x-api-version": unique_sdk.api_version,
|
|
703
|
+
"x-app-id": unique_sdk.app_id,
|
|
704
|
+
"x-user-id": user_id,
|
|
705
|
+
"x-company-id": company_id,
|
|
706
|
+
"Authorization": "Bearer %s" % (unique_sdk.api_key,),
|
|
707
|
+
}
|
|
708
|
+
|
|
709
|
+
async with httpx.AsyncClient() as client:
|
|
710
|
+
return await client.get(url, headers=headers)
|
|
711
|
+
|
|
712
|
+
|
|
680
713
|
def download_content_to_file_by_id(
|
|
681
714
|
user_id: str,
|
|
682
715
|
company_id: str,
|
|
@@ -747,6 +780,40 @@ def download_content_to_bytes(
|
|
|
747
780
|
return response.content
|
|
748
781
|
|
|
749
782
|
|
|
783
|
+
async def download_content_to_bytes_async(
|
|
784
|
+
user_id: str,
|
|
785
|
+
company_id: str,
|
|
786
|
+
content_id: str,
|
|
787
|
+
chat_id: str | None,
|
|
788
|
+
) -> bytes:
|
|
789
|
+
"""
|
|
790
|
+
Asynchronously downloads content to memory.
|
|
791
|
+
|
|
792
|
+
Args:
|
|
793
|
+
user_id (str): The user ID.
|
|
794
|
+
company_id (str): The company ID.
|
|
795
|
+
content_id (str): The ID of the content to download.
|
|
796
|
+
chat_id (str | None): The chat ID, or None to download from the knowledge base.
|
|
797
|
+
|
|
798
|
+
raises:
|
|
799
|
+
httpx.HTTPStatusError: If the download fails.
|
|
800
|
+
"""
|
|
801
|
+
logger.info(f"Downloading content with content_id: {content_id}")
|
|
802
|
+
response = await request_content_by_id_async(
|
|
803
|
+
user_id, company_id, content_id, chat_id
|
|
804
|
+
)
|
|
805
|
+
|
|
806
|
+
if not response.is_success:
|
|
807
|
+
logger.error(
|
|
808
|
+
"Error downloading file %s: Status code %s",
|
|
809
|
+
content_id,
|
|
810
|
+
response.status_code,
|
|
811
|
+
)
|
|
812
|
+
response.raise_for_status()
|
|
813
|
+
|
|
814
|
+
return response.content
|
|
815
|
+
|
|
816
|
+
|
|
750
817
|
# TODO: Discuss if we should deprecate this method due to unclear use by content_name
|
|
751
818
|
def download_content(
|
|
752
819
|
user_id: str,
|
|
@@ -15,6 +15,7 @@ from unique_toolkit.content.constants import DEFAULT_SEARCH_LANGUAGE
|
|
|
15
15
|
from unique_toolkit.content.functions import (
|
|
16
16
|
download_content,
|
|
17
17
|
download_content_to_bytes,
|
|
18
|
+
download_content_to_bytes_async,
|
|
18
19
|
download_content_to_file_by_id,
|
|
19
20
|
request_content_by_id,
|
|
20
21
|
search_content_chunks,
|
|
@@ -736,6 +737,32 @@ class ContentService:
|
|
|
736
737
|
chat_id=chat_id,
|
|
737
738
|
)
|
|
738
739
|
|
|
740
|
+
async def download_content_to_bytes_async(
|
|
741
|
+
self,
|
|
742
|
+
content_id: str,
|
|
743
|
+
chat_id: str | None = None,
|
|
744
|
+
) -> bytes:
|
|
745
|
+
"""
|
|
746
|
+
Asynchronously downloads content to memory.
|
|
747
|
+
|
|
748
|
+
Args:
|
|
749
|
+
content_id (str): The id of the uploaded content.
|
|
750
|
+
chat_id (Optional[str]): The chat_id, defaults to None.
|
|
751
|
+
|
|
752
|
+
Returns:
|
|
753
|
+
bytes: The downloaded content.
|
|
754
|
+
|
|
755
|
+
Raises:
|
|
756
|
+
Exception: If the download fails.
|
|
757
|
+
"""
|
|
758
|
+
chat_id = chat_id or self._chat_id # type: ignore
|
|
759
|
+
return await download_content_to_bytes_async(
|
|
760
|
+
user_id=self._user_id,
|
|
761
|
+
company_id=self._company_id,
|
|
762
|
+
content_id=content_id,
|
|
763
|
+
chat_id=chat_id,
|
|
764
|
+
)
|
|
765
|
+
|
|
739
766
|
def get_documents_uploaded_to_chat(self) -> list[Content]:
|
|
740
767
|
chat_contents = self.search_contents(
|
|
741
768
|
where={
|
|
@@ -70,6 +70,7 @@ from unique_toolkit.chat.schemas import (
|
|
|
70
70
|
)
|
|
71
71
|
from unique_toolkit.content.functions import (
|
|
72
72
|
download_content_to_bytes,
|
|
73
|
+
download_content_to_bytes_async,
|
|
73
74
|
search_contents,
|
|
74
75
|
upload_content_from_bytes,
|
|
75
76
|
upload_content_from_bytes_async,
|
|
@@ -1736,6 +1737,25 @@ class ChatService(ChatServiceDeprecated):
|
|
|
1736
1737
|
chat_id=self._content_scope_chat_id,
|
|
1737
1738
|
)
|
|
1738
1739
|
|
|
1740
|
+
async def download_chat_content_to_bytes_async(self, *, content_id: str) -> bytes:
|
|
1741
|
+
"""Async download content by id from the content-scope chat (e.g. parent chat when subagent).
|
|
1742
|
+
|
|
1743
|
+
Uses the service's content-scope chat id, so when running as a subagent
|
|
1744
|
+
with correlation, this accesses files from the primary chat session.
|
|
1745
|
+
|
|
1746
|
+
Args:
|
|
1747
|
+
content_id: The content id to download.
|
|
1748
|
+
|
|
1749
|
+
Returns:
|
|
1750
|
+
bytes: The raw content bytes.
|
|
1751
|
+
"""
|
|
1752
|
+
return await download_content_to_bytes_async(
|
|
1753
|
+
user_id=self._user_id,
|
|
1754
|
+
company_id=self._company_id,
|
|
1755
|
+
content_id=content_id,
|
|
1756
|
+
chat_id=self._content_scope_chat_id,
|
|
1757
|
+
)
|
|
1758
|
+
|
|
1739
1759
|
def download_chat_images_and_documents(self) -> tuple[list[Content], list[Content]]:
|
|
1740
1760
|
"""Return images and documents from the content-scope chat (e.g. parent chat when subagent).
|
|
1741
1761
|
|
|
@@ -17,6 +17,7 @@ from unique_toolkit.content.functions import (
|
|
|
17
17
|
delete_content,
|
|
18
18
|
delete_content_async,
|
|
19
19
|
download_content_to_bytes,
|
|
20
|
+
download_content_to_bytes_async,
|
|
20
21
|
download_content_to_file_by_id,
|
|
21
22
|
get_content_info,
|
|
22
23
|
get_folder_info,
|
|
@@ -536,6 +537,31 @@ class KnowledgeBaseService:
|
|
|
536
537
|
chat_id=None,
|
|
537
538
|
)
|
|
538
539
|
|
|
540
|
+
async def download_content_to_bytes_async(
|
|
541
|
+
self,
|
|
542
|
+
*,
|
|
543
|
+
content_id: str,
|
|
544
|
+
) -> bytes:
|
|
545
|
+
"""
|
|
546
|
+
Asynchronously downloads content to memory.
|
|
547
|
+
|
|
548
|
+
Args:
|
|
549
|
+
content_id (str): The id of the uploaded content.
|
|
550
|
+
|
|
551
|
+
Returns:
|
|
552
|
+
bytes: The downloaded content.
|
|
553
|
+
|
|
554
|
+
Raises:
|
|
555
|
+
Exception: If the download fails.
|
|
556
|
+
"""
|
|
557
|
+
|
|
558
|
+
return await download_content_to_bytes_async(
|
|
559
|
+
user_id=self._user_id,
|
|
560
|
+
company_id=self._company_id,
|
|
561
|
+
content_id=content_id,
|
|
562
|
+
chat_id=None,
|
|
563
|
+
)
|
|
564
|
+
|
|
539
565
|
def batch_file_upload(
|
|
540
566
|
self,
|
|
541
567
|
*,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{unique_toolkit-1.49.0 → unique_toolkit-1.50.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.49.0 → unique_toolkit-1.50.1}/unique_toolkit/_common/config_checker/README.md
RENAMED
|
File without changes
|
{unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/_common/config_checker/__init__.py
RENAMED
|
File without changes
|
{unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/_common/config_checker/__main__.py
RENAMED
|
File without changes
|
{unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/_common/config_checker/cli.py
RENAMED
|
File without changes
|
{unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/_common/config_checker/differ.py
RENAMED
|
File without changes
|
{unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/_common/config_checker/exporter.py
RENAMED
|
File without changes
|
{unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/_common/config_checker/models.py
RENAMED
|
File without changes
|
{unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/_common/config_checker/registry.py
RENAMED
|
File without changes
|
{unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/_common/config_checker/validator.py
RENAMED
|
File without changes
|
{unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/_common/default_language_model.py
RENAMED
|
File without changes
|
{unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/_common/docx_generator/__init__.py
RENAMED
|
File without changes
|
{unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/_common/docx_generator/config.py
RENAMED
|
File without changes
|
|
File without changes
|
{unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/_common/docx_generator/schemas.py
RENAMED
|
File without changes
|
{unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/_common/docx_generator/service.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{unique_toolkit-1.49.0 → unique_toolkit-1.50.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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/_common/feature_flags/schema.py
RENAMED
|
File without changes
|
{unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/_common/pydantic/rjsf_tags.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/_common/tests/test_referencing.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/_common/token/image_token_counting.py
RENAMED
|
File without changes
|
{unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/_common/token/token_counting.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/_common/utils/image/encode.py
RENAMED
|
File without changes
|
{unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/_common/utils/jinja/helpers.py
RENAMED
|
File without changes
|
{unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/_common/utils/jinja/render.py
RENAMED
|
File without changes
|
{unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/_common/utils/jinja/schema.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/_common/utils/write_configuration.py
RENAMED
|
File without changes
|
{unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/_common/validate_required_values.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
|
{unique_toolkit-1.49.0 → unique_toolkit-1.50.1}/unique_toolkit/agentic/evaluation/exception.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|