unique_toolkit 2026.20.0__tar.gz → 2026.20.0.dev0__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 → unique_toolkit-2026.20.0.dev0}/PKG-INFO +3 -3
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/pyproject.toml +3 -123
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/_common/chunk_relevancy_sorter/schemas.py +1 -1
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/_common/chunk_relevancy_sorter/service.py +1 -9
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/_common/config_checker/validator.py +8 -8
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/_common/event_bus.py +4 -25
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/_common/pydantic/rjsf_tags.py +0 -1
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/_common/pydantic_helpers.py +1 -6
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/agentic/history_manager/history_manager.py +5 -1
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/agentic/loop_runner/_responses_stream_handler_utils.py +11 -2
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/agentic/loop_runner/base.py +11 -3
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/agentic/loop_runner/middleware/planning/planning.py +3 -49
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/agentic/message_log_manager/service.py +7 -2
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/agentic/tools/a2a/evaluation/_utils.py +1 -1
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/agentic/tools/a2a/postprocessing/references.py +1 -1
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/agentic/tools/a2a/tool/service.py +2 -2
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/agentic/tools/experimental/__init__.py +0 -8
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/agentic/tools/experimental/todo/config.py +0 -12
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/config.py +2 -14
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/service.py +94 -180
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/agentic/tools/tool_manager.py +0 -28
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/app/schemas.py +0 -21
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/chat/responses_api.py +24 -7
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/content/functions.py +5 -32
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/content/schemas.py +1 -22
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/content/service.py +0 -16
- {unique_toolkit-2026.20.0/unique_toolkit/experimental/resources → unique_toolkit-2026.20.0.dev0/unique_toolkit/experimental}/content_folder/__init__.py +3 -13
- {unique_toolkit-2026.20.0/unique_toolkit/experimental/resources → unique_toolkit-2026.20.0.dev0/unique_toolkit/experimental}/content_folder/functions.py +1 -1
- {unique_toolkit-2026.20.0/unique_toolkit/experimental/resources → unique_toolkit-2026.20.0.dev0/unique_toolkit/experimental}/content_folder/schemas.py +2 -2
- {unique_toolkit-2026.20.0/unique_toolkit/experimental/resources → unique_toolkit-2026.20.0.dev0/unique_toolkit/experimental}/content_folder/service.py +4 -4
- {unique_toolkit-2026.20.0/unique_toolkit/experimental/components → unique_toolkit-2026.20.0.dev0/unique_toolkit/experimental}/content_tree/__init__.py +7 -7
- {unique_toolkit-2026.20.0/unique_toolkit/experimental/components → unique_toolkit-2026.20.0.dev0/unique_toolkit/experimental}/content_tree/functions.py +3 -3
- {unique_toolkit-2026.20.0/unique_toolkit/experimental/components → unique_toolkit-2026.20.0.dev0/unique_toolkit/experimental}/content_tree/schemas.py +2 -2
- {unique_toolkit-2026.20.0/unique_toolkit/experimental/components → unique_toolkit-2026.20.0.dev0/unique_toolkit/experimental}/content_tree/service.py +4 -4
- unique_toolkit-2026.20.0.dev0/unique_toolkit/experimental/identity/__init__.py +48 -0
- unique_toolkit-2026.20.0.dev0/unique_toolkit/experimental/identity/functions.py +579 -0
- {unique_toolkit-2026.20.0/unique_toolkit/experimental/resources/user → unique_toolkit-2026.20.0.dev0/unique_toolkit/experimental/identity}/schemas.py +93 -13
- unique_toolkit-2026.20.0.dev0/unique_toolkit/experimental/identity/service.py +715 -0
- unique_toolkit-2026.20.0.dev0/unique_toolkit/experimental/scheduled_task/__init__.py +71 -0
- {unique_toolkit-2026.20.0/unique_toolkit/experimental/resources → unique_toolkit-2026.20.0.dev0/unique_toolkit/experimental}/scheduled_task/cron.py +1 -1
- {unique_toolkit-2026.20.0/unique_toolkit/experimental/resources → unique_toolkit-2026.20.0.dev0/unique_toolkit/experimental}/scheduled_task/functions.py +1 -1
- {unique_toolkit-2026.20.0/unique_toolkit/experimental/resources → unique_toolkit-2026.20.0.dev0/unique_toolkit/experimental}/scheduled_task/schemas.py +3 -3
- {unique_toolkit-2026.20.0/unique_toolkit/experimental/resources → unique_toolkit-2026.20.0.dev0/unique_toolkit/experimental}/scheduled_task/service.py +3 -3
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/language_model/infos.py +3 -151
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/language_model/reference.py +55 -11
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/language_model/schemas.py +1 -12
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/protocols/support.py +19 -5
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/services/chat_service.py +52 -208
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/services/factory.py +5 -21
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/services/knowledge_base.py +38 -41
- unique_toolkit-2026.20.0/unique_toolkit/_common/metadata_filter_scope.py +0 -47
- unique_toolkit-2026.20.0/unique_toolkit/agentic/message_log_order.py +0 -26
- unique_toolkit-2026.20.0/unique_toolkit/agentic/tools/a2a/postprocessing/test/test_references.py +0 -93
- unique_toolkit-2026.20.0/unique_toolkit/agentic/tools/experimental/retrieve_search_scope_tool/__init__.py +0 -13
- unique_toolkit-2026.20.0/unique_toolkit/agentic/tools/experimental/retrieve_search_scope_tool/config.py +0 -118
- unique_toolkit-2026.20.0/unique_toolkit/agentic/tools/experimental/retrieve_search_scope_tool/tool.py +0 -191
- unique_toolkit-2026.20.0/unique_toolkit/agentic/tools/names.py +0 -10
- unique_toolkit-2026.20.0/unique_toolkit/experimental/README.md +0 -258
- unique_toolkit-2026.20.0/unique_toolkit/experimental/_internal/__init__.py +0 -21
- unique_toolkit-2026.20.0/unique_toolkit/experimental/_internal/streaming/__init__.py +0 -35
- unique_toolkit-2026.20.0/unique_toolkit/experimental/_internal/streaming/common.py +0 -208
- unique_toolkit-2026.20.0/unique_toolkit/experimental/_internal/streaming/pattern_replacer.py +0 -222
- unique_toolkit-2026.20.0/unique_toolkit/experimental/components/__init__.py +0 -30
- unique_toolkit-2026.20.0/unique_toolkit/experimental/components/_base.py +0 -147
- unique_toolkit-2026.20.0/unique_toolkit/experimental/components/internal_search/__init__.py +0 -97
- unique_toolkit-2026.20.0/unique_toolkit/experimental/components/internal_search/base/__init__.py +0 -37
- unique_toolkit-2026.20.0/unique_toolkit/experimental/components/internal_search/base/config.py +0 -72
- unique_toolkit-2026.20.0/unique_toolkit/experimental/components/internal_search/base/schemas.py +0 -56
- unique_toolkit-2026.20.0/unique_toolkit/experimental/components/internal_search/base/service.py +0 -189
- unique_toolkit-2026.20.0/unique_toolkit/experimental/components/internal_search/base/utils.py +0 -183
- unique_toolkit-2026.20.0/unique_toolkit/experimental/components/internal_search/chat/__init__.py +0 -9
- unique_toolkit-2026.20.0/unique_toolkit/experimental/components/internal_search/chat/config.py +0 -27
- unique_toolkit-2026.20.0/unique_toolkit/experimental/components/internal_search/chat/schemas.py +0 -15
- unique_toolkit-2026.20.0/unique_toolkit/experimental/components/internal_search/chat/service.py +0 -61
- unique_toolkit-2026.20.0/unique_toolkit/experimental/components/internal_search/knowledge_base/__init__.py +0 -15
- unique_toolkit-2026.20.0/unique_toolkit/experimental/components/internal_search/knowledge_base/config.py +0 -61
- unique_toolkit-2026.20.0/unique_toolkit/experimental/components/internal_search/knowledge_base/schemas.py +0 -41
- unique_toolkit-2026.20.0/unique_toolkit/experimental/components/internal_search/knowledge_base/service.py +0 -119
- unique_toolkit-2026.20.0/unique_toolkit/experimental/components/internal_search/post_processing/__init__.py +0 -52
- unique_toolkit-2026.20.0/unique_toolkit/experimental/components/internal_search/post_processing/config.py +0 -61
- unique_toolkit-2026.20.0/unique_toolkit/experimental/components/internal_search/post_processing/service.py +0 -199
- unique_toolkit-2026.20.0/unique_toolkit/experimental/content_tree/__init__.py +0 -35
- unique_toolkit-2026.20.0/unique_toolkit/experimental/identity/__init__.py +0 -38
- unique_toolkit-2026.20.0/unique_toolkit/experimental/integrations/__init__.py +0 -12
- unique_toolkit-2026.20.0/unique_toolkit/experimental/integrations/openai/__init__.py +0 -1
- unique_toolkit-2026.20.0/unique_toolkit/experimental/integrations/openai/streaming/__init__.py +0 -1
- unique_toolkit-2026.20.0/unique_toolkit/experimental/integrations/openai/streaming/event_routing/__init__.py +0 -93
- unique_toolkit-2026.20.0/unique_toolkit/experimental/integrations/openai/streaming/event_routing/_async_bridge.py +0 -46
- unique_toolkit-2026.20.0/unique_toolkit/experimental/integrations/openai/streaming/event_routing/chat_completions/__init__.py +0 -15
- unique_toolkit-2026.20.0/unique_toolkit/experimental/integrations/openai/streaming/event_routing/chat_completions/complete_with_references.py +0 -484
- unique_toolkit-2026.20.0/unique_toolkit/experimental/integrations/openai/streaming/event_routing/chat_completions/stream_event_router.py +0 -163
- unique_toolkit-2026.20.0/unique_toolkit/experimental/integrations/openai/streaming/event_routing/chat_completions/text_event_handler.py +0 -140
- unique_toolkit-2026.20.0/unique_toolkit/experimental/integrations/openai/streaming/event_routing/chat_completions/tool_call_event_handler.py +0 -87
- unique_toolkit-2026.20.0/unique_toolkit/experimental/integrations/openai/streaming/event_routing/events.py +0 -174
- unique_toolkit-2026.20.0/unique_toolkit/experimental/integrations/openai/streaming/event_routing/protocols/__init__.py +0 -34
- unique_toolkit-2026.20.0/unique_toolkit/experimental/integrations/openai/streaming/event_routing/protocols/chat_completions.py +0 -43
- unique_toolkit-2026.20.0/unique_toolkit/experimental/integrations/openai/streaming/event_routing/protocols/responses.py +0 -97
- unique_toolkit-2026.20.0/unique_toolkit/experimental/integrations/openai/streaming/event_routing/responses/__init__.py +0 -23
- unique_toolkit-2026.20.0/unique_toolkit/experimental/integrations/openai/streaming/event_routing/responses/code_interpreter_event_handler.py +0 -111
- unique_toolkit-2026.20.0/unique_toolkit/experimental/integrations/openai/streaming/event_routing/responses/complete_with_references.py +0 -621
- unique_toolkit-2026.20.0/unique_toolkit/experimental/integrations/openai/streaming/event_routing/responses/completed_event_handler.py +0 -49
- unique_toolkit-2026.20.0/unique_toolkit/experimental/integrations/openai/streaming/event_routing/responses/stream_event_router.py +0 -215
- unique_toolkit-2026.20.0/unique_toolkit/experimental/integrations/openai/streaming/event_routing/responses/text_delta_event_handler.py +0 -97
- unique_toolkit-2026.20.0/unique_toolkit/experimental/integrations/openai/streaming/event_routing/responses/tool_call_event_handler.py +0 -103
- unique_toolkit-2026.20.0/unique_toolkit/experimental/integrations/openai/streaming/event_routing/subscribers/__init__.py +0 -8
- unique_toolkit-2026.20.0/unique_toolkit/experimental/integrations/openai/streaming/event_routing/subscribers/message_persister.py +0 -178
- unique_toolkit-2026.20.0/unique_toolkit/experimental/integrations/openai/streaming/event_routing/subscribers/progress_log_persister.py +0 -90
- unique_toolkit-2026.20.0/unique_toolkit/experimental/resources/__init__.py +0 -63
- unique_toolkit-2026.20.0/unique_toolkit/experimental/resources/facades/__init__.py +0 -29
- unique_toolkit-2026.20.0/unique_toolkit/experimental/resources/facades/identity/__init__.py +0 -51
- unique_toolkit-2026.20.0/unique_toolkit/experimental/resources/facades/identity/service.py +0 -113
- unique_toolkit-2026.20.0/unique_toolkit/experimental/resources/group/__init__.py +0 -70
- unique_toolkit-2026.20.0/unique_toolkit/experimental/resources/group/functions.py +0 -298
- unique_toolkit-2026.20.0/unique_toolkit/experimental/resources/group/schemas.py +0 -97
- unique_toolkit-2026.20.0/unique_toolkit/experimental/resources/group/service.py +0 -255
- unique_toolkit-2026.20.0/unique_toolkit/experimental/resources/scheduled_task/__init__.py +0 -55
- unique_toolkit-2026.20.0/unique_toolkit/experimental/resources/user/__init__.py +0 -60
- unique_toolkit-2026.20.0/unique_toolkit/experimental/resources/user/functions.py +0 -285
- unique_toolkit-2026.20.0/unique_toolkit/experimental/resources/user/service.py +0 -363
- unique_toolkit-2026.20.0/unique_toolkit/experimental/testing/__init__.py +0 -10
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/README.md +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/__init__.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/_common/__init__.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/_common/_base_service.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/_common/_time_utils.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/_common/api_calling/human_verification_manager.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/_common/base_model_type_attribute.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/_common/chunk_relevancy_sorter/config.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/_common/chunk_relevancy_sorter/exception.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/_common/chunk_relevancy_sorter/tests/test_service.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/_common/config_checker/README.md +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/_common/config_checker/__init__.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/_common/config_checker/__main__.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/_common/config_checker/cli.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/_common/config_checker/differ.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/_common/config_checker/exporter.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/_common/config_checker/models.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/_common/config_checker/registry.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/_common/default_language_model.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/_common/docx_generator/__init__.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/_common/docx_generator/config.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/_common/docx_generator/pandoc_converter.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/_common/docx_generator/schemas.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/_common/docx_generator/service.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/_common/docx_generator/template/Doc Template.docx +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/_common/endpoint_builder.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/_common/endpoint_requestor.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/_common/exception.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/_common/execution.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/_common/experimental/endpoint_builder.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/_common/experimental/endpoint_requestor.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/_common/experimental/write_up_agent/README.md +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/_common/experimental/write_up_agent/__init__.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/_common/experimental/write_up_agent/agent.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/_common/experimental/write_up_agent/config.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/_common/experimental/write_up_agent/examples/data.csv +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/_common/experimental/write_up_agent/examples/example_usage.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/_common/experimental/write_up_agent/schemas.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/_common/experimental/write_up_agent/services/__init__.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/_common/experimental/write_up_agent/services/dataframe_handler/__init__.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/_common/experimental/write_up_agent/services/dataframe_handler/exceptions.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/_common/experimental/write_up_agent/services/dataframe_handler/service.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/_common/experimental/write_up_agent/services/dataframe_handler/utils.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/__init__.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/config.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/exceptions.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/prompts/config.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/prompts/system_prompt.j2 +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/prompts/user_prompt.j2 +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/_common/experimental/write_up_agent/services/generation_handler/service.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/_common/experimental/write_up_agent/services/template_handler/__init__.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/_common/experimental/write_up_agent/services/template_handler/default_template.j2 +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/_common/experimental/write_up_agent/services/template_handler/exceptions.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/_common/experimental/write_up_agent/services/template_handler/service.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/_common/experimental/write_up_agent/services/template_handler/utils.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/_common/experimental/write_up_agent/utils.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/_common/feature_flags/schema.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/_common/referencing.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/_common/string_utilities.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/_common/tests/test_referencing.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/_common/tests/test_string_utilities.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/_common/token/__init__.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/_common/token/image_token_counting.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/_common/token/token_counting.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/_common/token/tokenizers/deepseek/tokenizer.json +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/_common/token/tokenizers/qwen/tokenizer.json +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/_common/utils/__init__.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/_common/utils/files.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/_common/utils/image/encode.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/_common/utils/jinja/helpers.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/_common/utils/jinja/render.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/_common/utils/jinja/schema.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/_common/utils/jinja/utils.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/_common/utils/structured_output/__init__.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/_common/utils/structured_output/schema.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/_common/utils/write_configuration.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/_common/validate_required_values.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/_common/validators.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/agentic/__init__.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/agentic/debug_info_manager/debug_info_manager.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/agentic/debug_info_manager/test/test_debug_info_manager.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/agentic/evaluation/config.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/agentic/evaluation/context_relevancy/prompts/__init__.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/agentic/evaluation/context_relevancy/prompts/system_prompt.j2 +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/agentic/evaluation/context_relevancy/prompts/user_prompt.j2 +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/agentic/evaluation/context_relevancy/schema.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/agentic/evaluation/context_relevancy/service.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/agentic/evaluation/evaluation_manager.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/agentic/evaluation/exception.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/agentic/evaluation/hallucination/constants.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/agentic/evaluation/hallucination/hallucination_evaluation.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/agentic/evaluation/hallucination/prompts/__init__.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/agentic/evaluation/hallucination/prompts/system_prompt.j2 +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/agentic/evaluation/hallucination/prompts/user_prompt.j2 +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/agentic/evaluation/hallucination/service.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/agentic/evaluation/hallucination/utils.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/agentic/evaluation/output_parser.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/agentic/evaluation/schemas.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/agentic/evaluation/tests/fixtures.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/agentic/evaluation/tests/test_config.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/agentic/evaluation/tests/test_context_relevancy_service.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/agentic/evaluation/tests/test_hallucination_constants.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/agentic/evaluation/tests/test_hallucination_utils.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/agentic/evaluation/tests/test_output_parser.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/agentic/evaluation/tests/test_prompt_loaders.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/agentic/evaluation/utils.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/agentic/feature_flags/__init__.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/agentic/feature_flags/feature_flags.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/agentic/history_manager/history_construction_with_contents.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/agentic/history_manager/loop_token_reducer.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/agentic/history_manager/utils.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/agentic/loop_runner/__init__.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/agentic/loop_runner/_iteration_handler_utils.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/agentic/loop_runner/_responses_iteration_handler_utils.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/agentic/loop_runner/_stream_handler_utils.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/agentic/loop_runner/middleware/__init__.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/agentic/loop_runner/middleware/planning/__init__.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/agentic/loop_runner/middleware/planning/schema.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/agentic/loop_runner/runners/__init__.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/agentic/loop_runner/runners/basic.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/agentic/loop_runner/runners/mistral/__init__.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/agentic/loop_runner/runners/mistral/mistral_runner.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/agentic/loop_runner/runners/qwen/__init__.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/agentic/loop_runner/runners/qwen/helpers.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/agentic/loop_runner/runners/qwen/qwen_runner.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/agentic/message_log_manager/__init__.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/agentic/postprocessor/postprocessor_manager.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/agentic/reference_manager/reference_manager.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/agentic/responses_api/__init__.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/agentic/responses_api/postprocessors/code_display.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/agentic/responses_api/postprocessors/generated_files.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/agentic/responses_api/stream_handler.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/agentic/short_term_memory_manager/persistent_short_term_memory_manager.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/agentic/thinking_manager/thinking_manager.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/agentic/tools/__init__.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/agentic/tools/a2a/__init__.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/agentic/tools/a2a/config.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/agentic/tools/a2a/evaluation/__init__.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/agentic/tools/a2a/evaluation/config.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/agentic/tools/a2a/evaluation/evaluator.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/agentic/tools/a2a/evaluation/summarization_user_message.j2 +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/agentic/tools/a2a/manager.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/agentic/tools/a2a/postprocessing/__init__.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/agentic/tools/a2a/postprocessing/_display_utils.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/agentic/tools/a2a/postprocessing/_ref_utils.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/agentic/tools/a2a/postprocessing/config.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/agentic/tools/a2a/postprocessing/display.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/agentic/tools/a2a/postprocessing/test/test_display.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/agentic/tools/a2a/postprocessing/test/test_display_utils.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/agentic/tools/a2a/postprocessing/test/test_ref_utils.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/agentic/tools/a2a/prompts.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/agentic/tools/a2a/response_watcher/__init__.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/agentic/tools/a2a/response_watcher/service.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/agentic/tools/a2a/tool/__init__.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/agentic/tools/a2a/tool/_memory.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/agentic/tools/a2a/tool/_schema.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/agentic/tools/a2a/tool/config.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/agentic/tools/a2a/tool/test/test_service_utils.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/agentic/tools/agent_chunks_hanlder.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/agentic/tools/config.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/agentic/tools/experimental/open_file_tool/__init__.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/agentic/tools/experimental/open_file_tool/config.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/agentic/tools/experimental/open_file_tool/runtime.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/agentic/tools/experimental/open_file_tool/tool.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/agentic/tools/experimental/todo/__init__.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/agentic/tools/experimental/todo/prompts/__init__.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/agentic/tools/experimental/todo/prompts/execution_reminder.j2 +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/agentic/tools/experimental/todo/prompts/system_prompt.j2 +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/agentic/tools/experimental/todo/prompts/tool_description.j2 +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/agentic/tools/experimental/todo/prompts/verification_nudge.j2 +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/agentic/tools/experimental/todo/schemas.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/agentic/tools/experimental/todo/service.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/agentic/tools/factory.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/agentic/tools/mcp/__init__.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/agentic/tools/mcp/manager.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/agentic/tools/mcp/models.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/agentic/tools/mcp/tool_wrapper.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/agentic/tools/openai_builtin/__init__.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/agentic/tools/openai_builtin/base.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/__init__.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/postprocessors/__init__.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/postprocessors/code_display.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/postprocessors/generated_files.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/agentic/tools/openai_builtin/code_interpreter/schemas.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/agentic/tools/openai_builtin/manager.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/agentic/tools/schemas.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/agentic/tools/test/test_mcp_manager.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/agentic/tools/test/test_tool_progress_reporter.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/agentic/tools/tool.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/agentic/tools/tool_progress_reporter.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/agentic/tools/utils/__init__.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/agentic/tools/utils/source_handling/__init__.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/agentic/tools/utils/source_handling/schema.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/agentic/tools/utils/source_handling/source_formatting.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/agentic/tools/utils/source_handling/tests/test_source_formatting.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/agentic_table/__init__.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/agentic_table/schemas.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/agentic_table/service.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/app/__init__.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/app/chat_event_filter_options_settings.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/app/dev_util.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/app/fast_api_factory.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/app/feature_flags.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/app/find_env_file.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/app/init_logging.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/app/init_sdk.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/app/performance/async_tasks.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/app/performance/async_wrapper.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/app/unique_settings.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/app/verification.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/app/webhook.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/chat/__init__.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/chat/cancellation.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/chat/constants.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/chat/deprecated/service.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/chat/functions.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/chat/rendering.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/chat/schemas.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/chat/service.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/chat/state.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/chat/utils.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/content/__init__.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/content/constants.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/content/smart_rules.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/content/utils.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/data_extraction/README.md +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/data_extraction/__init__.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/data_extraction/augmented/__init__.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/data_extraction/augmented/service.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/data_extraction/base.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/data_extraction/basic/__init__.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/data_extraction/basic/config.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/data_extraction/basic/prompt.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/data_extraction/basic/service.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/elicitation/__init__.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/elicitation/constants.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/elicitation/exceptions.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/elicitation/functions.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/elicitation/schemas.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/elicitation/service.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/embedding/__init__.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/embedding/constants.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/embedding/functions.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/embedding/schemas.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/embedding/service.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/embedding/utils.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/experimental/__init__.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/framework_utilities/__init__.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/framework_utilities/langchain/__init__.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/framework_utilities/langchain/client.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/framework_utilities/langchain/history.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/framework_utilities/openai/__init__.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/framework_utilities/openai/client.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/framework_utilities/openai/message_builder.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/framework_utilities/utils.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/language_model/__init__.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/language_model/_responses_api_utils.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/language_model/builder.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/language_model/constants.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/language_model/default_language_model.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/language_model/functions.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/language_model/prompt.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/language_model/service.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/language_model/stream_transform.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/language_model/utils.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/monitoring/__init__.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/monitoring/middleware.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/monitoring/registry.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/services/__init__.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/short_term_memory/__init__.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/short_term_memory/constants.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/short_term_memory/functions.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/short_term_memory/schemas.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/short_term_memory/service.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/smart_rules/__init__.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/smart_rules/compile.py +0 -0
- {unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/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.0
|
|
3
|
+
Version: 2026.20.0.dev0
|
|
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>=2026.20.0
|
|
19
|
+
Requires-Dist: unique-sdk>=2026.20.0.dev0
|
|
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.0"
|
|
3
|
+
version = "2026.20.0.dev0"
|
|
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>=2026.20.0",
|
|
31
|
+
"unique-sdk>=2026.20.0.dev0",
|
|
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,125 +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
|
-
# Imports under ``if TYPE_CHECKING:`` are excluded from the graph (see
|
|
141
|
-
# ``exclude_type_checking_imports``) so type-only imports (e.g. ``unique_sdk``)
|
|
142
|
-
# do not violate layer/forbidden contracts. Runtime imports are still enforced.
|
|
143
|
-
#
|
|
144
|
-
# Preference rules from the README that are NOT machine-enforced (import-linter
|
|
145
|
-
# is pass/fail, not tiered): integrations prefer facades over primitives;
|
|
146
|
-
# integrations importing components is "discouraged but allowed".
|
|
147
|
-
# -----------------------------------------------------------------------------
|
|
148
|
-
[tool.importlinter]
|
|
149
|
-
root_packages = ["unique_toolkit"]
|
|
150
|
-
include_external_packages = true
|
|
151
|
-
exclude_type_checking_imports = true
|
|
152
|
-
|
|
153
|
-
[[tool.importlinter.contracts]]
|
|
154
|
-
name = "experimental: integrations stack (integrations → resources → _internal)"
|
|
155
|
-
type = "layers"
|
|
156
|
-
layers = [
|
|
157
|
-
"unique_toolkit.experimental.integrations",
|
|
158
|
-
"unique_toolkit.experimental.resources",
|
|
159
|
-
"unique_toolkit.experimental._internal",
|
|
160
|
-
]
|
|
161
|
-
|
|
162
|
-
[[tool.importlinter.contracts]]
|
|
163
|
-
name = "experimental: components stack (components → resources → _internal)"
|
|
164
|
-
type = "layers"
|
|
165
|
-
layers = [
|
|
166
|
-
"unique_toolkit.experimental.components",
|
|
167
|
-
"unique_toolkit.experimental.resources",
|
|
168
|
-
"unique_toolkit.experimental._internal",
|
|
169
|
-
]
|
|
170
|
-
|
|
171
|
-
[[tool.importlinter.contracts]]
|
|
172
|
-
name = "experimental: components never import integrations"
|
|
173
|
-
type = "forbidden"
|
|
174
|
-
source_modules = ["unique_toolkit.experimental.components"]
|
|
175
|
-
forbidden_modules = ["unique_toolkit.experimental.integrations"]
|
|
176
|
-
|
|
177
|
-
[[tool.importlinter.contracts]]
|
|
178
|
-
name = "experimental: primitive resources are independent"
|
|
179
|
-
type = "independence"
|
|
180
|
-
modules = [
|
|
181
|
-
"unique_toolkit.experimental.resources.user",
|
|
182
|
-
"unique_toolkit.experimental.resources.group",
|
|
183
|
-
"unique_toolkit.experimental.resources.content_folder",
|
|
184
|
-
"unique_toolkit.experimental.resources.scheduled_task",
|
|
185
|
-
]
|
|
186
|
-
|
|
187
|
-
[[tool.importlinter.contracts]]
|
|
188
|
-
name = "experimental: primitives never import facades"
|
|
189
|
-
type = "forbidden"
|
|
190
|
-
source_modules = [
|
|
191
|
-
"unique_toolkit.experimental.resources.user",
|
|
192
|
-
"unique_toolkit.experimental.resources.group",
|
|
193
|
-
"unique_toolkit.experimental.resources.content_folder",
|
|
194
|
-
"unique_toolkit.experimental.resources.scheduled_task",
|
|
195
|
-
]
|
|
196
|
-
forbidden_modules = ["unique_toolkit.experimental.resources.facades"]
|
|
197
|
-
|
|
198
|
-
[[tool.importlinter.contracts]]
|
|
199
|
-
name = "experimental: facades never import other facades"
|
|
200
|
-
type = "independence"
|
|
201
|
-
modules = ["unique_toolkit.experimental.resources.facades.*"]
|
|
202
|
-
|
|
203
|
-
[[tool.importlinter.contracts]]
|
|
204
|
-
name = "experimental: facades compose primitives only"
|
|
205
|
-
type = "forbidden"
|
|
206
|
-
source_modules = ["unique_toolkit.experimental.resources.facades"]
|
|
207
|
-
forbidden_modules = [
|
|
208
|
-
"unique_sdk",
|
|
209
|
-
"unique_toolkit.experimental.components",
|
|
210
|
-
"unique_toolkit.experimental.integrations",
|
|
211
|
-
]
|
|
212
|
-
# Facades legitimately reach `unique_sdk` transitively through primitive
|
|
213
|
-
# resources (that's the whole point). This flag restricts the check to
|
|
214
|
-
# *direct* `import unique_sdk` statements inside facade modules.
|
|
215
|
-
allow_indirect_imports = true
|
|
216
|
-
|
|
217
|
-
[[tool.importlinter.contracts]]
|
|
218
|
-
name = "experimental: components never call unique_sdk directly"
|
|
219
|
-
type = "forbidden"
|
|
220
|
-
source_modules = ["unique_toolkit.experimental.components"]
|
|
221
|
-
forbidden_modules = ["unique_sdk"]
|
|
222
|
-
# Components are allowed to reach `unique_sdk` indirectly through a
|
|
223
|
-
# resource or an existing toolkit service; the rule only bans a *direct*
|
|
224
|
-
# `import unique_sdk` inside a component module.
|
|
225
|
-
allow_indirect_imports = true
|
|
226
|
-
|
|
227
|
-
# Uncomment and populate once concrete integrations exist under
|
|
228
|
-
# unique_toolkit/experimental/integrations/<framework>/.
|
|
229
|
-
# [[tool.importlinter.contracts]]
|
|
230
|
-
# name = "experimental: integrations are mutually independent"
|
|
231
|
-
# type = "independence"
|
|
232
|
-
# modules = [
|
|
233
|
-
# "unique_toolkit.experimental.integrations.openai",
|
|
234
|
-
# "unique_toolkit.experimental.integrations.langchain",
|
|
235
|
-
# ]
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
121
|
[tool.ruff]
|
|
242
122
|
target-version = "py312"
|
|
243
123
|
exclude = [".venv", "docs"]
|
|
@@ -11,7 +11,7 @@ class ChunkRelevancy(BaseModel):
|
|
|
11
11
|
relevancy: EvaluationMetricResult | None = None
|
|
12
12
|
|
|
13
13
|
def get_document_name(self):
|
|
14
|
-
title = self.chunk.key or self.chunk.title or "
|
|
14
|
+
title = self.chunk.key or self.chunk.title or "Unkown"
|
|
15
15
|
return title.split(":")[0]
|
|
16
16
|
|
|
17
17
|
def get_page_number(self):
|
|
@@ -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
|
|
{unique_toolkit-2026.20.0 → unique_toolkit-2026.20.0.dev0}/unique_toolkit/_common/event_bus.py
RENAMED
|
@@ -96,28 +96,7 @@ class TypedEventBus(Generic[T]):
|
|
|
96
96
|
async def publish_and_wait_async(
|
|
97
97
|
self, event: T, *, return_exceptions: bool = False
|
|
98
98
|
) -> None:
|
|
99
|
-
"""Invoke every handler and await completion.
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
at hot-path publish sites (e.g. ``text_delta``) where a single flaky
|
|
104
|
-
analytics subscriber should not abort the stream.
|
|
105
|
-
"""
|
|
106
|
-
handlers = list(self._handlers)
|
|
107
|
-
coros = [self._invoke(h, event) for h in handlers]
|
|
108
|
-
if not coros:
|
|
109
|
-
return
|
|
110
|
-
if return_exceptions:
|
|
111
|
-
results = await asyncio.gather(*coros, return_exceptions=True)
|
|
112
|
-
for handler, result in zip(handlers, results):
|
|
113
|
-
if isinstance(result, BaseException) and not isinstance(
|
|
114
|
-
result, asyncio.CancelledError
|
|
115
|
-
):
|
|
116
|
-
logger.error(
|
|
117
|
-
"Subscriber %r raised during publish; swallowing: %r",
|
|
118
|
-
handler,
|
|
119
|
-
result,
|
|
120
|
-
exc_info=result,
|
|
121
|
-
)
|
|
122
|
-
else:
|
|
123
|
-
await asyncio.gather(*coros)
|
|
99
|
+
"""Invoke every handler and await completion."""
|
|
100
|
+
coros = [self._invoke(h, event) for h in list(self._handlers)]
|
|
101
|
+
if coros:
|
|
102
|
+
await asyncio.gather(*coros, return_exceptions=return_exceptions)
|
|
@@ -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()
|
|
@@ -2,6 +2,8 @@ from typing import Any, Required, Sequence
|
|
|
2
2
|
|
|
3
3
|
from openai.types.responses import (
|
|
4
4
|
ResponseIncludable,
|
|
5
|
+
ResponseInputItemParam,
|
|
6
|
+
ResponseOutputItem,
|
|
5
7
|
ResponseTextConfigParam,
|
|
6
8
|
ToolParam,
|
|
7
9
|
response_create_params,
|
|
@@ -11,15 +13,22 @@ from typing_extensions import TypedDict
|
|
|
11
13
|
|
|
12
14
|
from unique_toolkit import LanguageModelToolDescription
|
|
13
15
|
from unique_toolkit.agentic.loop_runner.base import _ResponsesLoopIterationRunnerKwargs
|
|
16
|
+
from unique_toolkit.chat.service import LanguageModelMessages
|
|
14
17
|
from unique_toolkit.content import ContentChunk
|
|
15
18
|
from unique_toolkit.language_model.schemas import (
|
|
19
|
+
LanguageModelMessageOptions,
|
|
16
20
|
ResponsesLanguageModelStreamResponse,
|
|
17
|
-
ResponsesMessageInput,
|
|
18
21
|
)
|
|
19
22
|
|
|
20
23
|
|
|
21
24
|
class _ResponsesStreamingHandlerKwargs(TypedDict, total=False):
|
|
22
|
-
messages: Required[
|
|
25
|
+
messages: Required[
|
|
26
|
+
str
|
|
27
|
+
| LanguageModelMessages
|
|
28
|
+
| Sequence[
|
|
29
|
+
ResponseInputItemParam | LanguageModelMessageOptions | ResponseOutputItem
|
|
30
|
+
]
|
|
31
|
+
]
|
|
23
32
|
model_name: Required[str]
|
|
24
33
|
tools: Sequence[LanguageModelToolDescription | ToolParam]
|
|
25
34
|
content_chunks: list[ContentChunk]
|
|
@@ -1,8 +1,10 @@
|
|
|
1
|
-
from typing import Any, Protocol, Required, Unpack
|
|
1
|
+
from typing import Any, Protocol, Required, Sequence, Unpack
|
|
2
2
|
|
|
3
3
|
from openai.types.chat import ChatCompletionNamedToolChoiceParam
|
|
4
4
|
from openai.types.responses import (
|
|
5
5
|
ResponseIncludable,
|
|
6
|
+
ResponseInputItemParam,
|
|
7
|
+
ResponseOutputItem,
|
|
6
8
|
ResponseTextConfigParam,
|
|
7
9
|
ToolParam,
|
|
8
10
|
response_create_params,
|
|
@@ -16,8 +18,8 @@ from unique_toolkit.chat.service import LanguageModelMessages
|
|
|
16
18
|
from unique_toolkit.content import ContentChunk
|
|
17
19
|
from unique_toolkit.language_model.infos import LanguageModelInfo
|
|
18
20
|
from unique_toolkit.language_model.schemas import (
|
|
21
|
+
LanguageModelMessageOptions,
|
|
19
22
|
ResponsesLanguageModelStreamResponse,
|
|
20
|
-
ResponsesMessageInput,
|
|
21
23
|
)
|
|
22
24
|
from unique_toolkit.protocols.support import (
|
|
23
25
|
ResponsesSupportCompleteWithReferences,
|
|
@@ -53,7 +55,13 @@ class LoopIterationRunner(Protocol):
|
|
|
53
55
|
class _ResponsesLoopIterationRunnerKwargs(TypedDict, total=False):
|
|
54
56
|
iteration_index: Required[int]
|
|
55
57
|
streaming_handler: Required[ResponsesSupportCompleteWithReferences]
|
|
56
|
-
messages: Required[
|
|
58
|
+
messages: Required[
|
|
59
|
+
str
|
|
60
|
+
| LanguageModelMessages
|
|
61
|
+
| Sequence[
|
|
62
|
+
ResponseInputItemParam | LanguageModelMessageOptions | ResponseOutputItem
|
|
63
|
+
]
|
|
64
|
+
]
|
|
57
65
|
model: Required[LanguageModelInfo]
|
|
58
66
|
tools: list[LanguageModelToolDescription | ToolParam]
|
|
59
67
|
content_chunks: list[ContentChunk]
|
|
@@ -1,14 +1,12 @@
|
|
|
1
1
|
import json
|
|
2
2
|
import logging
|
|
3
|
-
from
|
|
4
|
-
from typing import Any, TypeGuard, Unpack
|
|
3
|
+
from typing import Any, Unpack
|
|
5
4
|
|
|
6
5
|
from openai import AsyncOpenAI
|
|
7
6
|
from openai.types.responses import (
|
|
8
7
|
Response,
|
|
9
8
|
ResponseFunctionToolCall,
|
|
10
9
|
ResponseInputItemParam,
|
|
11
|
-
ResponseOutputItem,
|
|
12
10
|
ToolParam,
|
|
13
11
|
)
|
|
14
12
|
from openai.types.responses.function_tool_param import FunctionToolParam
|
|
@@ -28,17 +26,13 @@ from unique_toolkit.agentic.loop_runner.middleware.planning.schema import (
|
|
|
28
26
|
PlanningSchemaConfig,
|
|
29
27
|
get_planning_schema,
|
|
30
28
|
)
|
|
31
|
-
from unique_toolkit.chat.responses_api import
|
|
32
|
-
_convert_messages_to_openai,
|
|
33
|
-
convert_messages_to_openai,
|
|
34
|
-
)
|
|
29
|
+
from unique_toolkit.chat.responses_api import convert_messages_to_openai
|
|
35
30
|
from unique_toolkit.chat.service import LanguageModelStreamResponse
|
|
36
31
|
from unique_toolkit.language_model import (
|
|
37
32
|
LanguageModelAssistantMessage,
|
|
38
33
|
LanguageModelUserMessage,
|
|
39
34
|
)
|
|
40
35
|
from unique_toolkit.language_model.schemas import (
|
|
41
|
-
LanguageModelMessageOptions,
|
|
42
36
|
LanguageModelMessages,
|
|
43
37
|
ResponsesLanguageModelStreamResponse,
|
|
44
38
|
)
|
|
@@ -51,30 +45,6 @@ _PLAN_TOOL_DESCRIPTION = (
|
|
|
51
45
|
"Record the plan for the next step. Call this tool exactly once."
|
|
52
46
|
)
|
|
53
47
|
|
|
54
|
-
|
|
55
|
-
def _is_language_model_messages(
|
|
56
|
-
msgs: Sequence[object],
|
|
57
|
-
) -> TypeGuard[list[LanguageModelMessageOptions]]:
|
|
58
|
-
return len(msgs) > 0 and all(
|
|
59
|
-
isinstance(m, LanguageModelMessageOptions) for m in msgs
|
|
60
|
-
)
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
def _is_response_input_items(
|
|
64
|
-
msgs: Sequence[object],
|
|
65
|
-
) -> TypeGuard[list[ResponseInputItemParam]]:
|
|
66
|
-
return len(msgs) > 0 and all(isinstance(m, dict) for m in msgs)
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
def _is_response_output_items(
|
|
70
|
-
msgs: Sequence[object],
|
|
71
|
-
) -> TypeGuard[list[ResponseOutputItem]]:
|
|
72
|
-
return len(msgs) > 0 and all(
|
|
73
|
-
isinstance(m, BaseModel) and not isinstance(m, LanguageModelMessageOptions)
|
|
74
|
-
for m in msgs
|
|
75
|
-
)
|
|
76
|
-
|
|
77
|
-
|
|
78
48
|
# Kwargs from _ResponsesLoopIterationRunnerKwargs that make sense to forward to
|
|
79
49
|
# the planning `responses.create` call. We deliberately exclude anything that
|
|
80
50
|
# conflicts with the forced-tool-call setup (`tools`, `tool_choices`, `text`,
|
|
@@ -300,22 +270,6 @@ class ResponsesPlanningMiddleware(ResponsesLoopIterationRunner):
|
|
|
300
270
|
kwargs["messages"].builder().append(assistant_message).build()
|
|
301
271
|
)
|
|
302
272
|
else:
|
|
303
|
-
|
|
304
|
-
assistant_items = _convert_messages_to_openai([assistant_message])
|
|
305
|
-
if _is_language_model_messages(message_items):
|
|
306
|
-
kwargs["messages"] = [*message_items, assistant_message]
|
|
307
|
-
elif _is_response_input_items(message_items):
|
|
308
|
-
kwargs["messages"] = [*message_items, *assistant_items]
|
|
309
|
-
elif _is_response_output_items(message_items):
|
|
310
|
-
kwargs["messages"] = [
|
|
311
|
-
*_convert_messages_to_openai(message_items),
|
|
312
|
-
*assistant_items,
|
|
313
|
-
]
|
|
314
|
-
else:
|
|
315
|
-
raise TypeError(
|
|
316
|
-
"messages must be a homogeneous list of "
|
|
317
|
-
"LanguageModelMessageOptions, ResponseInputItemParam dicts, "
|
|
318
|
-
"or ResponseOutputItem models"
|
|
319
|
-
)
|
|
273
|
+
kwargs["messages"] = list(kwargs["messages"]) + [assistant_message]
|
|
320
274
|
|
|
321
275
|
return await self._loop_runner(**kwargs)
|
|
@@ -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,
|
|
@@ -48,7 +48,7 @@ def get_valid_assessments(
|
|
|
48
48
|
or assessment["label"] not in ChatMessageAssessmentLabel
|
|
49
49
|
):
|
|
50
50
|
logger.warning(
|
|
51
|
-
"
|
|
51
|
+
"Unkown assistant label %s for assistant %s (sequence number: %s) will be ignored",
|
|
52
52
|
assessment["label"],
|
|
53
53
|
display_name,
|
|
54
54
|
sequence_number,
|
|
@@ -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.",
|