language-model-common 2.0.89__tar.gz → 2.0.91__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.
- {language_model_common-2.0.89/language_model_common.egg-info → language_model_common-2.0.91}/PKG-INFO +1 -1
- language_model_common-2.0.91/VERSION +1 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91/language_model_common.egg-info}/PKG-INFO +1 -1
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/converters/streaming_manager.py +0 -9
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/mcp/mcp_client/langchain_adapter.py +0 -2
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/mcp/mcp_client/tool_invocation.py +11 -77
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/mcp/mcp_tool_provider.py +0 -22
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/models/model_factory.py +39 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/structures/openai/request/chat_completion_api_request_wrapper.py +0 -23
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/structures/openai/request/chat_request_wrapper.py +0 -15
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/structures/openai/request/responses_api_request_wrapper.py +0 -23
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/utilities/environment/language_model_common_environment_variables.py +0 -16
- language_model_common-2.0.89/VERSION +0 -1
- {language_model_common-2.0.89 → language_model_common-2.0.91}/LICENSE +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/MANIFEST.in +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/README.md +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/language_model_common.egg-info/SOURCES.txt +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/language_model_common.egg-info/dependency_links.txt +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/language_model_common.egg-info/requires.txt +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/language_model_common.egg-info/top_level.txt +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/__init__.py +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/auth/__init__.py +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/auth/authenticator/__init__.py +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/auth/exceptions/__init__.py +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/auth/exceptions/authorization_mcp_tool_token_invalid_exception.py +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/auth/exceptions/authorization_token_cache_item_expired_exception.py +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/auth/exceptions/authorization_token_cache_item_not_found_exception.py +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/auth/models/__init__.py +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/auth/models/token_cache_item.py +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/auth/oauth_provider_registrar.py +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/auth/pass_through_token_manager.py +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/auth/token_exchange/__init__.py +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/auth/token_exchange/token_exchange_manager.py +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/auth/token_storage_auth_manager.py +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/auth/tools/__init__.py +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/auth/tools/tool_auth_manager.py +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/aws/__init__.py +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/aws/aws_client_factory.py +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/configs/__init__.py +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/configs/config_reader/__init__.py +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/configs/config_reader/config_reader.py +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/configs/config_reader/file_config_reader.py +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/configs/config_reader/github_directory_downloader.py +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/configs/config_reader/github_directory_helper.py +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/configs/config_reader/mcp_json_fetcher.py +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/configs/config_reader/mcp_json_reader.py +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/configs/config_reader/s3_config_reader.py +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/configs/prompt_library/__init__.py +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/configs/prompt_library/prompt_library_environment_variables.py +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/configs/prompt_library/prompt_library_manager.py +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/configs/prompt_library/prompt_store.py +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/configs/schemas/__init__.py +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/configs/schemas/config_schema.py +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/configs/schemas/mcp_json_schema.py +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/container/__init__.py +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/container/container_factory.py +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/context/__init__.py +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/context/request_context.py +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/converters/__init__.py +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/converters/langgraph_to_openai_converter.py +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/converters/stream_buffer.py +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/converters/stream_context_mixin.py +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/converters/stream_debug_output_manager.py +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/converters/streaming_formatters.py +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/converters/streaming_tool_node.py +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/converters/tool_event_handlers.py +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/exceptions/__init__.py +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/exceptions/bailey_exception.py +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/exceptions/rate_limit_exception.py +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/file_managers/__init__.py +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/file_managers/aws_s3_file_manager.py +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/file_managers/file_manager.py +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/file_managers/file_manager_factory.py +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/file_managers/file_writer.py +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/file_managers/local_file_manager.py +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/github/__init__.py +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/github/token_provider.py +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/graph/__init__.py +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/graph/graph_builder.py +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/history/__init__.py +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/history/context_compactor.py +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/history/conversation_history_manager.py +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/history/smart_history_manager.py +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/http/__init__.py +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/http/http_client_factory.py +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/image_generation/__init__.py +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/image_generation/aws_image_generator.py +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/image_generation/image_generator.py +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/image_generation/image_generator_factory.py +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/image_generation/managers/__init__.py +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/image_generation/managers/image_generation_manager.py +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/image_generation/openai_image_generator.py +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/image_generation/providers/__init__.py +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/image_generation/providers/base_image_generation_provider.py +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/image_generation/providers/image_generation_provider.py +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/markdown/__init__.py +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/markdown/html_to_markdown_converter.py +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/mcp/__init__.py +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/mcp/auth/__init__.py +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/mcp/auth/auth_server_metadata_discovery.py +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/mcp/auth/mcp_authorization_helper.py +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/mcp/callbacks.py +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/mcp/exceptions/__init__.py +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/mcp/exceptions/mcp_tool_exception.py +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/mcp/exceptions/mcp_tool_not_found_exception.py +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/mcp/exceptions/mcp_tool_unauthorized_exception.py +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/mcp/exceptions/mcp_tool_unknown_exception.py +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/mcp/interceptors/__init__.py +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/mcp/interceptors/auth.py +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/mcp/interceptors/tracing.py +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/mcp/interceptors/truncation.py +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/mcp/interceptors/types.py +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/mcp/mcp_client/__init__.py +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/mcp/mcp_client/content_conversion.py +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/mcp/mcp_client/mcp_app_proxy.py +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/mcp/mcp_client/mcp_tool_list_store.py +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/mcp/mcp_client/server_card_discovery.py +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/mcp/mcp_client/session.py +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/mcp/mcp_client/session_pool.py +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/mcp/mcp_client/tool_list_cache.py +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/mcp/mcp_client/ui_resource.py +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/mcp/tool_catalog.py +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/mcp/tool_discovery_middleware.py +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/mocks/__init__.py +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/mocks/mock_aws_client_factory.py +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/mocks/mock_http_client_factory.py +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/mocks/mock_image_generator.py +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/mocks/mock_image_generator_factory.py +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/models/__init__.py +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/models/bedrock_models.py +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/models/sanitizing_bedrock_converse.py +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/ocr/__init__.py +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/ocr/aws_ocr_extractor.py +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/ocr/ocr_extractor.py +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/ocr/ocr_extractor_factory.py +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/persistence/__init__.py +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/persistence/persistence_factory.py +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/pipeline/__init__.py +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/pipeline/context.py +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/pipeline/output/__init__.py +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/pipeline/pipeline.py +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/pipeline/step.py +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/pipeline/steps/__init__.py +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/py.typed +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/schema/__init__.py +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/schema/openai/__init__.py +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/schema/openai/completions.py +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/schema/openai/image_generation.py +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/schema/openai/responses.py +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/state/__init__.py +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/state/messages_state.py +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/structures/__init__.py +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/structures/openai/__init__.py +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/structures/openai/message/__init__.py +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/structures/openai/message/chat_completion_api_message_wrapper.py +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/structures/openai/message/chat_message_wrapper.py +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/structures/openai/message/responses_api_message_wrapper.py +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/structures/openai/request/__init__.py +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/tools/__init__.py +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/tools/mcp/__init__.py +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/tools/mcp/call_tool_tool.py +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/tools/mcp/search_tools_tool.py +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/utilities/__init__.py +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/utilities/cache/__init__.py +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/utilities/cache/advisory_lock.py +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/utilities/cache/model_config_cache_store.py +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/utilities/chat_message_helpers.py +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/utilities/config_substitution.py +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/utilities/environment/__init__.py +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/utilities/header_reader/__init__.py +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/utilities/header_reader/header_reader.py +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/utilities/logger/__init__.py +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/utilities/logger/debug_configuration.py +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/utilities/logger/exception_formatter.py +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/utilities/logger/exception_logger.py +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/utilities/logger/log_levels.py +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/utilities/logger/logging_response.py +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/utilities/logger/logging_transport.py +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/utilities/message_preprocessing/__init__.py +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/utilities/message_preprocessing/composite_message_preprocessor.py +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/utilities/message_preprocessing/message_preprocessor.py +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/utilities/mongo_url_utils.py +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/utilities/openai/__init__.py +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/utilities/openai/responses_api_converter.py +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/utilities/request_information.py +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/utilities/s3_url.py +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/utilities/security/__init__.py +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/utilities/security/normalize.py +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/utilities/security/off_topic_detector.py +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/utilities/security/prompt_extraction_detector.py +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/utilities/security/prompt_sanitizer.py +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/utilities/slash_command/__init__.py +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/utilities/slash_command/handlers/__init__.py +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/utilities/slash_command/handlers/debug_command_handler.py +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/utilities/slash_command/handlers/skill_command_handler.py +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/utilities/slash_command/slash_command_handler.py +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/utilities/slash_command/slash_command_parser.py +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/utilities/slash_command/slash_command_processor.py +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/utilities/text_humanizer.py +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/utilities/token_reducer/__init__.py +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/utilities/token_reducer/token_reducer.py +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/utilities/tool_display_name_mapper.py +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/utilities/url_parser.py +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/pyproject.toml +0 -0
- {language_model_common-2.0.89 → language_model_common-2.0.91}/setup.cfg +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
2.0.91
|
|
@@ -379,15 +379,6 @@ class LangGraphStreamingManager(StreamContextMixin):
|
|
|
379
379
|
)
|
|
380
380
|
if chunk:
|
|
381
381
|
yield chunk
|
|
382
|
-
elif name == "mcp_tool_heartbeat":
|
|
383
|
-
data = dict(event.get("data", {}))
|
|
384
|
-
chunk = chat_request_wrapper.create_tool_heartbeat_sse_event(
|
|
385
|
-
request_id=request_information.request_id,
|
|
386
|
-
tool_name=data.get("tool_name", "unknown"),
|
|
387
|
-
elapsed_seconds=float(data.get("elapsed_seconds", 0.0)),
|
|
388
|
-
)
|
|
389
|
-
if chunk:
|
|
390
|
-
yield chunk
|
|
391
382
|
else:
|
|
392
383
|
logger.debug("Skipped custom event: %s", name)
|
|
393
384
|
|
|
@@ -62,7 +62,6 @@ def mcp_tool_to_langchain_tool(
|
|
|
62
62
|
server_name: str | None = None,
|
|
63
63
|
session_pool: McpSessionPool | None = None,
|
|
64
64
|
tool_list_cache: ToolListCache | None = None,
|
|
65
|
-
heartbeat_interval_seconds: float = 15.0,
|
|
66
65
|
) -> BaseTool:
|
|
67
66
|
"""Convert an MCP Tool to a LangChain BaseTool.
|
|
68
67
|
|
|
@@ -85,7 +84,6 @@ def mcp_tool_to_langchain_tool(
|
|
|
85
84
|
mcp_callbacks=mcp_callbacks,
|
|
86
85
|
session_pool=session_pool,
|
|
87
86
|
tool_list_cache=tool_list_cache,
|
|
88
|
-
heartbeat_interval_seconds=heartbeat_interval_seconds,
|
|
89
87
|
)
|
|
90
88
|
handler = build_interceptor_chain(
|
|
91
89
|
base_handler=execute_tool, tool_interceptors=tool_interceptors
|
|
@@ -1,12 +1,9 @@
|
|
|
1
1
|
"""Tool invocation — interceptor chain and raw MCP tool calls."""
|
|
2
2
|
|
|
3
|
-
import asyncio
|
|
4
|
-
import contextlib
|
|
5
3
|
import logging
|
|
6
4
|
from collections.abc import Awaitable, Callable
|
|
7
5
|
from typing import Any
|
|
8
6
|
|
|
9
|
-
from langchain_core.callbacks.manager import adispatch_custom_event
|
|
10
7
|
from mcp.types import CallToolResult
|
|
11
8
|
from pydantic import ValidationError
|
|
12
9
|
|
|
@@ -177,6 +174,8 @@ async def _execute_tool_as_task(
|
|
|
177
174
|
Raises TaskProtocolError if the server does not respond with a valid
|
|
178
175
|
CreateTaskResult (e.g., returns a plain CallToolResult instead).
|
|
179
176
|
"""
|
|
177
|
+
from langchain_core.callbacks.manager import adispatch_custom_event
|
|
178
|
+
|
|
180
179
|
try:
|
|
181
180
|
create_result = await session.experimental.call_tool_as_task(
|
|
182
181
|
name, arguments, ttl=60000
|
|
@@ -223,66 +222,12 @@ async def _execute_tool_as_task(
|
|
|
223
222
|
return result
|
|
224
223
|
|
|
225
224
|
|
|
226
|
-
async def _execute_tool_call_with_heartbeat(
|
|
227
|
-
*,
|
|
228
|
-
session: Any,
|
|
229
|
-
name: str,
|
|
230
|
-
arguments: dict[str, Any],
|
|
231
|
-
progress_callback: Any,
|
|
232
|
-
server_name: str,
|
|
233
|
-
heartbeat_interval_seconds: float,
|
|
234
|
-
) -> CallToolResult:
|
|
235
|
-
"""Call ``session.call_tool``, emitting a synthetic ``mcp_tool_heartbeat``
|
|
236
|
-
custom event every ``heartbeat_interval_seconds`` while the call is in
|
|
237
|
-
flight, regardless of whether the tool reports real progress.
|
|
238
|
-
|
|
239
|
-
Uses ``asyncio.shield`` so a heartbeat tick's wait_for timeout never
|
|
240
|
-
cancels the underlying tool call -- only the local wait is abandoned and
|
|
241
|
-
retried on the same call_task. If this coroutine itself is cancelled
|
|
242
|
-
(e.g. the overall chat turn is aborted), the inner call_task is
|
|
243
|
-
cancelled too rather than left running in the background.
|
|
244
|
-
"""
|
|
245
|
-
call_task: "asyncio.Task[CallToolResult]" = asyncio.ensure_future(
|
|
246
|
-
session.call_tool(name, arguments, progress_callback=progress_callback)
|
|
247
|
-
)
|
|
248
|
-
elapsed_seconds = 0.0
|
|
249
|
-
try:
|
|
250
|
-
while True:
|
|
251
|
-
try:
|
|
252
|
-
return await asyncio.wait_for(
|
|
253
|
-
asyncio.shield(call_task), timeout=heartbeat_interval_seconds
|
|
254
|
-
)
|
|
255
|
-
except asyncio.TimeoutError:
|
|
256
|
-
elapsed_seconds += heartbeat_interval_seconds
|
|
257
|
-
try:
|
|
258
|
-
await adispatch_custom_event(
|
|
259
|
-
"mcp_tool_heartbeat",
|
|
260
|
-
{
|
|
261
|
-
"server_name": server_name,
|
|
262
|
-
"tool_name": name,
|
|
263
|
-
"elapsed_seconds": elapsed_seconds,
|
|
264
|
-
},
|
|
265
|
-
)
|
|
266
|
-
except RuntimeError as e:
|
|
267
|
-
logger.debug(
|
|
268
|
-
"Skipping mcp_tool_heartbeat event dispatch: %s (tool=%s)",
|
|
269
|
-
e,
|
|
270
|
-
name,
|
|
271
|
-
)
|
|
272
|
-
except asyncio.CancelledError:
|
|
273
|
-
call_task.cancel()
|
|
274
|
-
with contextlib.suppress(asyncio.CancelledError):
|
|
275
|
-
await call_task
|
|
276
|
-
raise
|
|
277
|
-
|
|
278
|
-
|
|
279
225
|
def _make_execute_tool(
|
|
280
226
|
*,
|
|
281
227
|
config: MCPConnectionConfig,
|
|
282
228
|
mcp_callbacks: _MCPCallbacks,
|
|
283
229
|
session_pool: McpSessionPool | None = None,
|
|
284
230
|
tool_list_cache: ToolListCache | None = None,
|
|
285
|
-
heartbeat_interval_seconds: float = 15.0,
|
|
286
231
|
) -> Callable[[MCPToolCallRequest], Awaitable[MCPToolCallResult]]:
|
|
287
232
|
"""Create an execute_tool handler that opens a session and calls the tool.
|
|
288
233
|
|
|
@@ -340,13 +285,10 @@ def _make_execute_tool(
|
|
|
340
285
|
)
|
|
341
286
|
if tool_list_cache is not None:
|
|
342
287
|
await tool_list_cache.invalidate_async(key=cache_key)
|
|
343
|
-
return await
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
arguments=request.args,
|
|
288
|
+
return await session.call_tool(
|
|
289
|
+
request.name,
|
|
290
|
+
request.args,
|
|
347
291
|
progress_callback=mcp_callbacks.progress_callback,
|
|
348
|
-
server_name=request.server_name,
|
|
349
|
-
heartbeat_interval_seconds=heartbeat_interval_seconds,
|
|
350
292
|
)
|
|
351
293
|
except Exception:
|
|
352
294
|
await session_pool.evict(effective_config)
|
|
@@ -382,22 +324,16 @@ def _make_execute_tool(
|
|
|
382
324
|
)
|
|
383
325
|
if tool_list_cache is not None:
|
|
384
326
|
await tool_list_cache.invalidate_async(key=cache_key)
|
|
385
|
-
result = await
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
arguments=request.args,
|
|
327
|
+
result = await session.call_tool(
|
|
328
|
+
request.name,
|
|
329
|
+
request.args,
|
|
389
330
|
progress_callback=mcp_callbacks.progress_callback,
|
|
390
|
-
server_name=request.server_name,
|
|
391
|
-
heartbeat_interval_seconds=heartbeat_interval_seconds,
|
|
392
331
|
)
|
|
393
332
|
else:
|
|
394
|
-
result = await
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
arguments=request.args,
|
|
333
|
+
result = await session.call_tool(
|
|
334
|
+
request.name,
|
|
335
|
+
request.args,
|
|
398
336
|
progress_callback=mcp_callbacks.progress_callback,
|
|
399
|
-
server_name=request.server_name,
|
|
400
|
-
heartbeat_interval_seconds=heartbeat_interval_seconds,
|
|
401
337
|
)
|
|
402
338
|
except Exception as e:
|
|
403
339
|
captured_exception = e
|
|
@@ -419,7 +355,6 @@ async def call_mcp_tool_raw(
|
|
|
419
355
|
tool_interceptors: list[ToolCallInterceptor] | None = None,
|
|
420
356
|
session_pool: McpSessionPool | None = None,
|
|
421
357
|
tool_list_cache: ToolListCache | None = None,
|
|
422
|
-
heartbeat_interval_seconds: float = 15.0,
|
|
423
358
|
) -> CallToolResult:
|
|
424
359
|
"""Call an MCP tool and return the raw CallToolResult.
|
|
425
360
|
|
|
@@ -439,7 +374,6 @@ async def call_mcp_tool_raw(
|
|
|
439
374
|
mcp_callbacks=mcp_callbacks,
|
|
440
375
|
session_pool=session_pool,
|
|
441
376
|
tool_list_cache=tool_list_cache,
|
|
442
|
-
heartbeat_interval_seconds=heartbeat_interval_seconds,
|
|
443
377
|
)
|
|
444
378
|
handler = build_interceptor_chain(
|
|
445
379
|
base_handler=execute_tool, tool_interceptors=tool_interceptors
|
|
@@ -6,7 +6,6 @@ from typing import Any, Dict, List
|
|
|
6
6
|
|
|
7
7
|
import httpx
|
|
8
8
|
from httpx import HTTPStatusError
|
|
9
|
-
from langchain_core.callbacks.manager import adispatch_custom_event
|
|
10
9
|
from langchain_core.tools import BaseTool
|
|
11
10
|
from mcp import ClientSession
|
|
12
11
|
from mcp.types import (
|
|
@@ -211,24 +210,6 @@ class MCPToolProvider:
|
|
|
211
210
|
logger.info(
|
|
212
211
|
f"MCP Tool Progress - Server: {context.server_name}, Progress: {progress}, Total: {total}, Message: {message}"
|
|
213
212
|
)
|
|
214
|
-
try:
|
|
215
|
-
await adispatch_custom_event(
|
|
216
|
-
"mcp_task_progress",
|
|
217
|
-
{
|
|
218
|
-
"task_id": "",
|
|
219
|
-
"status": f"{progress:g}/{total:g}" if total else f"{progress:g}",
|
|
220
|
-
"message": message,
|
|
221
|
-
"server_name": context.server_name,
|
|
222
|
-
"tool_name": context.tool_name,
|
|
223
|
-
},
|
|
224
|
-
)
|
|
225
|
-
except RuntimeError as e:
|
|
226
|
-
logger.debug(
|
|
227
|
-
"Skipping mcp_task_progress event dispatch: %s (server=%s, tool=%s)",
|
|
228
|
-
e,
|
|
229
|
-
context.server_name,
|
|
230
|
-
context.tool_name,
|
|
231
|
-
)
|
|
232
213
|
|
|
233
214
|
def _build_connection_config(self, tool_config: AgentConfig) -> MCPConnectionConfig:
|
|
234
215
|
"""Build an MCPConnectionConfig from an AgentConfig."""
|
|
@@ -304,7 +285,6 @@ class MCPToolProvider:
|
|
|
304
285
|
],
|
|
305
286
|
server_name=tool_config.name,
|
|
306
287
|
tool_list_cache=self.tool_list_cache,
|
|
307
|
-
heartbeat_interval_seconds=self.environment_variables.mcp_tool_heartbeat_interval_seconds,
|
|
308
288
|
)
|
|
309
289
|
tools.append(langchain_tool)
|
|
310
290
|
|
|
@@ -471,7 +451,6 @@ class MCPToolProvider:
|
|
|
471
451
|
server_name=tool_config.name,
|
|
472
452
|
session_pool=session_pool,
|
|
473
453
|
tool_list_cache=self.tool_list_cache,
|
|
474
|
-
heartbeat_interval_seconds=self.environment_variables.mcp_tool_heartbeat_interval_seconds,
|
|
475
454
|
)
|
|
476
455
|
for mcp_tool in mcp_tools
|
|
477
456
|
]
|
|
@@ -1031,7 +1010,6 @@ class MCPToolProvider:
|
|
|
1031
1010
|
],
|
|
1032
1011
|
session_pool=session_pool,
|
|
1033
1012
|
tool_list_cache=self.tool_list_cache,
|
|
1034
|
-
heartbeat_interval_seconds=self.environment_variables.mcp_tool_heartbeat_interval_seconds,
|
|
1035
1013
|
)
|
|
1036
1014
|
|
|
1037
1015
|
async def fetch_mcp_app_embed(
|
|
@@ -151,6 +151,34 @@ class ModelFactory:
|
|
|
151
151
|
def _is_anthropic_model(model_name: str) -> bool:
|
|
152
152
|
return model_name.startswith(("anthropic.", "us.anthropic."))
|
|
153
153
|
|
|
154
|
+
@staticmethod
|
|
155
|
+
def _resolve_anthropic_bedrock_max_tokens(model_name: str) -> int | None:
|
|
156
|
+
"""Look up the real max_output_tokens for a Bedrock Anthropic model ID.
|
|
157
|
+
|
|
158
|
+
``ChatAnthropicBedrock`` inherits ``ChatAnthropic.set_default_max_tokens``,
|
|
159
|
+
which resolves an unset ``max_tokens`` from ``langchain_anthropic``'s own
|
|
160
|
+
model-profile registry — keyed by bare Anthropic API names (e.g.
|
|
161
|
+
``claude-sonnet-4-5-20250929``), not Bedrock cross-region inference
|
|
162
|
+
profile IDs (e.g. ``us.anthropic.claude-sonnet-4-5-20250929-v1:0``). For
|
|
163
|
+
every Bedrock-prefixed ID that lookup misses, silently capping output at
|
|
164
|
+
``_FALLBACK_MAX_OUTPUT_TOKENS`` (4096) even when the model supports far
|
|
165
|
+
more (64000 for Claude Sonnet 4.5) — which truncates long tool-call
|
|
166
|
+
arguments (e.g. a full skill/document body) mid-generation.
|
|
167
|
+
``langchain_aws``'s own Bedrock-aware profile registry (used elsewhere,
|
|
168
|
+
e.g. by ``ChatAnthropicBedrock._set_model_profile``, but too late to
|
|
169
|
+
affect ``max_tokens``) does have entries keyed by the full Bedrock ID, so
|
|
170
|
+
look the real limit up there and pass it through explicitly.
|
|
171
|
+
"""
|
|
172
|
+
try:
|
|
173
|
+
from langchain_aws.chat_models.anthropic import (
|
|
174
|
+
_get_default_model_profile,
|
|
175
|
+
)
|
|
176
|
+
except ImportError:
|
|
177
|
+
return None
|
|
178
|
+
profile = _get_default_model_profile(model_name)
|
|
179
|
+
max_output_tokens = profile.get("max_output_tokens")
|
|
180
|
+
return int(max_output_tokens) if max_output_tokens else None
|
|
181
|
+
|
|
154
182
|
def _create_anthropic_bedrock_model(
|
|
155
183
|
self,
|
|
156
184
|
*,
|
|
@@ -164,6 +192,17 @@ class ModelFactory:
|
|
|
164
192
|
from pydantic import SecretStr
|
|
165
193
|
import boto3
|
|
166
194
|
|
|
195
|
+
if "max_tokens" not in model_parameters_dict:
|
|
196
|
+
resolved_max_tokens = self._resolve_anthropic_bedrock_max_tokens(model_name)
|
|
197
|
+
if resolved_max_tokens is not None:
|
|
198
|
+
model_parameters_dict["max_tokens"] = resolved_max_tokens
|
|
199
|
+
logger.info(
|
|
200
|
+
"Resolved max_tokens=%d for Bedrock model %s from profile "
|
|
201
|
+
"(overriding langchain_anthropic's unprefixed-lookup default)",
|
|
202
|
+
resolved_max_tokens,
|
|
203
|
+
model_name,
|
|
204
|
+
)
|
|
205
|
+
|
|
167
206
|
if thinking_budget and thinking_budget > 0:
|
|
168
207
|
model_parameters_dict["thinking"] = {
|
|
169
208
|
"type": "enabled",
|
|
@@ -67,7 +67,6 @@ class ChatCompletionApiRequestWrapper(ChatRequestWrapper):
|
|
|
67
67
|
enable_debug_logging: bool,
|
|
68
68
|
environment_variables: "LanguageModelCommonEnvironmentVariables",
|
|
69
69
|
emit_task_progress: bool | None = None,
|
|
70
|
-
emit_tool_heartbeat: bool | None = None,
|
|
71
70
|
) -> None:
|
|
72
71
|
"""
|
|
73
72
|
Wraps an OpenAI /chat/completions request to provide a consistent interface for different request types.
|
|
@@ -85,11 +84,6 @@ class ChatCompletionApiRequestWrapper(ChatRequestWrapper):
|
|
|
85
84
|
if emit_task_progress is not None
|
|
86
85
|
else environment_variables.emit_task_progress_in_chat_completions
|
|
87
86
|
)
|
|
88
|
-
self._emit_tool_heartbeat: bool = (
|
|
89
|
-
emit_tool_heartbeat
|
|
90
|
-
if emit_tool_heartbeat is not None
|
|
91
|
-
else environment_variables.emit_tool_heartbeat_in_chat_completions
|
|
92
|
-
)
|
|
93
87
|
self._debug_prefixes = environment_variables.debug_prefixes
|
|
94
88
|
self._apply_debug_prefix_toggle()
|
|
95
89
|
|
|
@@ -284,23 +278,6 @@ class ChatCompletionApiRequestWrapper(ChatRequestWrapper):
|
|
|
284
278
|
source="task_progress",
|
|
285
279
|
)
|
|
286
280
|
|
|
287
|
-
@override
|
|
288
|
-
def create_tool_heartbeat_sse_event(
|
|
289
|
-
self,
|
|
290
|
-
*,
|
|
291
|
-
request_id: str,
|
|
292
|
-
tool_name: str,
|
|
293
|
-
elapsed_seconds: float,
|
|
294
|
-
) -> str | None:
|
|
295
|
-
if not self._emit_tool_heartbeat:
|
|
296
|
-
return None
|
|
297
|
-
return self.create_sse_message(
|
|
298
|
-
request_id=request_id,
|
|
299
|
-
content=f"\n[Still running {tool_name}... ({elapsed_seconds:.0f}s)]\n",
|
|
300
|
-
usage_metadata=None,
|
|
301
|
-
source="tool_heartbeat",
|
|
302
|
-
)
|
|
303
|
-
|
|
304
281
|
@override
|
|
305
282
|
def create_non_streaming_response(
|
|
306
283
|
self,
|
|
@@ -272,21 +272,6 @@ class ChatRequestWrapper(abc.ABC):
|
|
|
272
272
|
"""
|
|
273
273
|
return None
|
|
274
274
|
|
|
275
|
-
def create_tool_heartbeat_sse_event(
|
|
276
|
-
self,
|
|
277
|
-
*,
|
|
278
|
-
request_id: str,
|
|
279
|
-
tool_name: str,
|
|
280
|
-
elapsed_seconds: float,
|
|
281
|
-
) -> str | None:
|
|
282
|
-
"""Emit a synthetic heartbeat while a tool call is in flight without
|
|
283
|
-
reporting real progress.
|
|
284
|
-
|
|
285
|
-
The default implementation returns None (no-op). Subclasses override
|
|
286
|
-
to emit the event in their respective SSE formats.
|
|
287
|
-
"""
|
|
288
|
-
return None
|
|
289
|
-
|
|
290
275
|
def create_tool_start_sse_event(
|
|
291
276
|
self,
|
|
292
277
|
*,
|
|
@@ -373,29 +373,6 @@ class ResponsesApiRequestWrapper(ChatRequestWrapper):
|
|
|
373
373
|
}
|
|
374
374
|
return f"data: {json.dumps(event)}\n\n"
|
|
375
375
|
|
|
376
|
-
@override
|
|
377
|
-
def create_tool_heartbeat_sse_event(
|
|
378
|
-
self,
|
|
379
|
-
*,
|
|
380
|
-
request_id: str,
|
|
381
|
-
tool_name: str,
|
|
382
|
-
elapsed_seconds: float,
|
|
383
|
-
) -> str | None:
|
|
384
|
-
"""Emit a synthetic heartbeat as a ``task.progress`` SSE event.
|
|
385
|
-
|
|
386
|
-
Reuses the exact same wire format as create_task_progress_sse_event
|
|
387
|
-
so existing consumers (e.g. baileyai-skills-service's frontend, which
|
|
388
|
-
already treats any `type: "task.progress"` payload as a non-content
|
|
389
|
-
trace event) require no changes.
|
|
390
|
-
"""
|
|
391
|
-
event: Dict[str, Any] = {
|
|
392
|
-
"type": "task.progress",
|
|
393
|
-
"task_id": "",
|
|
394
|
-
"status": "in_progress",
|
|
395
|
-
"message": f"Still running {tool_name}... ({elapsed_seconds:.0f}s)",
|
|
396
|
-
}
|
|
397
|
-
return f"data: {json.dumps(event)}\n\n"
|
|
398
|
-
|
|
399
376
|
@staticmethod
|
|
400
377
|
def _convert_usage_to_response_usage(
|
|
401
378
|
usages: list[UsageMetadata],
|
|
@@ -289,22 +289,6 @@ class LanguageModelCommonEnvironmentVariables(
|
|
|
289
289
|
"""Timeout in seconds for tool calls."""
|
|
290
290
|
return int(os.environ.get("TOOL_CALL_TIMEOUT_SECONDS", "600"))
|
|
291
291
|
|
|
292
|
-
@property
|
|
293
|
-
def mcp_tool_heartbeat_interval_seconds(self) -> float:
|
|
294
|
-
"""Interval in seconds between synthetic heartbeat events emitted
|
|
295
|
-
while an MCP tool call is in flight without reporting progress."""
|
|
296
|
-
return float(os.environ.get("MCP_TOOL_HEARTBEAT_INTERVAL_SECONDS", "15"))
|
|
297
|
-
|
|
298
|
-
@property
|
|
299
|
-
def emit_tool_heartbeat_in_chat_completions(self) -> bool:
|
|
300
|
-
"""When True, synthetic MCP tool heartbeats are emitted as content
|
|
301
|
-
deltas in the Chat Completions streaming format. Separate from
|
|
302
|
-
emit_task_progress_in_chat_completions so enabling one does not
|
|
303
|
-
change the volume/behavior of the other."""
|
|
304
|
-
return self.str2bool(
|
|
305
|
-
os.environ.get("EMIT_TOOL_HEARTBEAT_IN_CHAT_COMPLETIONS", "false")
|
|
306
|
-
)
|
|
307
|
-
|
|
308
292
|
@property
|
|
309
293
|
def app_login_uri(self) -> str:
|
|
310
294
|
value = os.environ.get("APP_LOGIN_URI")
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
2.0.89
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/__init__.py
RENAMED
|
File without changes
|
{language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/auth/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/aws/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/github/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/graph/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{language_model_common-2.0.89 → language_model_common-2.0.91}/languagemodelcommon/http/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|