unique_toolkit 2026.36.0__tar.gz → 2026.36.0.dev1__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.36.0 → unique_toolkit-2026.36.0.dev1}/PKG-INFO +2 -2
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/pyproject.toml +2 -2
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/_common/pydantic/rjsf_tags.py +0 -23
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/feature_flags/feature_flags.py +5 -9
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/history_manager/history_construction_with_contents.py +1 -3
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/tools/a2a/tool/service.py +51 -1
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/tools/mcp/tool_wrapper.py +42 -1
- unique_toolkit-2026.36.0.dev1/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/postprocessors/artifacts.py +103 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/postprocessors/generated_files.py +0 -10
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic_table/__init__.py +0 -8
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic_table/schemas.py +2 -102
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic_table/service.py +31 -75
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/chat/responses_api.py +1 -3
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/content/functions.py +0 -34
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/experimental/components/__init__.py +3 -6
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/experimental/components/content_tree/__init__.py +18 -14
- unique_toolkit-2026.36.0.dev1/unique_toolkit/experimental/components/content_tree/functions.py +247 -0
- unique_toolkit-2026.36.0.dev1/unique_toolkit/experimental/components/content_tree/schemas.py +106 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/experimental/components/content_tree/service.py +83 -244
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/experimental/content_tree/__init__.py +10 -4
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/chat_completions/complete_with_references.py +4 -7
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/responses/complete_with_references.py +8 -12
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/language_model/functions.py +2 -11
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/language_model/infos.py +0 -61
- unique_toolkit-2026.36.0.dev1/unique_toolkit/language_model/invocation_stats.py +77 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/language_model/service.py +1 -15
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/services/chat_service.py +7 -0
- unique_toolkit-2026.36.0/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/postprocessors/artifacts.py +0 -213
- unique_toolkit-2026.36.0/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/postprocessors/office_preview.py +0 -154
- unique_toolkit-2026.36.0/unique_toolkit/experimental/components/content_tree/functions.py +0 -380
- unique_toolkit-2026.36.0/unique_toolkit/experimental/components/content_tree/schemas.py +0 -261
- unique_toolkit-2026.36.0/unique_toolkit/experimental/integrations/openai/streaming/event_routing/_model_params.py +0 -133
- unique_toolkit-2026.36.0/unique_toolkit/language_model/invocation_stats.py +0 -173
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/README.md +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/__init__.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/_common/__init__.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/_common/_base_service.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/_common/_time_utils.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/_common/api_calling/human_verification_manager.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/_common/base_model_type_attribute.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/_common/chunk_relevancy_sorter/config.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/_common/chunk_relevancy_sorter/exception.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/_common/chunk_relevancy_sorter/schemas.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/_common/chunk_relevancy_sorter/service.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/_common/chunk_relevancy_sorter/tests/test_service.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/_common/config_checker/README.md +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/_common/config_checker/__init__.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/_common/config_checker/__main__.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/_common/config_checker/cli.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/_common/config_checker/differ.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/_common/config_checker/exporter.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/_common/config_checker/models.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/_common/config_checker/registry.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/_common/config_checker/validator.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/_common/default_language_model.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/_common/docx_generator/__init__.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/_common/docx_generator/config.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/_common/docx_generator/pandoc_converter.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/_common/docx_generator/schemas.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/_common/docx_generator/service.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/_common/docx_generator/template/Doc Template.docx +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/_common/endpoint_builder.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/_common/endpoint_requestor.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/_common/event_bus.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/_common/exception.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/_common/execution.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/_common/experimental/endpoint_builder.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/_common/experimental/endpoint_requestor.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/_common/experimental/write_up_agent/README.md +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/_common/experimental/write_up_agent/__init__.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/_common/experimental/write_up_agent/agent.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/_common/experimental/write_up_agent/config.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/_common/experimental/write_up_agent/examples/data.csv +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/_common/experimental/write_up_agent/examples/example_usage.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/_common/experimental/write_up_agent/schemas.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/_common/experimental/write_up_agent/services/__init__.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/_common/experimental/write_up_agent/services/dataframe_handler/__init__.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/_common/experimental/write_up_agent/services/dataframe_handler/exceptions.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/_common/experimental/write_up_agent/services/dataframe_handler/service.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/_common/experimental/write_up_agent/services/dataframe_handler/utils.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/__init__.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/config.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/exceptions.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/prompts/config.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/prompts/system_prompt.j2 +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/prompts/user_prompt.j2 +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/service.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/_common/experimental/write_up_agent/services/template_handler/__init__.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/_common/experimental/write_up_agent/services/template_handler/default_template.j2 +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/_common/experimental/write_up_agent/services/template_handler/exceptions.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/_common/experimental/write_up_agent/services/template_handler/service.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/_common/experimental/write_up_agent/services/template_handler/utils.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/_common/experimental/write_up_agent/utils.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/_common/feature_flags/schema.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/_common/metadata_filter_scope.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/_common/pydantic_helpers.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/_common/referencing.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/_common/string_utilities.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/_common/tests/test_referencing.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/_common/tests/test_string_utilities.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/_common/token/__init__.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/_common/token/image_token_counting.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/_common/token/token_counting.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/_common/token/tokenizers/deepseek/tokenizer.json +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/_common/token/tokenizers/qwen/tokenizer.json +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/_common/utils/__init__.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/_common/utils/files.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/_common/utils/image/encode.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/_common/utils/jinja/helpers.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/_common/utils/jinja/render.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/_common/utils/jinja/schema.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/_common/utils/jinja/utils.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/_common/utils/structured_output/__init__.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/_common/utils/structured_output/schema.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/_common/utils/write_configuration.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/_common/validate_required_values.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/_common/validators.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/__init__.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/debug_info_manager/debug_info_manager.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/debug_info_manager/test/test_debug_info_manager.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/evaluation/config.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/evaluation/context_relevancy/prompts/__init__.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/evaluation/context_relevancy/prompts/system_prompt.j2 +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/evaluation/context_relevancy/prompts/user_prompt.j2 +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/evaluation/context_relevancy/schema.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/evaluation/context_relevancy/service.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/evaluation/evaluation_manager.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/evaluation/exception.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/evaluation/hallucination/constants.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/evaluation/hallucination/hallucination_evaluation.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/evaluation/hallucination/prompts/__init__.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/evaluation/hallucination/prompts/system_prompt.j2 +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/evaluation/hallucination/prompts/user_prompt.j2 +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/evaluation/hallucination/service.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/evaluation/hallucination/utils.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/evaluation/output_parser.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/evaluation/schemas.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/evaluation/tests/fixtures.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/evaluation/tests/test_config.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/evaluation/tests/test_context_relevancy_service.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/evaluation/tests/test_hallucination_constants.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/evaluation/tests/test_hallucination_external_context.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/evaluation/tests/test_hallucination_utils.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/evaluation/tests/test_output_parser.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/evaluation/tests/test_prompt_loaders.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/evaluation/utils.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/feature_flags/__init__.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/history_manager/history_manager.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/history_manager/loop_token_reducer.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/history_manager/settings.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/history_manager/utils.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/loop_runner/__init__.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/loop_runner/_iteration_handler_utils.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/loop_runner/_responses_iteration_handler_utils.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/loop_runner/_responses_stream_handler_utils.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/loop_runner/_stream_handler_utils.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/loop_runner/base.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/loop_runner/middleware/__init__.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/loop_runner/middleware/planning/__init__.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/loop_runner/middleware/planning/planning.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/loop_runner/middleware/planning/schema.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/loop_runner/runners/__init__.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/loop_runner/runners/basic.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/loop_runner/runners/mistral/__init__.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/loop_runner/runners/mistral/mistral_runner.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/loop_runner/runners/qwen/__init__.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/loop_runner/runners/qwen/helpers.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/loop_runner/runners/qwen/qwen_runner.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/message_log_manager/__init__.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/message_log_manager/service.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/message_log_order.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/postprocessor/postprocessor_manager.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/reference_manager/reference_manager.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/reference_manager/tests/test_external_context.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/responses_api/__init__.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/responses_api/postprocessors/code_display.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/responses_api/postprocessors/generated_files.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/responses_api/stream_handler.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/short_term_memory_manager/persistent_short_term_memory_manager.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/thinking_manager/thinking_manager.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/tools/__init__.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/tools/a2a/__init__.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/tools/a2a/config.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/tools/a2a/evaluation/__init__.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/tools/a2a/evaluation/_utils.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/tools/a2a/evaluation/config.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/tools/a2a/evaluation/evaluator.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/tools/a2a/evaluation/summarization_user_message.j2 +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/tools/a2a/manager.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/tools/a2a/postprocessing/__init__.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/tools/a2a/postprocessing/_display_utils.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/tools/a2a/postprocessing/_ref_utils.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/tools/a2a/postprocessing/config.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/tools/a2a/postprocessing/display.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/tools/a2a/postprocessing/references.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/tools/a2a/postprocessing/test/test_display.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/tools/a2a/postprocessing/test/test_display_utils.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/tools/a2a/postprocessing/test/test_ref_utils.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/tools/a2a/postprocessing/test/test_references.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/tools/a2a/prompts.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/tools/a2a/response_watcher/__init__.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/tools/a2a/response_watcher/service.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/tools/a2a/tool/__init__.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/tools/a2a/tool/_memory.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/tools/a2a/tool/_schema.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/tools/a2a/tool/config.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/tools/a2a/tool/test/test_service_utils.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/tools/agent_chunks_hanlder.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/tools/config.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/tools/experimental/__init__.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/tools/experimental/ask_user_tool/__init__.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/tools/experimental/ask_user_tool/config.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/tools/experimental/ask_user_tool/tool.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/tools/experimental/open_file_tool/__init__.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/tools/experimental/open_file_tool/config.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/tools/experimental/open_file_tool/runtime.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/tools/experimental/open_file_tool/tool.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/tools/experimental/retrieve_search_scope_tool/__init__.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/tools/experimental/retrieve_search_scope_tool/config.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/tools/experimental/retrieve_search_scope_tool/tool.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/tools/experimental/todo/__init__.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/tools/experimental/todo/config.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/tools/experimental/todo/prompts/__init__.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/tools/experimental/todo/prompts/execution_reminder.j2 +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/tools/experimental/todo/prompts/system_prompt.j2 +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/tools/experimental/todo/prompts/tool_description.j2 +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/tools/experimental/todo/prompts/verification_nudge.j2 +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/tools/experimental/todo/schemas.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/tools/experimental/todo/service.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/tools/factory.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/tools/mcp/__init__.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/tools/mcp/manager.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/tools/mcp/models.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/tools/names.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/tools/openai_builtin/__init__.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/tools/openai_builtin/base.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/__init__.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/activator/__init__.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/activator/config.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/activator/service.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/builder/__init__.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/builder/_container.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/builder/_files.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/builder/_memory.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/builder/builder.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/config.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/postprocessors/__init__.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/postprocessors/code_display.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/schemas.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/tool/__init__.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/tool/config.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/tool/service.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/tools/openai_builtin/manager.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/tools/run_context.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/tools/schemas.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/tools/test/test_mcp_manager.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/tools/test/test_tool_progress_reporter.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/tools/tool.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/tools/tool_manager.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/tools/tool_progress_reporter.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/tools/utils/__init__.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/tools/utils/source_handling/__init__.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/tools/utils/source_handling/schema.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/tools/utils/source_handling/source_formatting.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic/tools/utils/source_handling/tests/test_source_formatting.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic_table/synthetic_chat_event.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/app/__init__.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/app/chat_event_filter_options_settings.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/app/dev_util.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/app/fast_api_factory.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/app/feature_flags.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/app/find_env_file.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/app/init_logging.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/app/init_sdk.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/app/performance/async_tasks.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/app/performance/async_wrapper.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/app/schemas.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/app/unique_settings.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/app/verification.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/app/webhook.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/chat/__init__.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/chat/cancellation.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/chat/constants.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/chat/deprecated/__init__.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/chat/deprecated/service.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/chat/functions.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/chat/rendering.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/chat/schemas.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/chat/service.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/chat/state.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/chat/utils.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/content/__init__.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/content/constants.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/content/schemas.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/content/service.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/content/smart_rules.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/content/utils.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/data_extraction/README.md +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/data_extraction/__init__.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/data_extraction/augmented/__init__.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/data_extraction/augmented/service.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/data_extraction/base.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/data_extraction/basic/__init__.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/data_extraction/basic/config.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/data_extraction/basic/prompt.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/data_extraction/basic/service.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/elicitation/__init__.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/elicitation/constants.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/elicitation/exceptions.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/elicitation/functions.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/elicitation/schemas.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/elicitation/service.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/embedding/__init__.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/embedding/constants.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/embedding/functions.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/embedding/schemas.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/embedding/service.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/embedding/utils.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/experimental/README.md +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/experimental/__init__.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/experimental/_internal/__init__.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/experimental/_internal/streaming/__init__.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/experimental/_internal/streaming/common.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/experimental/_internal/streaming/pattern_replacer.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/experimental/components/_base.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/experimental/components/internal_search/__init__.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/experimental/components/internal_search/base/__init__.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/experimental/components/internal_search/base/config.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/experimental/components/internal_search/base/schemas.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/experimental/components/internal_search/base/service.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/experimental/components/internal_search/base/utils.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/experimental/components/internal_search/chat/__init__.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/experimental/components/internal_search/chat/config.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/experimental/components/internal_search/chat/schemas.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/experimental/components/internal_search/chat/service.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/experimental/components/internal_search/knowledge_base/__init__.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/experimental/components/internal_search/knowledge_base/config.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/experimental/components/internal_search/knowledge_base/schemas.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/experimental/components/internal_search/knowledge_base/service.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/experimental/components/internal_search/post_processing/__init__.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/experimental/components/internal_search/post_processing/config.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/experimental/components/internal_search/post_processing/service.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/experimental/identity/__init__.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/experimental/integrations/__init__.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/experimental/integrations/openai/__init__.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/experimental/integrations/openai/streaming/__init__.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/__init__.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/_async_bridge.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/chat_completions/__init__.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/chat_completions/stream_event_router.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/chat_completions/text_event_handler.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/chat_completions/tool_call_event_handler.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/events.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/protocols/__init__.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/protocols/chat_completions.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/protocols/responses.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/responses/__init__.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/responses/code_interpreter_event_handler.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/responses/completed_event_handler.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/responses/stream_event_router.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/responses/text_delta_event_handler.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/responses/tool_call_event_handler.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/subscribers/__init__.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/subscribers/message_persister.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/experimental/integrations/openai/streaming/event_routing/subscribers/progress_log_persister.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/experimental/resources/__init__.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/experimental/resources/content_folder/__init__.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/experimental/resources/content_folder/functions.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/experimental/resources/content_folder/schemas.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/experimental/resources/content_folder/service.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/experimental/resources/facades/__init__.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/experimental/resources/facades/identity/__init__.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/experimental/resources/facades/identity/service.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/experimental/resources/feature_flags/README.md +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/experimental/resources/feature_flags/__init__.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/experimental/resources/feature_flags/_graphql_client.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/experimental/resources/feature_flags/_ttl_cache.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/experimental/resources/feature_flags/client.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/experimental/resources/feature_flags/schemas.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/experimental/resources/feature_flags/settings.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/experimental/resources/group/__init__.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/experimental/resources/group/functions.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/experimental/resources/group/schemas.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/experimental/resources/group/service.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/experimental/resources/scheduled_task/__init__.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/experimental/resources/scheduled_task/cron.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/experimental/resources/scheduled_task/functions.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/experimental/resources/scheduled_task/schemas.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/experimental/resources/scheduled_task/service.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/experimental/resources/user/__init__.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/experimental/resources/user/functions.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/experimental/resources/user/schemas.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/experimental/resources/user/service.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/experimental/testing/__init__.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/framework_utilities/__init__.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/framework_utilities/langchain/__init__.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/framework_utilities/langchain/client.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/framework_utilities/langchain/history.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/framework_utilities/openai/__init__.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/framework_utilities/openai/client.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/framework_utilities/openai/message_builder.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/framework_utilities/utils.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/language_model/__init__.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/language_model/_responses_api_utils.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/language_model/builder.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/language_model/constants.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/language_model/default_language_model.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/language_model/model_costs.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/language_model/prompt.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/language_model/reference.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/language_model/schemas.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/language_model/settings.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/language_model/stream_transform.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/language_model/utils.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/monitoring/__init__.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/monitoring/gunicorn.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/monitoring/middleware.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/monitoring/registry.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/monitoring/tracing.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/protocols/support.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/services/__init__.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/services/factory.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/services/knowledge_base.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/short_term_memory/__init__.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/short_term_memory/constants.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/short_term_memory/functions.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/short_term_memory/schemas.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/short_term_memory/service.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/smart_rules/__init__.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/smart_rules/compile.py +0 -0
- {unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/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.36.0
|
|
3
|
+
Version: 2026.36.0.dev1
|
|
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>
|
|
@@ -16,7 +16,7 @@ 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>=2026.36.0
|
|
19
|
+
Requires-Dist: unique-sdk>=2026.36.0.dev0,<2026.36.0rc0
|
|
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.36.0"
|
|
3
|
+
version = "2026.36.0.dev1"
|
|
4
4
|
description = ""
|
|
5
5
|
readme = "README.md"
|
|
6
6
|
requires-python = ">=3.12"
|
|
@@ -28,7 +28,7 @@ dependencies = [
|
|
|
28
28
|
"openai>=1.105.0,<3",
|
|
29
29
|
"platformdirs>=4.0.0,<5",
|
|
30
30
|
"pillow>=12.1.1",
|
|
31
|
-
"unique-sdk>=2026.36.0",
|
|
31
|
+
"unique-sdk>=2026.36.0.dev0,<2026.36.0rc0",
|
|
32
32
|
"jambo>=0.1.2,<0.2",
|
|
33
33
|
"jinja2>=3.1.6,<4",
|
|
34
34
|
"docxtpl>=0.20.1,<0.21",
|
|
@@ -739,20 +739,6 @@ class RJSFMetaTag:
|
|
|
739
739
|
return RJSFMetaTag({**union_attrs, "anyOf": any_of_branches})
|
|
740
740
|
|
|
741
741
|
|
|
742
|
-
class DynamicRJSFTag:
|
|
743
|
-
"""Defer RJSF metadata until ``ui_schema_for_model`` runs.
|
|
744
|
-
|
|
745
|
-
Use for env-driven admin locks (``ui:disabled``) that must reflect the
|
|
746
|
-
deployment environment at schema-generation time, not at module import.
|
|
747
|
-
"""
|
|
748
|
-
|
|
749
|
-
def __init__(self, factory: Callable[[], RJSFMetaTag]) -> None:
|
|
750
|
-
self._factory = factory
|
|
751
|
-
|
|
752
|
-
def resolve_rjsf_tag(self) -> RJSFMetaTag:
|
|
753
|
-
return self._factory()
|
|
754
|
-
|
|
755
|
-
|
|
756
742
|
# --------- Helpers ----------
|
|
757
743
|
_NONE_TYPES = {type(None)}
|
|
758
744
|
"""
|
|
@@ -799,12 +785,6 @@ def _collect_metatags(extras: list[Any]) -> dict[str, Any]:
|
|
|
799
785
|
"""
|
|
800
786
|
out: dict[str, Any] = {}
|
|
801
787
|
for x in extras:
|
|
802
|
-
resolve = getattr(x, "resolve_rjsf_tag", None)
|
|
803
|
-
if callable(resolve):
|
|
804
|
-
tag = resolve()
|
|
805
|
-
if isinstance(tag, RJSFMetaTag):
|
|
806
|
-
out.update(tag.attrs)
|
|
807
|
-
continue
|
|
808
788
|
if isinstance(x, RJSFMetaTag):
|
|
809
789
|
out.update(x.attrs)
|
|
810
790
|
return out
|
|
@@ -958,9 +938,6 @@ def ui_schema_for_model(
|
|
|
958
938
|
# Re-process the unwrapped type to extract metadata from the Annotated branch.
|
|
959
939
|
if not meta and get_origin(base) is Annotated:
|
|
960
940
|
base, meta = _walk_annotated_chain(base)
|
|
961
|
-
field_meta = _collect_metatags(list(field_info.metadata))
|
|
962
|
-
if field_meta:
|
|
963
|
-
meta = {**meta, **field_meta}
|
|
964
941
|
# Start with field-level metadata (flat dict)
|
|
965
942
|
if meta:
|
|
966
943
|
node.update(meta)
|
|
@@ -30,6 +30,7 @@ class FeatureFlagNames(StrEnum):
|
|
|
30
30
|
enable_web_search_argument_screening_un_18741 = (
|
|
31
31
|
"FEATURE_FLAG_ENABLE_WEB_SEARCH_ARGUMENT_SCREENING_UN_18741"
|
|
32
32
|
)
|
|
33
|
+
enable_new_answers_ui_un_14411 = "FEATURE_FLAG_ENABLE_NEW_ANSWERS_UI_UN_14411"
|
|
33
34
|
|
|
34
35
|
|
|
35
36
|
@deprecated(
|
|
@@ -82,25 +83,20 @@ class FeatureFlags(BaseSettings):
|
|
|
82
83
|
"""Feature flags loaded from environment variables.
|
|
83
84
|
|
|
84
85
|
Environment variables are automatically loaded based on field names.
|
|
85
|
-
For example, `
|
|
86
|
-
`
|
|
86
|
+
For example, `enable_new_answers_ui_un_14411` will be loaded from
|
|
87
|
+
`FEATURE_FLAG_ENABLE_NEW_ANSWERS_UI_UN_14411` (with the env_prefix).
|
|
87
88
|
|
|
88
89
|
Usage:
|
|
89
90
|
>>> flags = FeatureFlags()
|
|
90
91
|
>>> # Check if feature is enabled for a company
|
|
91
|
-
>>> flags.
|
|
92
|
+
>>> flags.enable_new_answers_ui_un_14411.is_enabled("company123")
|
|
92
93
|
>>> # Check global enablement
|
|
93
94
|
>>> bool(flags.enable_elicitation_un_15809)
|
|
94
95
|
"""
|
|
95
96
|
|
|
96
97
|
enable_new_answers_ui_un_14411: FeatureFlag = Field(
|
|
97
98
|
default=FeatureFlag([]),
|
|
98
|
-
description=(
|
|
99
|
-
"Retired (UN-24507): the new answers UI is always on now, no code "
|
|
100
|
-
"reads this field. Kept only so removing it doesn't trip the "
|
|
101
|
-
"config-checker's breaking-change gate on this settings model; "
|
|
102
|
-
"delete once that checker allows field removal."
|
|
103
|
-
),
|
|
99
|
+
description="Enable new answers UI (UN-14411)",
|
|
104
100
|
)
|
|
105
101
|
|
|
106
102
|
enable_html_rendering_un_15131: FeatureFlag = Field(
|
|
@@ -196,9 +196,7 @@ async def download_encoded_images_async(
|
|
|
196
196
|
image_string = f"data:{mime_type};base64," + encoded_string
|
|
197
197
|
base64_encoded_images.append(image_string)
|
|
198
198
|
except Exception as e:
|
|
199
|
-
_LOGGER.warning(
|
|
200
|
-
"Failed to download image %s: %s", im.key, e, exc_info=True
|
|
201
|
-
)
|
|
199
|
+
_LOGGER.warning("Failed to download image %s: %s", im.key, e)
|
|
202
200
|
return base64_encoded_images
|
|
203
201
|
|
|
204
202
|
|
|
@@ -22,6 +22,7 @@ from unique_toolkit._common.referencing import (
|
|
|
22
22
|
)
|
|
23
23
|
from unique_toolkit._common.utils.jinja.render import render_template
|
|
24
24
|
from unique_toolkit.agentic.evaluation.schemas import EvaluationMetricName
|
|
25
|
+
from unique_toolkit.agentic.feature_flags import FeatureFlagNames
|
|
25
26
|
from unique_toolkit.agentic.tools.a2a.response_watcher import SubAgentResponseWatcher
|
|
26
27
|
from unique_toolkit.agentic.tools.a2a.tool._memory import (
|
|
27
28
|
get_sub_agent_short_term_memory_manager,
|
|
@@ -38,7 +39,10 @@ from unique_toolkit.agentic.tools.a2a.tool.config import (
|
|
|
38
39
|
from unique_toolkit.agentic.tools.factory import ToolFactory
|
|
39
40
|
from unique_toolkit.agentic.tools.schemas import ToolCallResponse
|
|
40
41
|
from unique_toolkit.agentic.tools.tool import Tool
|
|
41
|
-
from unique_toolkit.agentic.tools.tool_progress_reporter import
|
|
42
|
+
from unique_toolkit.agentic.tools.tool_progress_reporter import (
|
|
43
|
+
ProgressState,
|
|
44
|
+
ToolProgressReporter,
|
|
45
|
+
)
|
|
42
46
|
from unique_toolkit.app import ChatEvent
|
|
43
47
|
from unique_toolkit.chat.schemas import (
|
|
44
48
|
ChatMessageAssessmentLabel,
|
|
@@ -49,6 +53,7 @@ from unique_toolkit.chat.schemas import (
|
|
|
49
53
|
)
|
|
50
54
|
from unique_toolkit.chat.service import ChatService
|
|
51
55
|
from unique_toolkit.content import ContentChunk, ContentReference
|
|
56
|
+
from unique_toolkit.experimental.resources.feature_flags import is_flag_enabled
|
|
52
57
|
from unique_toolkit.language_model import (
|
|
53
58
|
LanguageModelFunction,
|
|
54
59
|
LanguageModelService,
|
|
@@ -191,6 +196,12 @@ class SubAgentTool(Tool[SubAgentToolConfig]):
|
|
|
191
196
|
timestamp = datetime.now()
|
|
192
197
|
|
|
193
198
|
if self._lock.locked():
|
|
199
|
+
await self._notify_progress(
|
|
200
|
+
tool_call=tool_call,
|
|
201
|
+
message=f"Waiting for another run of `{self.display_name()}` to finish",
|
|
202
|
+
state=ProgressState.STARTED,
|
|
203
|
+
)
|
|
204
|
+
|
|
194
205
|
active_message_log = self._create_or_update_message_log(
|
|
195
206
|
progress_message="_Waiting for another run of this sub agent to finish_",
|
|
196
207
|
active_message_log=active_message_log,
|
|
@@ -204,6 +215,12 @@ class SubAgentTool(Tool[SubAgentToolConfig]):
|
|
|
204
215
|
sequence_number = self._sequence_number
|
|
205
216
|
self._sequence_number += 1
|
|
206
217
|
|
|
218
|
+
await self._notify_progress(
|
|
219
|
+
tool_call=tool_call,
|
|
220
|
+
message=tool_input,
|
|
221
|
+
state=ProgressState.RUNNING,
|
|
222
|
+
)
|
|
223
|
+
|
|
207
224
|
active_message_log = self._create_or_update_message_log(
|
|
208
225
|
progress_message=f"<em>Executing sub agent with input: {tool_input}</em>",
|
|
209
226
|
active_message_log=active_message_log,
|
|
@@ -268,6 +285,12 @@ class SubAgentTool(Tool[SubAgentToolConfig]):
|
|
|
268
285
|
has_refs=has_refs,
|
|
269
286
|
)
|
|
270
287
|
|
|
288
|
+
await self._notify_progress(
|
|
289
|
+
tool_call=tool_call,
|
|
290
|
+
message=tool_input,
|
|
291
|
+
state=ProgressState.FINISHED,
|
|
292
|
+
)
|
|
293
|
+
|
|
271
294
|
# Update message log entry to completed
|
|
272
295
|
active_message_log = self._create_or_update_message_log(
|
|
273
296
|
progress_message=f"<em>Completed sub agent with input: {tool_input}</em>",
|
|
@@ -306,6 +329,11 @@ class SubAgentTool(Tool[SubAgentToolConfig]):
|
|
|
306
329
|
except TimeoutError as e:
|
|
307
330
|
raise e
|
|
308
331
|
except Exception as e:
|
|
332
|
+
await self._notify_progress(
|
|
333
|
+
tool_call=tool_call,
|
|
334
|
+
message="Error while running sub agent",
|
|
335
|
+
state=ProgressState.FAILED,
|
|
336
|
+
)
|
|
309
337
|
active_message_log = self._create_or_update_message_log(
|
|
310
338
|
progress_message="_Error while running sub agent_",
|
|
311
339
|
status=MessageLogStatus.FAILED,
|
|
@@ -398,6 +426,23 @@ class SubAgentTool(Tool[SubAgentToolConfig]):
|
|
|
398
426
|
SubAgentShortTermMemorySchema(chat_id=chat_id)
|
|
399
427
|
)
|
|
400
428
|
|
|
429
|
+
async def _notify_progress(
|
|
430
|
+
self,
|
|
431
|
+
tool_call: LanguageModelFunction,
|
|
432
|
+
message: str,
|
|
433
|
+
state: ProgressState,
|
|
434
|
+
) -> None:
|
|
435
|
+
if self._tool_progress_reporter is not None and not await is_flag_enabled(
|
|
436
|
+
FeatureFlagNames.enable_new_answers_ui_un_14411,
|
|
437
|
+
company_id=self._company_id or "",
|
|
438
|
+
):
|
|
439
|
+
await self._tool_progress_reporter.notify_from_tool_call(
|
|
440
|
+
tool_call=tool_call,
|
|
441
|
+
name=self._display_name,
|
|
442
|
+
message=message,
|
|
443
|
+
state=state,
|
|
444
|
+
)
|
|
445
|
+
|
|
401
446
|
def _create_or_update_message_log(
|
|
402
447
|
self,
|
|
403
448
|
*,
|
|
@@ -466,6 +511,11 @@ class SubAgentTool(Tool[SubAgentToolConfig]):
|
|
|
466
511
|
wait_for_invocations=True,
|
|
467
512
|
)
|
|
468
513
|
except TimeoutError as e:
|
|
514
|
+
await self._notify_progress(
|
|
515
|
+
tool_call=tool_call,
|
|
516
|
+
message="Timeout while waiting for response from sub agent.",
|
|
517
|
+
state=ProgressState.FAILED,
|
|
518
|
+
)
|
|
469
519
|
active_message_log = self._create_or_update_message_log(
|
|
470
520
|
progress_message="_Timeout while waiting for response from sub agent_",
|
|
471
521
|
status=MessageLogStatus.FAILED,
|
|
@@ -10,15 +10,20 @@ import unique_sdk
|
|
|
10
10
|
from pydantic import ValidationError
|
|
11
11
|
|
|
12
12
|
from unique_toolkit.agentic.evaluation.schemas import EvaluationMetricName
|
|
13
|
+
from unique_toolkit.agentic.feature_flags import FeatureFlagNames
|
|
13
14
|
from unique_toolkit.agentic.tools.mcp.models import MCPToolConfig
|
|
14
15
|
from unique_toolkit.agentic.tools.schemas import ToolCallResponse
|
|
15
16
|
from unique_toolkit.agentic.tools.tool import Tool
|
|
16
|
-
from unique_toolkit.agentic.tools.tool_progress_reporter import
|
|
17
|
+
from unique_toolkit.agentic.tools.tool_progress_reporter import (
|
|
18
|
+
ProgressState,
|
|
19
|
+
ToolProgressReporter,
|
|
20
|
+
)
|
|
17
21
|
from unique_toolkit.app.schemas import ChatEvent, McpServer, McpTool
|
|
18
22
|
from unique_toolkit.chat.schemas import MessageLog, MessageLogStatus
|
|
19
23
|
from unique_toolkit.chat.service import ChatService
|
|
20
24
|
from unique_toolkit.content.functions import upload_content_from_bytes
|
|
21
25
|
from unique_toolkit.content.schemas import ContentChunk, ContentReference
|
|
26
|
+
from unique_toolkit.experimental.resources.feature_flags import is_flag_enabled
|
|
22
27
|
from unique_toolkit.language_model import LanguageModelService
|
|
23
28
|
from unique_toolkit.language_model.schemas import (
|
|
24
29
|
LanguageModelFunction,
|
|
@@ -132,6 +137,18 @@ class MCPToolWrapper(Tool[MCPToolConfig]):
|
|
|
132
137
|
active_message_log=active_message_log,
|
|
133
138
|
)
|
|
134
139
|
|
|
140
|
+
# Notify progress if reporter is available
|
|
141
|
+
if self._tool_progress_reporter and not await is_flag_enabled(
|
|
142
|
+
FeatureFlagNames.enable_new_answers_ui_un_14411,
|
|
143
|
+
company_id=self._event.company_id,
|
|
144
|
+
):
|
|
145
|
+
await self._tool_progress_reporter.notify_from_tool_call(
|
|
146
|
+
tool_call=tool_call,
|
|
147
|
+
name=f"**{self.display_name()}**",
|
|
148
|
+
message=f"Executing MCP tool: {self.display_name()}",
|
|
149
|
+
state=ProgressState.RUNNING,
|
|
150
|
+
)
|
|
151
|
+
|
|
135
152
|
try:
|
|
136
153
|
# Robust argument extraction and validation
|
|
137
154
|
arguments = self._extract_and_validate_arguments(tool_call)
|
|
@@ -163,6 +180,18 @@ class MCPToolWrapper(Tool[MCPToolConfig]):
|
|
|
163
180
|
image_data_urls=image_data_urls,
|
|
164
181
|
)
|
|
165
182
|
|
|
183
|
+
# Notify completion
|
|
184
|
+
if self._tool_progress_reporter and not await is_flag_enabled(
|
|
185
|
+
FeatureFlagNames.enable_new_answers_ui_un_14411,
|
|
186
|
+
company_id=self._event.company_id,
|
|
187
|
+
):
|
|
188
|
+
await self._tool_progress_reporter.notify_from_tool_call(
|
|
189
|
+
tool_call=tool_call,
|
|
190
|
+
name=f"**{self.display_name()}**",
|
|
191
|
+
message=f"MCP tool completed: {self.display_name()}",
|
|
192
|
+
state=ProgressState.FINISHED,
|
|
193
|
+
)
|
|
194
|
+
|
|
166
195
|
# Update message log entry to completed
|
|
167
196
|
active_message_log = self._create_or_update_message_log(
|
|
168
197
|
progress_message="_Completed MCP tool_",
|
|
@@ -176,6 +205,18 @@ class MCPToolWrapper(Tool[MCPToolConfig]):
|
|
|
176
205
|
except Exception as e:
|
|
177
206
|
self.logger.error(f"Error executing MCP tool {self.name}: {e}")
|
|
178
207
|
|
|
208
|
+
# Notify failure
|
|
209
|
+
if self._tool_progress_reporter and not await is_flag_enabled(
|
|
210
|
+
FeatureFlagNames.enable_new_answers_ui_un_14411,
|
|
211
|
+
company_id=self._event.company_id,
|
|
212
|
+
):
|
|
213
|
+
await self._tool_progress_reporter.notify_from_tool_call(
|
|
214
|
+
tool_call=tool_call,
|
|
215
|
+
name=f"**{self.display_name()}**",
|
|
216
|
+
message=f"MCP tool failed: {str(e)}",
|
|
217
|
+
state=ProgressState.FAILED,
|
|
218
|
+
)
|
|
219
|
+
|
|
179
220
|
# Update message log entry to failed
|
|
180
221
|
active_message_log = self._create_or_update_message_log(
|
|
181
222
|
progress_message="_Failed executing MCP tool_",
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
import logging
|
|
2
|
+
from mimetypes import guess_type
|
|
3
|
+
|
|
4
|
+
from openai.types.responses.response_output_text import AnnotationContainerFileCitation
|
|
5
|
+
from pydantic import BaseModel
|
|
6
|
+
|
|
7
|
+
from unique_toolkit import ChatService
|
|
8
|
+
from unique_toolkit._common.utils.files import FileMimeType, ImageMimeType
|
|
9
|
+
from unique_toolkit.content.schemas import Content
|
|
10
|
+
|
|
11
|
+
_CODE_EXECUTION_ARTIFACT_METADATA_KEY: str = "codeExecutionArtifactMetadata"
|
|
12
|
+
|
|
13
|
+
_LOGGER = logging.getLogger(__name__)
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
class CodeExecutionArtifactMetadata(BaseModel):
|
|
17
|
+
container_id: str
|
|
18
|
+
file_id: str
|
|
19
|
+
filepath: str
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
def _kb_safe_mime(mime: str) -> str:
|
|
23
|
+
"""Return a MIME type the Unique KB will accept.
|
|
24
|
+
|
|
25
|
+
Membership is defined by ``FileMimeType`` and ``ImageMimeType`` in
|
|
26
|
+
``unique_toolkit._common.utils.files`` (same catalog as path-based helpers
|
|
27
|
+
like ``FileMimeType.is_valid_mime``, but here we already have a resolved
|
|
28
|
+
MIME string from ``mimetypes.guess_type``, so we use StrEnum value lookup
|
|
29
|
+
instead of re-parsing a path).
|
|
30
|
+
|
|
31
|
+
The KB GraphQL API rejects many code-file MIME types (e.g. ``text/x-python``
|
|
32
|
+
for ``.py`` files). Anything not in those enums is coerced to
|
|
33
|
+
``text/plain`` so the file can be stored and downloaded without changing
|
|
34
|
+
its bytes.
|
|
35
|
+
|
|
36
|
+
Other ``image/*`` subtypes (e.g. ``image/jpg``) still pass through unchanged.
|
|
37
|
+
"""
|
|
38
|
+
try:
|
|
39
|
+
FileMimeType(mime)
|
|
40
|
+
return mime
|
|
41
|
+
except ValueError:
|
|
42
|
+
pass
|
|
43
|
+
try:
|
|
44
|
+
ImageMimeType(mime)
|
|
45
|
+
return mime
|
|
46
|
+
except ValueError:
|
|
47
|
+
pass
|
|
48
|
+
if mime.startswith("image/"):
|
|
49
|
+
return mime
|
|
50
|
+
return "text/plain"
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
async def save_code_execution_artifact(
|
|
54
|
+
chat_service: ChatService,
|
|
55
|
+
file: AnnotationContainerFileCitation,
|
|
56
|
+
file_bytes: bytes,
|
|
57
|
+
) -> Content:
|
|
58
|
+
raw_mime = guess_type(file.filename)[0] or "text/plain"
|
|
59
|
+
mime = _kb_safe_mime(raw_mime)
|
|
60
|
+
|
|
61
|
+
if mime != raw_mime:
|
|
62
|
+
_LOGGER.info(
|
|
63
|
+
"MIME type '%s' is not supported by the Unique KB; "
|
|
64
|
+
"uploading '%s' as 'text/plain' so the file can be stored and downloaded.",
|
|
65
|
+
raw_mime,
|
|
66
|
+
file.filename,
|
|
67
|
+
)
|
|
68
|
+
|
|
69
|
+
_LOGGER.info(
|
|
70
|
+
"Uploading '%s' to knowledge base (%d bytes, mime type %s)",
|
|
71
|
+
file.filename,
|
|
72
|
+
len(file_bytes),
|
|
73
|
+
mime,
|
|
74
|
+
)
|
|
75
|
+
|
|
76
|
+
return await chat_service.upload_to_chat_from_bytes_async(
|
|
77
|
+
content=file_bytes,
|
|
78
|
+
content_name=file.filename,
|
|
79
|
+
mime_type=mime,
|
|
80
|
+
skip_ingestion=True,
|
|
81
|
+
hide_in_chat=True,
|
|
82
|
+
metadata={
|
|
83
|
+
_CODE_EXECUTION_ARTIFACT_METADATA_KEY: CodeExecutionArtifactMetadata(
|
|
84
|
+
container_id=file.container_id,
|
|
85
|
+
file_id=file.file_id,
|
|
86
|
+
filepath=f"/mnt/data/{file.filename}",
|
|
87
|
+
).model_dump()
|
|
88
|
+
},
|
|
89
|
+
)
|
|
90
|
+
|
|
91
|
+
|
|
92
|
+
def load_code_execution_metadata(
|
|
93
|
+
content: Content,
|
|
94
|
+
) -> CodeExecutionArtifactMetadata | None:
|
|
95
|
+
if (
|
|
96
|
+
content.metadata is None
|
|
97
|
+
or _CODE_EXECUTION_ARTIFACT_METADATA_KEY not in content.metadata
|
|
98
|
+
):
|
|
99
|
+
return None
|
|
100
|
+
|
|
101
|
+
return CodeExecutionArtifactMetadata.model_validate(
|
|
102
|
+
content.metadata[_CODE_EXECUTION_ARTIFACT_METADATA_KEY]
|
|
103
|
+
)
|
|
@@ -117,15 +117,6 @@ class DisplayCodeInterpreterFilesPostProcessorConfig(BaseModel):
|
|
|
117
117
|
"Applies per SDK attempt. The OpenAI SDK default of 600s is too generous "
|
|
118
118
|
"for small generated files; a shorter timeout lets us retry sooner.",
|
|
119
119
|
)
|
|
120
|
-
attach_office_preview: SkipJsonSchema[bool] = Field(
|
|
121
|
-
default=False,
|
|
122
|
-
description=(
|
|
123
|
-
"When True, convert Word/PowerPoint/Excel artifacts to a sibling "
|
|
124
|
-
"PDF and attach it as the chat side-panel preview. Default False "
|
|
125
|
-
"keeps the historical bytes-only upload. Conversion is best-effort "
|
|
126
|
-
"and falls back to the original file."
|
|
127
|
-
),
|
|
128
|
-
)
|
|
129
120
|
|
|
130
121
|
|
|
131
122
|
class _ContentInfo(NamedTuple):
|
|
@@ -771,7 +762,6 @@ class DisplayCodeInterpreterFilesPostProcessor(
|
|
|
771
762
|
chat_service=self._chat_service,
|
|
772
763
|
file=container_file,
|
|
773
764
|
file_bytes=file_bytes,
|
|
774
|
-
attach_office_preview=self._config.attach_office_preview,
|
|
775
765
|
)
|
|
776
766
|
upload_ms = (time.monotonic() - upload_t0) * 1000
|
|
777
767
|
if upload_ms > 2000:
|
{unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic_table/__init__.py
RENAMED
|
@@ -14,8 +14,6 @@ from .schemas import (
|
|
|
14
14
|
AgreementStatus,
|
|
15
15
|
ArtifactType,
|
|
16
16
|
CreatedMagicTableSheet,
|
|
17
|
-
LibrarySheetRowVerifiedMetadata,
|
|
18
|
-
LibrarySheetRowVerifiedRow,
|
|
19
17
|
LogEntry,
|
|
20
18
|
MagicTableAction,
|
|
21
19
|
MagicTableAddMetadataPayload,
|
|
@@ -28,13 +26,11 @@ from .schemas import (
|
|
|
28
26
|
MagicTableGenerateArtifactPayload,
|
|
29
27
|
MagicTableLibrarySheetRowVerifiedPayload,
|
|
30
28
|
MagicTableRerunRowPayload,
|
|
31
|
-
MagicTableRerunRowsPayload,
|
|
32
29
|
MagicTableSheet,
|
|
33
30
|
MagicTableSheetCompletedPayload,
|
|
34
31
|
MagicTableSheetCreatedPayload,
|
|
35
32
|
MagicTableUpdateCellPayload,
|
|
36
33
|
RerunRowMetadata,
|
|
37
|
-
RerunRowsMetadata,
|
|
38
34
|
RowMetadataEntry,
|
|
39
35
|
RowMetadataEntryInput,
|
|
40
36
|
SelectionMethod,
|
|
@@ -78,15 +74,11 @@ __all__ = [
|
|
|
78
74
|
"MagicTableGenerateArtifactPayload",
|
|
79
75
|
"MagicTableLibrarySheetRowVerifiedPayload",
|
|
80
76
|
"MagicTableRerunRowPayload",
|
|
81
|
-
"MagicTableRerunRowsPayload",
|
|
82
77
|
"MagicTableSheet",
|
|
83
78
|
"MagicTableSheetCompletedPayload",
|
|
84
79
|
"MagicTableSheetCreatedPayload",
|
|
85
80
|
"MagicTableUpdateCellPayload",
|
|
86
|
-
"LibrarySheetRowVerifiedMetadata",
|
|
87
|
-
"LibrarySheetRowVerifiedRow",
|
|
88
81
|
"RerunRowMetadata",
|
|
89
|
-
"RerunRowsMetadata",
|
|
90
82
|
"RowMetadataEntry",
|
|
91
83
|
"RowMetadataEntryInput",
|
|
92
84
|
"RowVerificationStatus",
|
{unique_toolkit-2026.36.0 → unique_toolkit-2026.36.0.dev1}/unique_toolkit/agentic_table/schemas.py
RENAMED
|
@@ -6,7 +6,6 @@ from pydantic import (
|
|
|
6
6
|
BaseModel,
|
|
7
7
|
Field,
|
|
8
8
|
field_validator,
|
|
9
|
-
model_validator,
|
|
10
9
|
)
|
|
11
10
|
from unique_sdk import (
|
|
12
11
|
AgenticTableSheetState,
|
|
@@ -23,10 +22,7 @@ from unique_sdk.api_resources._agentic_table import (
|
|
|
23
22
|
)
|
|
24
23
|
|
|
25
24
|
from unique_toolkit._common.exception import ConfigurationException
|
|
26
|
-
from unique_toolkit._common.pydantic_helpers import
|
|
27
|
-
NoneToDefault,
|
|
28
|
-
get_configuration_dict,
|
|
29
|
-
)
|
|
25
|
+
from unique_toolkit._common.pydantic_helpers import get_configuration_dict
|
|
30
26
|
from unique_toolkit.app.schemas import (
|
|
31
27
|
AssistantWebhookEvent,
|
|
32
28
|
BaseEventPayload,
|
|
@@ -48,7 +44,6 @@ class MagicTableEventTypes(StrEnum):
|
|
|
48
44
|
LIBRARY_SHEET_ROW_VERIFIED = "unique.magic-table.library-sheet-row.verified"
|
|
49
45
|
SHEET_CREATED = "unique.magic-table.sheet-created"
|
|
50
46
|
RERUN_ROW = "unique.magic-table.rerun-row"
|
|
51
|
-
RERUN_ROWS = "unique.magic-table.rerun-rows"
|
|
52
47
|
|
|
53
48
|
|
|
54
49
|
class BaseMetadata(BaseModel):
|
|
@@ -216,61 +211,9 @@ class MagicTableSheetCreatedPayload(
|
|
|
216
211
|
########## Library Sheet Row Verified Payload ##########
|
|
217
212
|
|
|
218
213
|
|
|
219
|
-
class LibrarySheetRowVerifiedRow(BaseModel):
|
|
220
|
-
model_config = get_configuration_dict()
|
|
221
|
-
row_order: int = Field(description="The row index of a verified row.")
|
|
222
|
-
row_id: str | None = Field(
|
|
223
|
-
default=None,
|
|
224
|
-
description="Optional pairing ID for a verified row.",
|
|
225
|
-
)
|
|
226
|
-
|
|
227
|
-
|
|
228
214
|
class LibrarySheetRowVerifiedMetadata(BaseMetadata):
|
|
229
215
|
model_config = get_configuration_dict()
|
|
230
|
-
row_order: int = Field(
|
|
231
|
-
description="The row index of the first (or only) verified row."
|
|
232
|
-
)
|
|
233
|
-
row_id: str | None = Field(
|
|
234
|
-
default=None,
|
|
235
|
-
description=(
|
|
236
|
-
"Optional pairing id for the first verified row. Ingest keys off "
|
|
237
|
-
"row_order (or rows[].row_order). Omitted or null stays None so "
|
|
238
|
-
"legacy payloads that only send rowOrder still parse."
|
|
239
|
-
),
|
|
240
|
-
)
|
|
241
|
-
rows: Annotated[list[LibrarySheetRowVerifiedRow], NoneToDefault] = Field(
|
|
242
|
-
default_factory=list,
|
|
243
|
-
description="The full batch of verified rows, including the first row.",
|
|
244
|
-
)
|
|
245
|
-
|
|
246
|
-
@model_validator(mode="after")
|
|
247
|
-
def validate_first_row_matches_scalars(self) -> "LibrarySheetRowVerifiedMetadata":
|
|
248
|
-
"""Keep old scalar consumers and new batch consumers on the same first row."""
|
|
249
|
-
if not self.rows:
|
|
250
|
-
return self
|
|
251
|
-
|
|
252
|
-
first_row = self.rows[0]
|
|
253
|
-
if first_row.row_order != self.row_order:
|
|
254
|
-
raise ValueError("rows[0].row_order must match row_order")
|
|
255
|
-
if (
|
|
256
|
-
self.row_id is not None
|
|
257
|
-
and first_row.row_id is not None
|
|
258
|
-
and first_row.row_id != self.row_id
|
|
259
|
-
):
|
|
260
|
-
raise ValueError("rows[0].row_id must match row_id")
|
|
261
|
-
return self
|
|
262
|
-
|
|
263
|
-
@property
|
|
264
|
-
def verified_rows(self) -> list[LibrarySheetRowVerifiedRow]:
|
|
265
|
-
"""Return one normalized row list for both legacy and bulk payloads."""
|
|
266
|
-
if self.rows:
|
|
267
|
-
return self.rows
|
|
268
|
-
return [
|
|
269
|
-
LibrarySheetRowVerifiedRow(
|
|
270
|
-
row_order=self.row_order,
|
|
271
|
-
row_id=self.row_id,
|
|
272
|
-
)
|
|
273
|
-
]
|
|
216
|
+
row_order: int = Field(description="The row index of the row that was verified.")
|
|
274
217
|
|
|
275
218
|
|
|
276
219
|
class MagicTableLibrarySheetRowVerifiedPayload(
|
|
@@ -305,48 +248,6 @@ class MagicTableRerunRowPayload(
|
|
|
305
248
|
): ...
|
|
306
249
|
|
|
307
250
|
|
|
308
|
-
########## Rerun Rows Payload ##########
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
class RerunRowsMetadata(BaseMetadata):
|
|
312
|
-
"""Metadata of a bulk re-run: one event carrying N rows of the same sheet."""
|
|
313
|
-
|
|
314
|
-
model_config = get_configuration_dict()
|
|
315
|
-
source_file_ids: Annotated[list[str], NoneToDefault] = Field(
|
|
316
|
-
default_factory=list,
|
|
317
|
-
description=(
|
|
318
|
-
"Source file IDs for this rerun. Optional: a user-triggered bulk "
|
|
319
|
-
"rerun may omit sources when none changed. Null and omitted become []."
|
|
320
|
-
),
|
|
321
|
-
)
|
|
322
|
-
row_orders: Annotated[list[int], NoneToDefault] = Field(
|
|
323
|
-
default_factory=list,
|
|
324
|
-
description=(
|
|
325
|
-
"1-based content row indices to rerun, in first-seen selection order. "
|
|
326
|
-
"Duplicates are dropped. Row 0 is the header and negatives address "
|
|
327
|
-
"nothing, so non-positive values are discarded. Empty means no work."
|
|
328
|
-
),
|
|
329
|
-
)
|
|
330
|
-
context: str = Field(default="", description="The context text for the rerun.")
|
|
331
|
-
|
|
332
|
-
@field_validator("row_orders", mode="after")
|
|
333
|
-
@classmethod
|
|
334
|
-
def normalize_row_orders(cls, v: list[int]) -> list[int]:
|
|
335
|
-
return list(dict.fromkeys(row for row in v if row > 0))
|
|
336
|
-
|
|
337
|
-
@field_validator("context", mode="before")
|
|
338
|
-
@classmethod
|
|
339
|
-
def normalize_context(cls, v):
|
|
340
|
-
if v is None:
|
|
341
|
-
return ""
|
|
342
|
-
return v
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
class MagicTableRerunRowsPayload(
|
|
346
|
-
MagicTableBasePayload[Literal[MagicTableAction.RERUN_ROWS], RerunRowsMetadata]
|
|
347
|
-
): ...
|
|
348
|
-
|
|
349
|
-
|
|
350
251
|
########### Magic Table Event definition ###########
|
|
351
252
|
|
|
352
253
|
|
|
@@ -358,7 +259,6 @@ PayloadTypes = (
|
|
|
358
259
|
| MagicTableLibrarySheetRowVerifiedPayload
|
|
359
260
|
| MagicTableSheetCreatedPayload
|
|
360
261
|
| MagicTableRerunRowPayload
|
|
361
|
-
| MagicTableRerunRowsPayload
|
|
362
262
|
)
|
|
363
263
|
|
|
364
264
|
MagicTablePayloadTypes = Annotated[PayloadTypes, Field(discriminator="action")]
|