unique_toolkit 2026.20.0.dev34__tar.gz → 2026.20.0rc1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/PKG-INFO +3 -3
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/pyproject.toml +3 -118
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/_common/chunk_relevancy_sorter/service.py +1 -9
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/_common/config_checker/validator.py +8 -8
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/_common/pydantic/rjsf_tags.py +0 -1
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/_common/pydantic_helpers.py +1 -6
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/agentic/history_manager/history_manager.py +5 -1
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/agentic/message_log_manager/service.py +7 -2
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/agentic/tools/a2a/postprocessing/references.py +1 -1
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/agentic/tools/a2a/tool/service.py +2 -2
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/agentic/tools/experimental/__init__.py +0 -8
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/agentic/tools/experimental/todo/config.py +0 -12
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/config.py +2 -10
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/agentic/tools/tool_manager.py +0 -28
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/app/schemas.py +0 -21
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/content/functions.py +5 -32
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/content/schemas.py +1 -6
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/content/service.py +0 -16
- {unique_toolkit-2026.20.0.dev34/unique_toolkit/experimental/resources → unique_toolkit-2026.20.0rc1/unique_toolkit/experimental}/content_folder/__init__.py +3 -13
- {unique_toolkit-2026.20.0.dev34/unique_toolkit/experimental/resources → unique_toolkit-2026.20.0rc1/unique_toolkit/experimental}/content_folder/functions.py +1 -1
- {unique_toolkit-2026.20.0.dev34/unique_toolkit/experimental/resources → unique_toolkit-2026.20.0rc1/unique_toolkit/experimental}/content_folder/schemas.py +2 -2
- {unique_toolkit-2026.20.0.dev34/unique_toolkit/experimental/resources → unique_toolkit-2026.20.0rc1/unique_toolkit/experimental}/content_folder/service.py +4 -4
- {unique_toolkit-2026.20.0.dev34/unique_toolkit/experimental/components → unique_toolkit-2026.20.0rc1/unique_toolkit/experimental}/content_tree/__init__.py +7 -7
- {unique_toolkit-2026.20.0.dev34/unique_toolkit/experimental/components → unique_toolkit-2026.20.0rc1/unique_toolkit/experimental}/content_tree/functions.py +3 -3
- {unique_toolkit-2026.20.0.dev34/unique_toolkit/experimental/components → unique_toolkit-2026.20.0rc1/unique_toolkit/experimental}/content_tree/schemas.py +2 -2
- {unique_toolkit-2026.20.0.dev34/unique_toolkit/experimental/components → unique_toolkit-2026.20.0rc1/unique_toolkit/experimental}/content_tree/service.py +4 -4
- unique_toolkit-2026.20.0rc1/unique_toolkit/experimental/identity/__init__.py +48 -0
- unique_toolkit-2026.20.0rc1/unique_toolkit/experimental/identity/functions.py +579 -0
- {unique_toolkit-2026.20.0.dev34/unique_toolkit/experimental/resources/user → unique_toolkit-2026.20.0rc1/unique_toolkit/experimental/identity}/schemas.py +93 -13
- unique_toolkit-2026.20.0rc1/unique_toolkit/experimental/identity/service.py +715 -0
- unique_toolkit-2026.20.0rc1/unique_toolkit/experimental/scheduled_task/__init__.py +71 -0
- {unique_toolkit-2026.20.0.dev34/unique_toolkit/experimental/resources → unique_toolkit-2026.20.0rc1/unique_toolkit/experimental}/scheduled_task/cron.py +1 -1
- {unique_toolkit-2026.20.0.dev34/unique_toolkit/experimental/resources → unique_toolkit-2026.20.0rc1/unique_toolkit/experimental}/scheduled_task/functions.py +1 -1
- {unique_toolkit-2026.20.0.dev34/unique_toolkit/experimental/resources → unique_toolkit-2026.20.0rc1/unique_toolkit/experimental}/scheduled_task/schemas.py +3 -3
- {unique_toolkit-2026.20.0.dev34/unique_toolkit/experimental/resources → unique_toolkit-2026.20.0rc1/unique_toolkit/experimental}/scheduled_task/service.py +3 -3
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/language_model/infos.py +3 -15
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/services/chat_service.py +37 -205
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/services/factory.py +5 -21
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/services/knowledge_base.py +38 -41
- unique_toolkit-2026.20.0.dev34/unique_toolkit/_common/metadata_filter_scope.py +0 -47
- unique_toolkit-2026.20.0.dev34/unique_toolkit/agentic/message_log_order.py +0 -26
- unique_toolkit-2026.20.0.dev34/unique_toolkit/agentic/tools/a2a/postprocessing/test/test_references.py +0 -93
- unique_toolkit-2026.20.0.dev34/unique_toolkit/agentic/tools/experimental/retrieve_search_scope_tool/__init__.py +0 -13
- unique_toolkit-2026.20.0.dev34/unique_toolkit/agentic/tools/experimental/retrieve_search_scope_tool/config.py +0 -118
- unique_toolkit-2026.20.0.dev34/unique_toolkit/agentic/tools/experimental/retrieve_search_scope_tool/tool.py +0 -191
- unique_toolkit-2026.20.0.dev34/unique_toolkit/agentic/tools/names.py +0 -10
- unique_toolkit-2026.20.0.dev34/unique_toolkit/experimental/README.md +0 -258
- unique_toolkit-2026.20.0.dev34/unique_toolkit/experimental/_internal/__init__.py +0 -21
- unique_toolkit-2026.20.0.dev34/unique_toolkit/experimental/components/__init__.py +0 -30
- unique_toolkit-2026.20.0.dev34/unique_toolkit/experimental/components/_base.py +0 -147
- unique_toolkit-2026.20.0.dev34/unique_toolkit/experimental/components/internal_search/__init__.py +0 -97
- unique_toolkit-2026.20.0.dev34/unique_toolkit/experimental/components/internal_search/base/__init__.py +0 -37
- unique_toolkit-2026.20.0.dev34/unique_toolkit/experimental/components/internal_search/base/config.py +0 -72
- unique_toolkit-2026.20.0.dev34/unique_toolkit/experimental/components/internal_search/base/schemas.py +0 -56
- unique_toolkit-2026.20.0.dev34/unique_toolkit/experimental/components/internal_search/base/service.py +0 -189
- unique_toolkit-2026.20.0.dev34/unique_toolkit/experimental/components/internal_search/base/utils.py +0 -183
- unique_toolkit-2026.20.0.dev34/unique_toolkit/experimental/components/internal_search/chat/__init__.py +0 -9
- unique_toolkit-2026.20.0.dev34/unique_toolkit/experimental/components/internal_search/chat/config.py +0 -27
- unique_toolkit-2026.20.0.dev34/unique_toolkit/experimental/components/internal_search/chat/schemas.py +0 -15
- unique_toolkit-2026.20.0.dev34/unique_toolkit/experimental/components/internal_search/chat/service.py +0 -61
- unique_toolkit-2026.20.0.dev34/unique_toolkit/experimental/components/internal_search/knowledge_base/__init__.py +0 -15
- unique_toolkit-2026.20.0.dev34/unique_toolkit/experimental/components/internal_search/knowledge_base/config.py +0 -61
- unique_toolkit-2026.20.0.dev34/unique_toolkit/experimental/components/internal_search/knowledge_base/schemas.py +0 -41
- unique_toolkit-2026.20.0.dev34/unique_toolkit/experimental/components/internal_search/knowledge_base/service.py +0 -119
- unique_toolkit-2026.20.0.dev34/unique_toolkit/experimental/components/internal_search/post_processing/__init__.py +0 -52
- unique_toolkit-2026.20.0.dev34/unique_toolkit/experimental/components/internal_search/post_processing/config.py +0 -61
- unique_toolkit-2026.20.0.dev34/unique_toolkit/experimental/components/internal_search/post_processing/service.py +0 -199
- unique_toolkit-2026.20.0.dev34/unique_toolkit/experimental/content_tree/__init__.py +0 -35
- unique_toolkit-2026.20.0.dev34/unique_toolkit/experimental/identity/__init__.py +0 -38
- unique_toolkit-2026.20.0.dev34/unique_toolkit/experimental/integrations/__init__.py +0 -12
- unique_toolkit-2026.20.0.dev34/unique_toolkit/experimental/resources/__init__.py +0 -63
- unique_toolkit-2026.20.0.dev34/unique_toolkit/experimental/resources/facades/__init__.py +0 -29
- unique_toolkit-2026.20.0.dev34/unique_toolkit/experimental/resources/facades/identity/__init__.py +0 -51
- unique_toolkit-2026.20.0.dev34/unique_toolkit/experimental/resources/facades/identity/service.py +0 -113
- unique_toolkit-2026.20.0.dev34/unique_toolkit/experimental/resources/group/__init__.py +0 -70
- unique_toolkit-2026.20.0.dev34/unique_toolkit/experimental/resources/group/functions.py +0 -298
- unique_toolkit-2026.20.0.dev34/unique_toolkit/experimental/resources/group/schemas.py +0 -97
- unique_toolkit-2026.20.0.dev34/unique_toolkit/experimental/resources/group/service.py +0 -255
- unique_toolkit-2026.20.0.dev34/unique_toolkit/experimental/resources/scheduled_task/__init__.py +0 -55
- unique_toolkit-2026.20.0.dev34/unique_toolkit/experimental/resources/user/__init__.py +0 -60
- unique_toolkit-2026.20.0.dev34/unique_toolkit/experimental/resources/user/functions.py +0 -285
- unique_toolkit-2026.20.0.dev34/unique_toolkit/experimental/resources/user/service.py +0 -363
- unique_toolkit-2026.20.0.dev34/unique_toolkit/experimental/testing/__init__.py +0 -10
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/README.md +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/__init__.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/_common/__init__.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/_common/_base_service.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/_common/_time_utils.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/_common/api_calling/human_verification_manager.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/_common/base_model_type_attribute.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/_common/chunk_relevancy_sorter/config.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/_common/chunk_relevancy_sorter/exception.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/_common/chunk_relevancy_sorter/schemas.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/_common/chunk_relevancy_sorter/tests/test_service.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/_common/config_checker/README.md +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/_common/config_checker/__init__.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/_common/config_checker/__main__.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/_common/config_checker/cli.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/_common/config_checker/differ.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/_common/config_checker/exporter.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/_common/config_checker/models.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/_common/config_checker/registry.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/_common/default_language_model.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/_common/docx_generator/__init__.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/_common/docx_generator/config.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/_common/docx_generator/pandoc_converter.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/_common/docx_generator/schemas.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/_common/docx_generator/service.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/_common/docx_generator/template/Doc Template.docx +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/_common/endpoint_builder.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/_common/endpoint_requestor.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/_common/event_bus.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/_common/exception.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/_common/execution.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/_common/experimental/endpoint_builder.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/_common/experimental/endpoint_requestor.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/_common/experimental/write_up_agent/README.md +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/_common/experimental/write_up_agent/__init__.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/_common/experimental/write_up_agent/agent.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/_common/experimental/write_up_agent/config.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/_common/experimental/write_up_agent/examples/data.csv +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/_common/experimental/write_up_agent/examples/example_usage.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/_common/experimental/write_up_agent/schemas.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/_common/experimental/write_up_agent/services/__init__.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/_common/experimental/write_up_agent/services/dataframe_handler/__init__.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/_common/experimental/write_up_agent/services/dataframe_handler/exceptions.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/_common/experimental/write_up_agent/services/dataframe_handler/service.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/_common/experimental/write_up_agent/services/dataframe_handler/utils.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/__init__.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/config.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/exceptions.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/prompts/config.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/prompts/system_prompt.j2 +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/prompts/user_prompt.j2 +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/service.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/_common/experimental/write_up_agent/services/template_handler/__init__.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/_common/experimental/write_up_agent/services/template_handler/default_template.j2 +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/_common/experimental/write_up_agent/services/template_handler/exceptions.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/_common/experimental/write_up_agent/services/template_handler/service.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/_common/experimental/write_up_agent/services/template_handler/utils.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/_common/experimental/write_up_agent/utils.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/_common/feature_flags/schema.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/_common/referencing.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/_common/string_utilities.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/_common/tests/test_referencing.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/_common/tests/test_string_utilities.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/_common/token/__init__.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/_common/token/image_token_counting.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/_common/token/token_counting.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/_common/token/tokenizers/deepseek/tokenizer.json +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/_common/token/tokenizers/qwen/tokenizer.json +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/_common/utils/__init__.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/_common/utils/files.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/_common/utils/image/encode.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/_common/utils/jinja/helpers.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/_common/utils/jinja/render.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/_common/utils/jinja/schema.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/_common/utils/jinja/utils.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/_common/utils/structured_output/__init__.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/_common/utils/structured_output/schema.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/_common/utils/write_configuration.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/_common/validate_required_values.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/_common/validators.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/agentic/__init__.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/agentic/debug_info_manager/debug_info_manager.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/agentic/debug_info_manager/test/test_debug_info_manager.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/agentic/evaluation/config.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/agentic/evaluation/context_relevancy/prompts/__init__.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/agentic/evaluation/context_relevancy/prompts/system_prompt.j2 +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/agentic/evaluation/context_relevancy/prompts/user_prompt.j2 +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/agentic/evaluation/context_relevancy/schema.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/agentic/evaluation/context_relevancy/service.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/agentic/evaluation/evaluation_manager.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/agentic/evaluation/exception.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/agentic/evaluation/hallucination/constants.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/agentic/evaluation/hallucination/hallucination_evaluation.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/agentic/evaluation/hallucination/prompts/__init__.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/agentic/evaluation/hallucination/prompts/system_prompt.j2 +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/agentic/evaluation/hallucination/prompts/user_prompt.j2 +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/agentic/evaluation/hallucination/service.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/agentic/evaluation/hallucination/utils.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/agentic/evaluation/output_parser.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/agentic/evaluation/schemas.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/agentic/evaluation/tests/fixtures.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/agentic/evaluation/tests/test_config.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/agentic/evaluation/tests/test_context_relevancy_service.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/agentic/evaluation/tests/test_hallucination_constants.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/agentic/evaluation/tests/test_hallucination_utils.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/agentic/evaluation/tests/test_output_parser.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/agentic/evaluation/tests/test_prompt_loaders.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/agentic/evaluation/utils.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/agentic/feature_flags/__init__.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/agentic/feature_flags/feature_flags.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/agentic/history_manager/history_construction_with_contents.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/agentic/history_manager/loop_token_reducer.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/agentic/history_manager/utils.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/agentic/loop_runner/__init__.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/agentic/loop_runner/_iteration_handler_utils.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/agentic/loop_runner/_responses_iteration_handler_utils.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/agentic/loop_runner/_responses_stream_handler_utils.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/agentic/loop_runner/_stream_handler_utils.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/agentic/loop_runner/base.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/agentic/loop_runner/middleware/__init__.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/agentic/loop_runner/middleware/planning/__init__.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/agentic/loop_runner/middleware/planning/planning.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/agentic/loop_runner/middleware/planning/schema.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/agentic/loop_runner/runners/__init__.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/agentic/loop_runner/runners/basic.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/agentic/loop_runner/runners/mistral/__init__.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/agentic/loop_runner/runners/mistral/mistral_runner.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/agentic/loop_runner/runners/qwen/__init__.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/agentic/loop_runner/runners/qwen/helpers.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/agentic/loop_runner/runners/qwen/qwen_runner.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/agentic/message_log_manager/__init__.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/agentic/postprocessor/postprocessor_manager.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/agentic/reference_manager/reference_manager.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/agentic/responses_api/__init__.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/agentic/responses_api/postprocessors/code_display.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/agentic/responses_api/postprocessors/generated_files.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/agentic/responses_api/stream_handler.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/agentic/short_term_memory_manager/persistent_short_term_memory_manager.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/agentic/thinking_manager/thinking_manager.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/agentic/tools/__init__.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/agentic/tools/a2a/__init__.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/agentic/tools/a2a/config.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/agentic/tools/a2a/evaluation/__init__.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/agentic/tools/a2a/evaluation/_utils.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/agentic/tools/a2a/evaluation/config.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/agentic/tools/a2a/evaluation/evaluator.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/agentic/tools/a2a/evaluation/summarization_user_message.j2 +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/agentic/tools/a2a/manager.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/agentic/tools/a2a/postprocessing/__init__.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/agentic/tools/a2a/postprocessing/_display_utils.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/agentic/tools/a2a/postprocessing/_ref_utils.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/agentic/tools/a2a/postprocessing/config.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/agentic/tools/a2a/postprocessing/display.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/agentic/tools/a2a/postprocessing/test/test_display.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/agentic/tools/a2a/postprocessing/test/test_display_utils.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/agentic/tools/a2a/postprocessing/test/test_ref_utils.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/agentic/tools/a2a/prompts.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/agentic/tools/a2a/response_watcher/__init__.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/agentic/tools/a2a/response_watcher/service.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/agentic/tools/a2a/tool/__init__.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/agentic/tools/a2a/tool/_memory.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/agentic/tools/a2a/tool/_schema.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/agentic/tools/a2a/tool/config.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/agentic/tools/a2a/tool/test/test_service_utils.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/agentic/tools/agent_chunks_hanlder.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/agentic/tools/config.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/agentic/tools/experimental/open_file_tool/__init__.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/agentic/tools/experimental/open_file_tool/config.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/agentic/tools/experimental/open_file_tool/runtime.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/agentic/tools/experimental/open_file_tool/tool.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/agentic/tools/experimental/todo/__init__.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/agentic/tools/experimental/todo/prompts/__init__.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/agentic/tools/experimental/todo/prompts/execution_reminder.j2 +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/agentic/tools/experimental/todo/prompts/system_prompt.j2 +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/agentic/tools/experimental/todo/prompts/tool_description.j2 +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/agentic/tools/experimental/todo/prompts/verification_nudge.j2 +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/agentic/tools/experimental/todo/schemas.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/agentic/tools/experimental/todo/service.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/agentic/tools/factory.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/agentic/tools/mcp/__init__.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/agentic/tools/mcp/manager.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/agentic/tools/mcp/models.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/agentic/tools/mcp/tool_wrapper.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/agentic/tools/openai_builtin/__init__.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/agentic/tools/openai_builtin/base.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/__init__.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/postprocessors/__init__.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/postprocessors/code_display.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/postprocessors/generated_files.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/schemas.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/service.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/agentic/tools/openai_builtin/manager.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/agentic/tools/schemas.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/agentic/tools/test/test_mcp_manager.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/agentic/tools/test/test_tool_progress_reporter.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/agentic/tools/tool.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/agentic/tools/tool_progress_reporter.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/agentic/tools/utils/__init__.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/agentic/tools/utils/source_handling/__init__.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/agentic/tools/utils/source_handling/schema.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/agentic/tools/utils/source_handling/source_formatting.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/agentic/tools/utils/source_handling/tests/test_source_formatting.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/agentic_table/__init__.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/agentic_table/schemas.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/agentic_table/service.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/app/__init__.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/app/chat_event_filter_options_settings.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/app/dev_util.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/app/fast_api_factory.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/app/feature_flags.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/app/find_env_file.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/app/init_logging.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/app/init_sdk.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/app/performance/async_tasks.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/app/performance/async_wrapper.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/app/unique_settings.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/app/verification.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/app/webhook.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/chat/__init__.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/chat/cancellation.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/chat/constants.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/chat/deprecated/service.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/chat/functions.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/chat/rendering.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/chat/responses_api.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/chat/schemas.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/chat/service.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/chat/state.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/chat/utils.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/content/__init__.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/content/constants.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/content/smart_rules.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/content/utils.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/data_extraction/README.md +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/data_extraction/__init__.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/data_extraction/augmented/__init__.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/data_extraction/augmented/service.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/data_extraction/base.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/data_extraction/basic/__init__.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/data_extraction/basic/config.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/data_extraction/basic/prompt.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/data_extraction/basic/service.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/elicitation/__init__.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/elicitation/constants.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/elicitation/exceptions.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/elicitation/functions.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/elicitation/schemas.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/elicitation/service.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/embedding/__init__.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/embedding/constants.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/embedding/functions.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/embedding/schemas.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/embedding/service.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/embedding/utils.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/experimental/__init__.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/framework_utilities/__init__.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/framework_utilities/langchain/__init__.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/framework_utilities/langchain/client.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/framework_utilities/langchain/history.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/framework_utilities/openai/__init__.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/framework_utilities/openai/client.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/framework_utilities/openai/message_builder.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/framework_utilities/utils.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/language_model/__init__.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/language_model/_responses_api_utils.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/language_model/builder.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/language_model/constants.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/language_model/default_language_model.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/language_model/functions.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/language_model/prompt.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/language_model/reference.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/language_model/schemas.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/language_model/service.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/language_model/stream_transform.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/language_model/utils.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/monitoring/__init__.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/monitoring/middleware.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/monitoring/registry.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/protocols/support.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/services/__init__.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/short_term_memory/__init__.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/short_term_memory/constants.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/short_term_memory/functions.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/short_term_memory/schemas.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/short_term_memory/service.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/smart_rules/__init__.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/smart_rules/compile.py +0 -0
- {unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/test_utilities/events.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.3
|
|
2
2
|
Name: unique-toolkit
|
|
3
|
-
Version: 2026.20.
|
|
3
|
+
Version: 2026.20.0rc1
|
|
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>
|
|
@@ -10,13 +10,13 @@ Requires-Dist: pydantic>=2.11.0,<3
|
|
|
10
10
|
Requires-Dist: pyhumps>=3.8.0,<4
|
|
11
11
|
Requires-Dist: numpy>=2.4.2,<3
|
|
12
12
|
Requires-Dist: tiktoken>=0.12.0,<0.13
|
|
13
|
-
Requires-Dist: tokenizers>=0.21.0,<0.
|
|
13
|
+
Requires-Dist: tokenizers>=0.21.0,<0.22
|
|
14
14
|
Requires-Dist: pydantic-settings>=2.10.1,<3
|
|
15
15
|
Requires-Dist: sseclient>=0.0.27,<0.0.28
|
|
16
16
|
Requires-Dist: openai>=1.105.0,<3
|
|
17
17
|
Requires-Dist: platformdirs>=4.0.0,<5
|
|
18
18
|
Requires-Dist: pillow>=12.1.1
|
|
19
|
-
Requires-Dist: unique-sdk
|
|
19
|
+
Requires-Dist: unique-sdk==2026.20.0rc1
|
|
20
20
|
Requires-Dist: jambo>=0.1.2,<0.2
|
|
21
21
|
Requires-Dist: jinja2>=3.1.6,<4
|
|
22
22
|
Requires-Dist: docxtpl>=0.20.1,<0.21
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "unique_toolkit"
|
|
3
|
-
version = "2026.20.
|
|
3
|
+
version = "2026.20.0rc1"
|
|
4
4
|
description = ""
|
|
5
5
|
readme = "README.md"
|
|
6
6
|
requires-python = ">=3.12"
|
|
@@ -22,13 +22,13 @@ dependencies = [
|
|
|
22
22
|
"pyhumps>=3.8.0,<4",
|
|
23
23
|
"numpy>=2.4.2,<3",
|
|
24
24
|
"tiktoken>=0.12.0,<0.13",
|
|
25
|
-
"tokenizers>=0.21.0,<0.
|
|
25
|
+
"tokenizers>=0.21.0,<0.22",
|
|
26
26
|
"pydantic-settings>=2.10.1,<3",
|
|
27
27
|
"sseclient>=0.0.27,<0.0.28",
|
|
28
28
|
"openai>=1.105.0,<3",
|
|
29
29
|
"platformdirs>=4.0.0,<5",
|
|
30
30
|
"pillow>=12.1.1",
|
|
31
|
-
"unique-sdk
|
|
31
|
+
"unique-sdk==2026.20.0rc1",
|
|
32
32
|
"jambo>=0.1.2,<0.2",
|
|
33
33
|
"jinja2>=3.1.6,<4",
|
|
34
34
|
"docxtpl>=0.20.1,<0.21",
|
|
@@ -91,7 +91,6 @@ format = "ruff format ."
|
|
|
91
91
|
test = "pytest"
|
|
92
92
|
typecheck = "basedpyright"
|
|
93
93
|
depcheck = "deptry ."
|
|
94
|
-
check-imports = "lint-imports"
|
|
95
94
|
coverage = "pytest --cov=unique_toolkit --cov-report=term-missing"
|
|
96
95
|
ci-typecheck = { shell = "bash $(git rev-parse --show-toplevel)/.github/scripts/dev.sh typecheck" }
|
|
97
96
|
ci-coverage = { shell = "bash $(git rev-parse --show-toplevel)/.github/scripts/dev.sh coverage" }
|
|
@@ -119,120 +118,6 @@ extend_exclude = ["docs", "tests", "unique_toolkit/.*/test", "unique_toolkit/.*/
|
|
|
119
118
|
DEP002 = ["langchain", "fastapi", "starlette", "uvicorn"]
|
|
120
119
|
DEP004 = ["langchain_openai", "langchain_core"]
|
|
121
120
|
|
|
122
|
-
# -----------------------------------------------------------------------------
|
|
123
|
-
# import-linter — enforces the layered architecture documented in
|
|
124
|
-
# unique_toolkit/experimental/README.md. Contracts are scoped to the
|
|
125
|
-
# experimental/ subpackage; the rest of the toolkit keeps its existing
|
|
126
|
-
# (un-layered) shape until modules graduate into the new layout.
|
|
127
|
-
#
|
|
128
|
-
# Run: uv run poe check-imports (or: uv run lint-imports)
|
|
129
|
-
#
|
|
130
|
-
# Rules encoded below:
|
|
131
|
-
# 1. integrations → resources → _internal (layers)
|
|
132
|
-
# 2. components → resources → _internal (layers; peer of integrations)
|
|
133
|
-
# 3. components never import integrations (keeps orchestration framework-agnostic)
|
|
134
|
-
# 4. primitive resources are mutually independent
|
|
135
|
-
# 5. primitives never import facades (dependency direction inside resources/)
|
|
136
|
-
# 6. facades compose primitives only — never unique_sdk / components / integrations
|
|
137
|
-
# 7. components never call unique_sdk directly (go through a resource)
|
|
138
|
-
# 8. each integrations/<framework>/ stands alone — enabled when real modules land
|
|
139
|
-
#
|
|
140
|
-
# Preference rules from the README that are NOT machine-enforced (import-linter
|
|
141
|
-
# is pass/fail, not tiered): integrations prefer facades over primitives;
|
|
142
|
-
# integrations importing components is "discouraged but allowed".
|
|
143
|
-
# -----------------------------------------------------------------------------
|
|
144
|
-
[tool.importlinter]
|
|
145
|
-
root_packages = ["unique_toolkit"]
|
|
146
|
-
include_external_packages = true
|
|
147
|
-
|
|
148
|
-
[[tool.importlinter.contracts]]
|
|
149
|
-
name = "experimental: integrations stack (integrations → resources → _internal)"
|
|
150
|
-
type = "layers"
|
|
151
|
-
layers = [
|
|
152
|
-
"unique_toolkit.experimental.integrations",
|
|
153
|
-
"unique_toolkit.experimental.resources",
|
|
154
|
-
"unique_toolkit.experimental._internal",
|
|
155
|
-
]
|
|
156
|
-
|
|
157
|
-
[[tool.importlinter.contracts]]
|
|
158
|
-
name = "experimental: components stack (components → resources → _internal)"
|
|
159
|
-
type = "layers"
|
|
160
|
-
layers = [
|
|
161
|
-
"unique_toolkit.experimental.components",
|
|
162
|
-
"unique_toolkit.experimental.resources",
|
|
163
|
-
"unique_toolkit.experimental._internal",
|
|
164
|
-
]
|
|
165
|
-
|
|
166
|
-
[[tool.importlinter.contracts]]
|
|
167
|
-
name = "experimental: components never import integrations"
|
|
168
|
-
type = "forbidden"
|
|
169
|
-
source_modules = ["unique_toolkit.experimental.components"]
|
|
170
|
-
forbidden_modules = ["unique_toolkit.experimental.integrations"]
|
|
171
|
-
|
|
172
|
-
[[tool.importlinter.contracts]]
|
|
173
|
-
name = "experimental: primitive resources are independent"
|
|
174
|
-
type = "independence"
|
|
175
|
-
modules = [
|
|
176
|
-
"unique_toolkit.experimental.resources.user",
|
|
177
|
-
"unique_toolkit.experimental.resources.group",
|
|
178
|
-
"unique_toolkit.experimental.resources.content_folder",
|
|
179
|
-
"unique_toolkit.experimental.resources.scheduled_task",
|
|
180
|
-
]
|
|
181
|
-
|
|
182
|
-
[[tool.importlinter.contracts]]
|
|
183
|
-
name = "experimental: primitives never import facades"
|
|
184
|
-
type = "forbidden"
|
|
185
|
-
source_modules = [
|
|
186
|
-
"unique_toolkit.experimental.resources.user",
|
|
187
|
-
"unique_toolkit.experimental.resources.group",
|
|
188
|
-
"unique_toolkit.experimental.resources.content_folder",
|
|
189
|
-
"unique_toolkit.experimental.resources.scheduled_task",
|
|
190
|
-
]
|
|
191
|
-
forbidden_modules = ["unique_toolkit.experimental.resources.facades"]
|
|
192
|
-
|
|
193
|
-
[[tool.importlinter.contracts]]
|
|
194
|
-
name = "experimental: facades never import other facades"
|
|
195
|
-
type = "independence"
|
|
196
|
-
modules = ["unique_toolkit.experimental.resources.facades.*"]
|
|
197
|
-
|
|
198
|
-
[[tool.importlinter.contracts]]
|
|
199
|
-
name = "experimental: facades compose primitives only"
|
|
200
|
-
type = "forbidden"
|
|
201
|
-
source_modules = ["unique_toolkit.experimental.resources.facades"]
|
|
202
|
-
forbidden_modules = [
|
|
203
|
-
"unique_sdk",
|
|
204
|
-
"unique_toolkit.experimental.components",
|
|
205
|
-
"unique_toolkit.experimental.integrations",
|
|
206
|
-
]
|
|
207
|
-
# Facades legitimately reach `unique_sdk` transitively through primitive
|
|
208
|
-
# resources (that's the whole point). This flag restricts the check to
|
|
209
|
-
# *direct* `import unique_sdk` statements inside facade modules.
|
|
210
|
-
allow_indirect_imports = true
|
|
211
|
-
|
|
212
|
-
[[tool.importlinter.contracts]]
|
|
213
|
-
name = "experimental: components never call unique_sdk directly"
|
|
214
|
-
type = "forbidden"
|
|
215
|
-
source_modules = ["unique_toolkit.experimental.components"]
|
|
216
|
-
forbidden_modules = ["unique_sdk"]
|
|
217
|
-
# Components are allowed to reach `unique_sdk` indirectly through a
|
|
218
|
-
# resource or an existing toolkit service; the rule only bans a *direct*
|
|
219
|
-
# `import unique_sdk` inside a component module.
|
|
220
|
-
allow_indirect_imports = true
|
|
221
|
-
|
|
222
|
-
# Uncomment and populate once concrete integrations exist under
|
|
223
|
-
# unique_toolkit/experimental/integrations/<framework>/.
|
|
224
|
-
# [[tool.importlinter.contracts]]
|
|
225
|
-
# name = "experimental: integrations are mutually independent"
|
|
226
|
-
# type = "independence"
|
|
227
|
-
# modules = [
|
|
228
|
-
# "unique_toolkit.experimental.integrations.openai",
|
|
229
|
-
# "unique_toolkit.experimental.integrations.langchain",
|
|
230
|
-
# ]
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
121
|
[tool.ruff]
|
|
237
122
|
target-version = "py312"
|
|
238
123
|
exclude = [".venv", "docs"]
|
|
@@ -3,7 +3,7 @@ import time
|
|
|
3
3
|
from collections import Counter
|
|
4
4
|
from typing import Any, overload
|
|
5
5
|
|
|
6
|
-
from typing_extensions import
|
|
6
|
+
from typing_extensions import deprecated
|
|
7
7
|
|
|
8
8
|
from unique_toolkit._common.chunk_relevancy_sorter.config import (
|
|
9
9
|
ChunkRelevancySortConfig,
|
|
@@ -39,7 +39,6 @@ from unique_toolkit.agentic.evaluation.schemas import (
|
|
|
39
39
|
)
|
|
40
40
|
from unique_toolkit.app.performance.async_tasks import run_async_tasks_parallel
|
|
41
41
|
from unique_toolkit.app.schemas import BaseEvent, ChatEvent
|
|
42
|
-
from unique_toolkit.app.unique_settings import UniqueSettings
|
|
43
42
|
from unique_toolkit.content.schemas import ContentChunk
|
|
44
43
|
from unique_toolkit.language_model.infos import LanguageModelInfo
|
|
45
44
|
|
|
@@ -85,13 +84,6 @@ class ChunkRelevancySorter:
|
|
|
85
84
|
def from_event(cls, event: ChatEvent | BaseEvent[Any]):
|
|
86
85
|
return cls(company_id=event.company_id, user_id=event.user_id)
|
|
87
86
|
|
|
88
|
-
@classmethod
|
|
89
|
-
def from_settings(cls, settings: UniqueSettings) -> Self:
|
|
90
|
-
return cls(
|
|
91
|
-
company_id=settings.authcontext.get_confidential_company_id(),
|
|
92
|
-
user_id=settings.authcontext.get_confidential_user_id(),
|
|
93
|
-
)
|
|
94
|
-
|
|
95
87
|
async def run(
|
|
96
88
|
self,
|
|
97
89
|
input_text: str,
|
|
@@ -288,20 +288,20 @@ class ConfigValidator:
|
|
|
288
288
|
# Get the old value from original JSON
|
|
289
289
|
old_value = None
|
|
290
290
|
try:
|
|
291
|
-
|
|
291
|
+
current = original_json
|
|
292
292
|
for key in loc:
|
|
293
|
-
if isinstance(
|
|
294
|
-
|
|
295
|
-
elif isinstance(
|
|
293
|
+
if isinstance(current, dict) and isinstance(key, str):
|
|
294
|
+
current = current.get(key)
|
|
295
|
+
elif isinstance(current, list) and isinstance(key, int):
|
|
296
296
|
try:
|
|
297
|
-
|
|
297
|
+
current = current[key]
|
|
298
298
|
except (IndexError, TypeError):
|
|
299
|
-
|
|
299
|
+
current = None
|
|
300
300
|
break
|
|
301
301
|
else:
|
|
302
|
-
|
|
302
|
+
current = None
|
|
303
303
|
break
|
|
304
|
-
old_value =
|
|
304
|
+
old_value = current
|
|
305
305
|
except Exception:
|
|
306
306
|
pass
|
|
307
307
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import logging
|
|
2
2
|
import warnings
|
|
3
|
-
from typing import
|
|
3
|
+
from typing import Any, TypeVar, Unpack
|
|
4
4
|
|
|
5
5
|
import humps
|
|
6
6
|
from pydantic import BaseModel, BeforeValidator, ConfigDict, Field, create_model
|
|
@@ -33,11 +33,6 @@ BeforeValidator to replace an incoming None with the field's declared default.
|
|
|
33
33
|
"""
|
|
34
34
|
NoneToDefault = BeforeValidator(_none_to_default)
|
|
35
35
|
|
|
36
|
-
DeactivatedNone = Annotated[
|
|
37
|
-
None,
|
|
38
|
-
Field(title="Deactivated", description="None"),
|
|
39
|
-
]
|
|
40
|
-
|
|
41
36
|
|
|
42
37
|
def get_configuration_dict(**kwargs: Unpack[ConfigDict]) -> ConfigDict:
|
|
43
38
|
base: dict[str, object] = {
|
|
@@ -8,7 +8,6 @@ from pydantic import BaseModel, Field
|
|
|
8
8
|
from unique_toolkit._common.feature_flags.schema import (
|
|
9
9
|
FeatureExtendedSourceSerialization,
|
|
10
10
|
)
|
|
11
|
-
from unique_toolkit._common.pydantic_helpers import DeactivatedNone
|
|
12
11
|
from unique_toolkit._common.validators import LMI
|
|
13
12
|
from unique_toolkit.agentic.history_manager.loop_token_reducer import LoopTokenReducer
|
|
14
13
|
from unique_toolkit.agentic.history_manager.utils import (
|
|
@@ -31,6 +30,11 @@ from unique_toolkit.language_model.schemas import (
|
|
|
31
30
|
LanguageModelToolMessage,
|
|
32
31
|
)
|
|
33
32
|
|
|
33
|
+
DeactivatedNone = Annotated[
|
|
34
|
+
None,
|
|
35
|
+
Field(title="Deactivated", description="None"),
|
|
36
|
+
]
|
|
37
|
+
|
|
34
38
|
|
|
35
39
|
class UploadedContentConfig(BaseModel):
|
|
36
40
|
model_config = get_configuration_dict()
|
|
@@ -4,9 +4,9 @@ Logger Service for Unique Agentic tools.
|
|
|
4
4
|
Target of the method is to extend the step tracking on all levels of the tool.
|
|
5
5
|
"""
|
|
6
6
|
|
|
7
|
+
from collections import defaultdict
|
|
7
8
|
from logging import getLogger
|
|
8
9
|
|
|
9
|
-
from unique_toolkit.agentic.message_log_order import next_message_log_order
|
|
10
10
|
from unique_toolkit.chat.schemas import (
|
|
11
11
|
MessageLog,
|
|
12
12
|
MessageLogDetails,
|
|
@@ -18,6 +18,10 @@ from unique_toolkit.content.schemas import ContentReference
|
|
|
18
18
|
|
|
19
19
|
_LOGGER = getLogger(__name__)
|
|
20
20
|
|
|
21
|
+
# Per-request counters for message log ordering - keyed by message_id
|
|
22
|
+
# This is a mandatory global variable since we have in the system a bug which makes it impossible to use it as a proper class variable.
|
|
23
|
+
_request_counters = defaultdict(int)
|
|
24
|
+
|
|
21
25
|
|
|
22
26
|
class MessageStepLogger:
|
|
23
27
|
"""
|
|
@@ -51,7 +55,8 @@ class MessageStepLogger:
|
|
|
51
55
|
Next order number for this specific request
|
|
52
56
|
"""
|
|
53
57
|
|
|
54
|
-
|
|
58
|
+
_request_counters[message_id] += 1
|
|
59
|
+
return _request_counters[message_id]
|
|
55
60
|
|
|
56
61
|
def create_message_log_entry(
|
|
57
62
|
self,
|
|
@@ -198,7 +198,7 @@ class SubAgentTool(Tool[SubAgentToolConfig]):
|
|
|
198
198
|
)
|
|
199
199
|
|
|
200
200
|
active_message_log = self._create_or_update_message_log(
|
|
201
|
-
progress_message=f"
|
|
201
|
+
progress_message=f"_Executing sub agent with input: {tool_input}_",
|
|
202
202
|
active_message_log=active_message_log,
|
|
203
203
|
)
|
|
204
204
|
|
|
@@ -268,7 +268,7 @@ class SubAgentTool(Tool[SubAgentToolConfig]):
|
|
|
268
268
|
|
|
269
269
|
# Update message log entry to completed
|
|
270
270
|
active_message_log = self._create_or_update_message_log(
|
|
271
|
-
progress_message=f"
|
|
271
|
+
progress_message=f"_Completed sub agent with input: {tool_input}_",
|
|
272
272
|
status=MessageLogStatus.COMPLETED,
|
|
273
273
|
active_message_log=active_message_log,
|
|
274
274
|
)
|
|
@@ -3,11 +3,6 @@ from unique_toolkit.agentic.tools.experimental.open_file_tool import (
|
|
|
3
3
|
OpenFileToolRuntime,
|
|
4
4
|
OpenFileToolRuntimeConfig,
|
|
5
5
|
)
|
|
6
|
-
from unique_toolkit.agentic.tools.experimental.retrieve_search_scope_tool import (
|
|
7
|
-
DisplayMode,
|
|
8
|
-
RetrieveSearchScopeConfig,
|
|
9
|
-
RetrieveSearchScopeTool,
|
|
10
|
-
)
|
|
11
6
|
from unique_toolkit.agentic.tools.experimental.todo import (
|
|
12
7
|
TodoConfig,
|
|
13
8
|
TodoItem,
|
|
@@ -19,12 +14,9 @@ from unique_toolkit.agentic.tools.experimental.todo import (
|
|
|
19
14
|
)
|
|
20
15
|
|
|
21
16
|
__all__ = [
|
|
22
|
-
"DisplayMode",
|
|
23
17
|
"OpenFileTool",
|
|
24
18
|
"OpenFileToolRuntime",
|
|
25
19
|
"OpenFileToolRuntimeConfig",
|
|
26
|
-
"RetrieveSearchScopeConfig",
|
|
27
|
-
"RetrieveSearchScopeTool",
|
|
28
20
|
"TodoConfig",
|
|
29
21
|
"TodoItem",
|
|
30
22
|
"TodoItemInput",
|
|
@@ -13,18 +13,6 @@ from unique_toolkit.agentic.tools.schemas import BaseToolConfig
|
|
|
13
13
|
|
|
14
14
|
|
|
15
15
|
class TodoConfig(BaseToolConfig):
|
|
16
|
-
enabled: Annotated[
|
|
17
|
-
bool,
|
|
18
|
-
RJSFMetaTag.BooleanWidget.checkbox(
|
|
19
|
-
help=(
|
|
20
|
-
"Enable the Todo tool. When enabled, the agent can track tasks and update their status."
|
|
21
|
-
),
|
|
22
|
-
),
|
|
23
|
-
] = Field(
|
|
24
|
-
default=False,
|
|
25
|
-
description="Enable the Todo tool.",
|
|
26
|
-
)
|
|
27
|
-
|
|
28
16
|
display_name: str = Field(
|
|
29
17
|
default="Progress",
|
|
30
18
|
description="Human-readable label for task tracking shown in the Steps panel.",
|
|
@@ -68,9 +68,6 @@ Handling User Queries:
|
|
|
68
68
|
# collapse when chat auto-measures the embedded document. Remaining gaps belong in the
|
|
69
69
|
# Next.js monorepo `HtmlRendering` component (e.g. respect declared dimensions, harden
|
|
70
70
|
# postMessage sizing, iframe sandbox/CSP and WebGL when product wants full fidelity).
|
|
71
|
-
# UN-19880: kaleido is not installed in the Azure OpenAI code interpreter environment,
|
|
72
|
-
# so plotly's fig.write_image() always fails. The "Visualization library choice" section
|
|
73
|
-
# steers the model to use matplotlib for PNG outputs and plotly only for HTML artifacts.
|
|
74
71
|
DEFAULT_TOOL_DESCRIPTION_FOR_SYSTEM_PROMPT_FENCE = """
|
|
75
72
|
Use this tool to run python code, e.g to generate plots, process excel files, perform calculations, etc.
|
|
76
73
|
|
|
@@ -79,7 +76,7 @@ Instructions:
|
|
|
79
76
|
Uploaded and generated files:
|
|
80
77
|
- All files uploaded to the chat are available at the path `/mnt/data/<filename>`.
|
|
81
78
|
- All files generated through code MUST be saved in the `/mnt/data` folder.
|
|
82
|
-
- CRITICAL: When generating any plot or visualization
|
|
79
|
+
- CRITICAL: When generating any plot or visualization, the code MUST call `plt.savefig('/mnt/data/<filename>.png', bbox_inches='tight')` and `plt.close()` to save the file. Never rely on `plt.show()` alone — a file that is not saved to `/mnt/data/` cannot be displayed.
|
|
83
80
|
|
|
84
81
|
CRUCIAL Instructions for displaying images and files in the chat:
|
|
85
82
|
- Once files are generated in the `/mnt/data` folder you MUST reference them in the chat using markdown syntax in order to display them in the chat.
|
|
@@ -97,11 +94,6 @@ IMPORTANT: ALWAYS place a blank line before AND after each file reference link s
|
|
|
97
94
|
- Only the following file types are allowed to be uploaded to the platform, anything else will FAIL: PDF, DOCX, XLSX, PPTX, CSV, HTML, MD, TXT, PNG, JPG, JPEG.
|
|
98
95
|
- You MUST always use this syntax, otherwise the files will not be displayed in the chat.
|
|
99
96
|
|
|
100
|
-
Visualization library choice — CRITICAL:
|
|
101
|
-
- For static image outputs (PNG): ALWAYS use **matplotlib**. NEVER use plotly to produce a PNG — `fig.write_image()` requires the `kaleido` package which is NOT installed in this environment and will always raise an error.
|
|
102
|
-
- For interactive visualizations (HTML): ALWAYS use **plotly**. Save with `fig.write_html(path, full_html=True, include_plotlyjs="cdn", default_height="600px")`. Do NOT use matplotlib for HTML artifacts.
|
|
103
|
-
- If a user explicitly asks for a plotly chart as an image, produce an equivalent **matplotlib** PNG and briefly explain that static plotly export is not supported here.
|
|
104
|
-
|
|
105
97
|
HTML files — CRITICAL rules:
|
|
106
98
|
- NEVER write raw HTML markup directly in your text response. HTML content MUST only ever appear as a saved `.html` file in `/mnt/data/`.
|
|
107
99
|
- Whenever you create HTML (dashboards, charts, tables, reports, interactive widgets), you MUST save it as a `.html` file and reference it using the sandbox link format above.
|
|
@@ -125,7 +117,7 @@ HTML files — CRITICAL rules:
|
|
|
125
117
|
|
|
126
118
|
Handling User Queries:
|
|
127
119
|
- Whenever the user query requires using the python tool, you must always think first about the steps required.
|
|
128
|
-
- CRITICAL: If any step generates a plot or visualization
|
|
120
|
+
- CRITICAL: If any step generates a plot or visualization, that code block MUST include `plt.savefig('/mnt/data/<filename>.png', bbox_inches='tight')` and `plt.close()` as the final lines. Code that only calls `plt.show()` without saving will NOT display the image to the user.
|
|
129
121
|
- CRITICAL: NEVER reference a `sandbox:/mnt/data/<filename>` link unless you have already executed code in this response that saved that exact file. Referencing a file that was not created by executed code will result in a broken link.
|
|
130
122
|
- CRITICAL: The sandbox has NO internet access. NEVER use `requests`, `httpx`, `urllib`, or any other HTTP library to fetch data from the web — these calls will always fail. If the user's query requires live web data (e.g. market prices, news, APIs), you MUST retrieve it using the web search tool first and then pass the result into the code interpreter.
|
|
131
123
|
- CRITICAL: For Excel files (`.xls`, `.xlsx`) and CSV files uploaded to the chat, ALWAYS use this tool to read and process them (e.g. `pandas.read_excel`, `pandas.read_csv`, `openpyxl`). Do NOT rely on the chat's text content or prior ingestion for spreadsheet data — the raw file contents are only accessible via code execution from `/mnt/data/<filename>`.
|
|
@@ -22,10 +22,6 @@ from unique_toolkit.agentic.tools.a2a import A2AManager, SubAgentTool
|
|
|
22
22
|
from unique_toolkit.agentic.tools.config import ToolBuildConfig
|
|
23
23
|
from unique_toolkit.agentic.tools.factory import ToolFactory
|
|
24
24
|
from unique_toolkit.agentic.tools.mcp.manager import MCPManager
|
|
25
|
-
from unique_toolkit.agentic.tools.names import (
|
|
26
|
-
INTERNAL_SEARCH_TOOL_NAME,
|
|
27
|
-
UPLOADED_SEARCH_TOOL_NAME,
|
|
28
|
-
)
|
|
29
25
|
from unique_toolkit.agentic.tools.openai_builtin.base import (
|
|
30
26
|
OpenAIBuiltInTool,
|
|
31
27
|
OpenAIBuiltInToolName,
|
|
@@ -167,9 +163,6 @@ class _ToolManager(Generic[_ApiMode]):
|
|
|
167
163
|
# is the tool exclusive and has been choosen by the user?
|
|
168
164
|
if t.is_exclusive() and len(tool_choices) > 0 and t.name in tool_choices:
|
|
169
165
|
self._tools = [t] # override all other tools
|
|
170
|
-
self._restore_uploaded_search_for_internal_search_if_available(
|
|
171
|
-
exclusive_tool=t
|
|
172
|
-
)
|
|
173
166
|
break
|
|
174
167
|
# if the tool is exclusive but no tool choices are given, skip it
|
|
175
168
|
if t.is_exclusive():
|
|
@@ -177,27 +170,6 @@ class _ToolManager(Generic[_ApiMode]):
|
|
|
177
170
|
|
|
178
171
|
self._tools.append(t)
|
|
179
172
|
|
|
180
|
-
def _restore_uploaded_search_for_internal_search_if_available(
|
|
181
|
-
self,
|
|
182
|
-
exclusive_tool: Tool[Any] | OpenAIBuiltInTool[Any],
|
|
183
|
-
) -> None:
|
|
184
|
-
"""Keep UploadedSearch available when InternalSearch wins exclusivity."""
|
|
185
|
-
if exclusive_tool.name != INTERNAL_SEARCH_TOOL_NAME:
|
|
186
|
-
return
|
|
187
|
-
|
|
188
|
-
uploaded_search_tool = next(
|
|
189
|
-
(
|
|
190
|
-
tool
|
|
191
|
-
for tool in self.available_tools
|
|
192
|
-
if tool.name == UPLOADED_SEARCH_TOOL_NAME
|
|
193
|
-
),
|
|
194
|
-
None,
|
|
195
|
-
)
|
|
196
|
-
if uploaded_search_tool is None:
|
|
197
|
-
return
|
|
198
|
-
|
|
199
|
-
self._tools.append(uploaded_search_tool)
|
|
200
|
-
|
|
201
173
|
def filter_tool_calls(
|
|
202
174
|
self,
|
|
203
175
|
tool_calls: list[LanguageModelFunction],
|
{unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/app/schemas.py
RENAMED
|
@@ -215,20 +215,6 @@ class Correlation(BaseModel):
|
|
|
215
215
|
parent_assistant_id: str
|
|
216
216
|
|
|
217
217
|
|
|
218
|
-
class ChatEventSkillChoice(BaseModel):
|
|
219
|
-
model_config = model_config
|
|
220
|
-
|
|
221
|
-
name: str = Field(default="", description="Skill name.")
|
|
222
|
-
scope_id: str = Field(
|
|
223
|
-
default="",
|
|
224
|
-
description="Knowledge base scope ID that contains the skill file.",
|
|
225
|
-
)
|
|
226
|
-
content_id: str = Field(
|
|
227
|
-
default="",
|
|
228
|
-
description="Knowledge base content ID of the ``SKILL.md`` file.",
|
|
229
|
-
)
|
|
230
|
-
|
|
231
|
-
|
|
232
218
|
class ChatEventPayload(BaseModel):
|
|
233
219
|
model_config = model_config
|
|
234
220
|
|
|
@@ -248,13 +234,6 @@ class ChatEventPayload(BaseModel):
|
|
|
248
234
|
default_factory=list,
|
|
249
235
|
description="A list containing the tool names the user has chosen to be activated.",
|
|
250
236
|
)
|
|
251
|
-
skill_choices: list[ChatEventSkillChoice] = Field(
|
|
252
|
-
default_factory=list,
|
|
253
|
-
description=(
|
|
254
|
-
"A list containing selected skills with ``scope_id``, "
|
|
255
|
-
"``content_id``, and ``name``."
|
|
256
|
-
),
|
|
257
|
-
)
|
|
258
237
|
disabled_tools: list[str] = Field(
|
|
259
238
|
default_factory=list,
|
|
260
239
|
description="A list containing the tool names of tools that are disabled at the company level",
|
{unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/content/functions.py
RENAMED
|
@@ -2,7 +2,6 @@ import logging
|
|
|
2
2
|
import os
|
|
3
3
|
import re
|
|
4
4
|
import tempfile
|
|
5
|
-
import urllib.parse
|
|
6
5
|
from pathlib import Path
|
|
7
6
|
from typing import Any
|
|
8
7
|
|
|
@@ -590,12 +589,7 @@ async def _trigger_upload_content_async(
|
|
|
590
589
|
"X-Ms-Blob-Type": "BlockBlob",
|
|
591
590
|
}
|
|
592
591
|
# upload to azure blob storage SAS url uploadUrl the pdf file translatedFile make sure it is treated as a application/pdf
|
|
593
|
-
|
|
594
|
-
# exhaust the default 5 s ceiling while waiting for the Azure Blob commit response.
|
|
595
|
-
_blob_upload_timeout = httpx.Timeout(
|
|
596
|
-
connect=10.0, read=120.0, write=120.0, pool=10.0
|
|
597
|
-
)
|
|
598
|
-
async with httpx.AsyncClient(timeout=_blob_upload_timeout) as client:
|
|
592
|
+
async with httpx.AsyncClient() as client:
|
|
599
593
|
if isinstance(content, bytes):
|
|
600
594
|
response = await client.put(
|
|
601
595
|
url=write_url,
|
|
@@ -726,26 +720,6 @@ async def request_content_by_id_async(
|
|
|
726
720
|
return await client.get(url, headers=headers)
|
|
727
721
|
|
|
728
722
|
|
|
729
|
-
def _extract_filename(content_disposition: str) -> str | None:
|
|
730
|
-
"""Extract filename from a Content-Disposition header.
|
|
731
|
-
|
|
732
|
-
Prefers the RFC 5987 ``filename*=UTF-8''...`` parameter (which carries
|
|
733
|
-
properly percent-encoded UTF-8 filenames) and falls back to the legacy
|
|
734
|
-
ASCII ``filename="..."`` parameter.
|
|
735
|
-
"""
|
|
736
|
-
utf8_match = re.search(
|
|
737
|
-
r"filename\*=UTF-8'[^']*'(.+?)(?:;|$)", content_disposition, re.IGNORECASE
|
|
738
|
-
)
|
|
739
|
-
if utf8_match:
|
|
740
|
-
return urllib.parse.unquote(utf8_match.group(1))
|
|
741
|
-
|
|
742
|
-
ascii_match = re.search(r'filename="([^"]+)"', content_disposition)
|
|
743
|
-
if ascii_match:
|
|
744
|
-
return ascii_match.group(1)
|
|
745
|
-
|
|
746
|
-
return None
|
|
747
|
-
|
|
748
|
-
|
|
749
723
|
def download_content_to_file_by_id(
|
|
750
724
|
user_id: str,
|
|
751
725
|
company_id: str,
|
|
@@ -780,11 +754,10 @@ def download_content_to_file_by_id(
|
|
|
780
754
|
if filename:
|
|
781
755
|
content_path = Path(random_dir) / filename
|
|
782
756
|
else:
|
|
783
|
-
|
|
784
|
-
|
|
785
|
-
|
|
786
|
-
|
|
787
|
-
content_path = Path(random_dir) / extracted
|
|
757
|
+
pattern = r'filename="([^"]+)"'
|
|
758
|
+
match = re.search(pattern, response.headers.get("Content-Disposition", ""))
|
|
759
|
+
if match:
|
|
760
|
+
content_path = Path(random_dir) / match.group(1)
|
|
788
761
|
else:
|
|
789
762
|
error_msg = "Error downloading file: Filename could not be determined"
|
|
790
763
|
logger.error(error_msg)
|
{unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/content/schemas.py
RENAMED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
3
|
import re
|
|
4
|
-
from datetime import datetime
|
|
4
|
+
from datetime import datetime
|
|
5
5
|
from enum import StrEnum
|
|
6
6
|
from typing import Any, Optional
|
|
7
7
|
|
|
@@ -179,11 +179,6 @@ class Content(BaseModel):
|
|
|
179
179
|
|
|
180
180
|
return True
|
|
181
181
|
|
|
182
|
-
def is_expired(self) -> bool:
|
|
183
|
-
return self.expired_at is not None and self.expired_at <= datetime.now(
|
|
184
|
-
timezone.utc
|
|
185
|
-
)
|
|
186
|
-
|
|
187
182
|
|
|
188
183
|
class ContentReference(BaseModel):
|
|
189
184
|
model_config = model_config
|
{unique_toolkit-2026.20.0.dev34 → unique_toolkit-2026.20.0rc1}/unique_toolkit/content/service.py
RENAMED
|
@@ -779,22 +779,6 @@ class ContentService:
|
|
|
779
779
|
|
|
780
780
|
return content
|
|
781
781
|
|
|
782
|
-
async def get_documents_uploaded_to_chat_async(self) -> list[Content]:
|
|
783
|
-
chat_contents = await self.search_contents_async(
|
|
784
|
-
where={
|
|
785
|
-
"ownerId": {
|
|
786
|
-
"equals": self._chat_id,
|
|
787
|
-
},
|
|
788
|
-
},
|
|
789
|
-
)
|
|
790
|
-
|
|
791
|
-
content: list[Content] = []
|
|
792
|
-
for c in chat_contents:
|
|
793
|
-
if self.is_file_content(c.key):
|
|
794
|
-
content.append(c)
|
|
795
|
-
|
|
796
|
-
return content
|
|
797
|
-
|
|
798
782
|
def get_images_uploaded_to_chat(self) -> list[Content]:
|
|
799
783
|
chat_contents = self.search_contents(
|
|
800
784
|
where={
|