language-model-common 2.0.87__tar.gz → 2.0.89__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.87/language_model_common.egg-info → language_model_common-2.0.89}/PKG-INFO +1 -1
- language_model_common-2.0.89/VERSION +1 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89/language_model_common.egg-info}/PKG-INFO +1 -1
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/converters/streaming_manager.py +9 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/mcp/mcp_client/langchain_adapter.py +2 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/mcp/mcp_client/tool_invocation.py +77 -11
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/mcp/mcp_tool_provider.py +22 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/structures/openai/request/chat_completion_api_request_wrapper.py +23 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/structures/openai/request/chat_request_wrapper.py +15 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/structures/openai/request/responses_api_request_wrapper.py +23 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/utilities/environment/language_model_common_environment_variables.py +16 -0
- language_model_common-2.0.87/VERSION +0 -1
- {language_model_common-2.0.87 → language_model_common-2.0.89}/LICENSE +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/MANIFEST.in +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/README.md +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/language_model_common.egg-info/SOURCES.txt +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/language_model_common.egg-info/dependency_links.txt +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/language_model_common.egg-info/requires.txt +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/language_model_common.egg-info/top_level.txt +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/__init__.py +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/auth/__init__.py +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/auth/authenticator/__init__.py +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/auth/exceptions/__init__.py +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/auth/exceptions/authorization_mcp_tool_token_invalid_exception.py +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/auth/exceptions/authorization_token_cache_item_expired_exception.py +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/auth/exceptions/authorization_token_cache_item_not_found_exception.py +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/auth/models/__init__.py +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/auth/models/token_cache_item.py +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/auth/oauth_provider_registrar.py +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/auth/pass_through_token_manager.py +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/auth/token_exchange/__init__.py +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/auth/token_exchange/token_exchange_manager.py +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/auth/token_storage_auth_manager.py +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/auth/tools/__init__.py +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/auth/tools/tool_auth_manager.py +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/aws/__init__.py +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/aws/aws_client_factory.py +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/configs/__init__.py +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/configs/config_reader/__init__.py +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/configs/config_reader/config_reader.py +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/configs/config_reader/file_config_reader.py +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/configs/config_reader/github_directory_downloader.py +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/configs/config_reader/github_directory_helper.py +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/configs/config_reader/mcp_json_fetcher.py +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/configs/config_reader/mcp_json_reader.py +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/configs/config_reader/s3_config_reader.py +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/configs/prompt_library/__init__.py +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/configs/prompt_library/prompt_library_environment_variables.py +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/configs/prompt_library/prompt_library_manager.py +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/configs/prompt_library/prompt_store.py +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/configs/schemas/__init__.py +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/configs/schemas/config_schema.py +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/configs/schemas/mcp_json_schema.py +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/container/__init__.py +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/container/container_factory.py +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/context/__init__.py +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/context/request_context.py +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/converters/__init__.py +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/converters/langgraph_to_openai_converter.py +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/converters/stream_buffer.py +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/converters/stream_context_mixin.py +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/converters/stream_debug_output_manager.py +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/converters/streaming_formatters.py +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/converters/streaming_tool_node.py +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/converters/tool_event_handlers.py +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/exceptions/__init__.py +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/exceptions/bailey_exception.py +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/exceptions/rate_limit_exception.py +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/file_managers/__init__.py +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/file_managers/aws_s3_file_manager.py +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/file_managers/file_manager.py +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/file_managers/file_manager_factory.py +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/file_managers/file_writer.py +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/file_managers/local_file_manager.py +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/github/__init__.py +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/github/token_provider.py +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/graph/__init__.py +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/graph/graph_builder.py +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/history/__init__.py +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/history/context_compactor.py +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/history/conversation_history_manager.py +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/history/smart_history_manager.py +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/http/__init__.py +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/http/http_client_factory.py +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/image_generation/__init__.py +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/image_generation/aws_image_generator.py +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/image_generation/image_generator.py +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/image_generation/image_generator_factory.py +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/image_generation/managers/__init__.py +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/image_generation/managers/image_generation_manager.py +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/image_generation/openai_image_generator.py +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/image_generation/providers/__init__.py +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/image_generation/providers/base_image_generation_provider.py +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/image_generation/providers/image_generation_provider.py +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/markdown/__init__.py +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/markdown/html_to_markdown_converter.py +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/mcp/__init__.py +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/mcp/auth/__init__.py +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/mcp/auth/auth_server_metadata_discovery.py +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/mcp/auth/mcp_authorization_helper.py +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/mcp/callbacks.py +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/mcp/exceptions/__init__.py +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/mcp/exceptions/mcp_tool_exception.py +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/mcp/exceptions/mcp_tool_not_found_exception.py +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/mcp/exceptions/mcp_tool_unauthorized_exception.py +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/mcp/exceptions/mcp_tool_unknown_exception.py +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/mcp/interceptors/__init__.py +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/mcp/interceptors/auth.py +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/mcp/interceptors/tracing.py +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/mcp/interceptors/truncation.py +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/mcp/interceptors/types.py +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/mcp/mcp_client/__init__.py +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/mcp/mcp_client/content_conversion.py +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/mcp/mcp_client/mcp_app_proxy.py +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/mcp/mcp_client/mcp_tool_list_store.py +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/mcp/mcp_client/server_card_discovery.py +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/mcp/mcp_client/session.py +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/mcp/mcp_client/session_pool.py +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/mcp/mcp_client/tool_list_cache.py +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/mcp/mcp_client/ui_resource.py +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/mcp/tool_catalog.py +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/mcp/tool_discovery_middleware.py +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/mocks/__init__.py +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/mocks/mock_aws_client_factory.py +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/mocks/mock_http_client_factory.py +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/mocks/mock_image_generator.py +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/mocks/mock_image_generator_factory.py +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/models/__init__.py +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/models/bedrock_models.py +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/models/model_factory.py +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/models/sanitizing_bedrock_converse.py +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/ocr/__init__.py +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/ocr/aws_ocr_extractor.py +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/ocr/ocr_extractor.py +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/ocr/ocr_extractor_factory.py +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/persistence/__init__.py +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/persistence/persistence_factory.py +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/pipeline/__init__.py +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/pipeline/context.py +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/pipeline/output/__init__.py +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/pipeline/pipeline.py +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/pipeline/step.py +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/pipeline/steps/__init__.py +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/py.typed +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/schema/__init__.py +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/schema/openai/__init__.py +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/schema/openai/completions.py +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/schema/openai/image_generation.py +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/schema/openai/responses.py +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/state/__init__.py +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/state/messages_state.py +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/structures/__init__.py +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/structures/openai/__init__.py +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/structures/openai/message/__init__.py +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/structures/openai/message/chat_completion_api_message_wrapper.py +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/structures/openai/message/chat_message_wrapper.py +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/structures/openai/message/responses_api_message_wrapper.py +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/structures/openai/request/__init__.py +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/tools/__init__.py +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/tools/mcp/__init__.py +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/tools/mcp/call_tool_tool.py +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/tools/mcp/search_tools_tool.py +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/utilities/__init__.py +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/utilities/cache/__init__.py +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/utilities/cache/advisory_lock.py +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/utilities/cache/model_config_cache_store.py +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/utilities/chat_message_helpers.py +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/utilities/config_substitution.py +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/utilities/environment/__init__.py +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/utilities/header_reader/__init__.py +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/utilities/header_reader/header_reader.py +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/utilities/logger/__init__.py +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/utilities/logger/debug_configuration.py +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/utilities/logger/exception_formatter.py +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/utilities/logger/exception_logger.py +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/utilities/logger/log_levels.py +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/utilities/logger/logging_response.py +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/utilities/logger/logging_transport.py +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/utilities/message_preprocessing/__init__.py +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/utilities/message_preprocessing/composite_message_preprocessor.py +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/utilities/message_preprocessing/message_preprocessor.py +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/utilities/mongo_url_utils.py +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/utilities/openai/__init__.py +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/utilities/openai/responses_api_converter.py +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/utilities/request_information.py +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/utilities/s3_url.py +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/utilities/security/__init__.py +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/utilities/security/normalize.py +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/utilities/security/off_topic_detector.py +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/utilities/security/prompt_extraction_detector.py +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/utilities/security/prompt_sanitizer.py +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/utilities/slash_command/__init__.py +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/utilities/slash_command/handlers/__init__.py +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/utilities/slash_command/handlers/debug_command_handler.py +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/utilities/slash_command/handlers/skill_command_handler.py +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/utilities/slash_command/slash_command_handler.py +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/utilities/slash_command/slash_command_parser.py +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/utilities/slash_command/slash_command_processor.py +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/utilities/text_humanizer.py +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/utilities/token_reducer/__init__.py +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/utilities/token_reducer/token_reducer.py +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/utilities/tool_display_name_mapper.py +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/utilities/url_parser.py +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/pyproject.toml +0 -0
- {language_model_common-2.0.87 → language_model_common-2.0.89}/setup.cfg +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
2.0.89
|
|
@@ -379,6 +379,15 @@ 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
|
|
382
391
|
else:
|
|
383
392
|
logger.debug("Skipped custom event: %s", name)
|
|
384
393
|
|
|
@@ -62,6 +62,7 @@ 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,
|
|
65
66
|
) -> BaseTool:
|
|
66
67
|
"""Convert an MCP Tool to a LangChain BaseTool.
|
|
67
68
|
|
|
@@ -84,6 +85,7 @@ def mcp_tool_to_langchain_tool(
|
|
|
84
85
|
mcp_callbacks=mcp_callbacks,
|
|
85
86
|
session_pool=session_pool,
|
|
86
87
|
tool_list_cache=tool_list_cache,
|
|
88
|
+
heartbeat_interval_seconds=heartbeat_interval_seconds,
|
|
87
89
|
)
|
|
88
90
|
handler = build_interceptor_chain(
|
|
89
91
|
base_handler=execute_tool, tool_interceptors=tool_interceptors
|
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
"""Tool invocation — interceptor chain and raw MCP tool calls."""
|
|
2
2
|
|
|
3
|
+
import asyncio
|
|
4
|
+
import contextlib
|
|
3
5
|
import logging
|
|
4
6
|
from collections.abc import Awaitable, Callable
|
|
5
7
|
from typing import Any
|
|
6
8
|
|
|
9
|
+
from langchain_core.callbacks.manager import adispatch_custom_event
|
|
7
10
|
from mcp.types import CallToolResult
|
|
8
11
|
from pydantic import ValidationError
|
|
9
12
|
|
|
@@ -174,8 +177,6 @@ async def _execute_tool_as_task(
|
|
|
174
177
|
Raises TaskProtocolError if the server does not respond with a valid
|
|
175
178
|
CreateTaskResult (e.g., returns a plain CallToolResult instead).
|
|
176
179
|
"""
|
|
177
|
-
from langchain_core.callbacks.manager import adispatch_custom_event
|
|
178
|
-
|
|
179
180
|
try:
|
|
180
181
|
create_result = await session.experimental.call_tool_as_task(
|
|
181
182
|
name, arguments, ttl=60000
|
|
@@ -222,12 +223,66 @@ async def _execute_tool_as_task(
|
|
|
222
223
|
return result
|
|
223
224
|
|
|
224
225
|
|
|
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
|
+
|
|
225
279
|
def _make_execute_tool(
|
|
226
280
|
*,
|
|
227
281
|
config: MCPConnectionConfig,
|
|
228
282
|
mcp_callbacks: _MCPCallbacks,
|
|
229
283
|
session_pool: McpSessionPool | None = None,
|
|
230
284
|
tool_list_cache: ToolListCache | None = None,
|
|
285
|
+
heartbeat_interval_seconds: float = 15.0,
|
|
231
286
|
) -> Callable[[MCPToolCallRequest], Awaitable[MCPToolCallResult]]:
|
|
232
287
|
"""Create an execute_tool handler that opens a session and calls the tool.
|
|
233
288
|
|
|
@@ -285,10 +340,13 @@ def _make_execute_tool(
|
|
|
285
340
|
)
|
|
286
341
|
if tool_list_cache is not None:
|
|
287
342
|
await tool_list_cache.invalidate_async(key=cache_key)
|
|
288
|
-
return await
|
|
289
|
-
|
|
290
|
-
request.
|
|
343
|
+
return await _execute_tool_call_with_heartbeat(
|
|
344
|
+
session=session,
|
|
345
|
+
name=request.name,
|
|
346
|
+
arguments=request.args,
|
|
291
347
|
progress_callback=mcp_callbacks.progress_callback,
|
|
348
|
+
server_name=request.server_name,
|
|
349
|
+
heartbeat_interval_seconds=heartbeat_interval_seconds,
|
|
292
350
|
)
|
|
293
351
|
except Exception:
|
|
294
352
|
await session_pool.evict(effective_config)
|
|
@@ -324,16 +382,22 @@ def _make_execute_tool(
|
|
|
324
382
|
)
|
|
325
383
|
if tool_list_cache is not None:
|
|
326
384
|
await tool_list_cache.invalidate_async(key=cache_key)
|
|
327
|
-
result = await
|
|
328
|
-
|
|
329
|
-
request.
|
|
385
|
+
result = await _execute_tool_call_with_heartbeat(
|
|
386
|
+
session=session,
|
|
387
|
+
name=request.name,
|
|
388
|
+
arguments=request.args,
|
|
330
389
|
progress_callback=mcp_callbacks.progress_callback,
|
|
390
|
+
server_name=request.server_name,
|
|
391
|
+
heartbeat_interval_seconds=heartbeat_interval_seconds,
|
|
331
392
|
)
|
|
332
393
|
else:
|
|
333
|
-
result = await
|
|
334
|
-
|
|
335
|
-
request.
|
|
394
|
+
result = await _execute_tool_call_with_heartbeat(
|
|
395
|
+
session=session,
|
|
396
|
+
name=request.name,
|
|
397
|
+
arguments=request.args,
|
|
336
398
|
progress_callback=mcp_callbacks.progress_callback,
|
|
399
|
+
server_name=request.server_name,
|
|
400
|
+
heartbeat_interval_seconds=heartbeat_interval_seconds,
|
|
337
401
|
)
|
|
338
402
|
except Exception as e:
|
|
339
403
|
captured_exception = e
|
|
@@ -355,6 +419,7 @@ async def call_mcp_tool_raw(
|
|
|
355
419
|
tool_interceptors: list[ToolCallInterceptor] | None = None,
|
|
356
420
|
session_pool: McpSessionPool | None = None,
|
|
357
421
|
tool_list_cache: ToolListCache | None = None,
|
|
422
|
+
heartbeat_interval_seconds: float = 15.0,
|
|
358
423
|
) -> CallToolResult:
|
|
359
424
|
"""Call an MCP tool and return the raw CallToolResult.
|
|
360
425
|
|
|
@@ -374,6 +439,7 @@ async def call_mcp_tool_raw(
|
|
|
374
439
|
mcp_callbacks=mcp_callbacks,
|
|
375
440
|
session_pool=session_pool,
|
|
376
441
|
tool_list_cache=tool_list_cache,
|
|
442
|
+
heartbeat_interval_seconds=heartbeat_interval_seconds,
|
|
377
443
|
)
|
|
378
444
|
handler = build_interceptor_chain(
|
|
379
445
|
base_handler=execute_tool, tool_interceptors=tool_interceptors
|
|
@@ -6,6 +6,7 @@ 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
|
|
9
10
|
from langchain_core.tools import BaseTool
|
|
10
11
|
from mcp import ClientSession
|
|
11
12
|
from mcp.types import (
|
|
@@ -210,6 +211,24 @@ class MCPToolProvider:
|
|
|
210
211
|
logger.info(
|
|
211
212
|
f"MCP Tool Progress - Server: {context.server_name}, Progress: {progress}, Total: {total}, Message: {message}"
|
|
212
213
|
)
|
|
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
|
+
)
|
|
213
232
|
|
|
214
233
|
def _build_connection_config(self, tool_config: AgentConfig) -> MCPConnectionConfig:
|
|
215
234
|
"""Build an MCPConnectionConfig from an AgentConfig."""
|
|
@@ -285,6 +304,7 @@ class MCPToolProvider:
|
|
|
285
304
|
],
|
|
286
305
|
server_name=tool_config.name,
|
|
287
306
|
tool_list_cache=self.tool_list_cache,
|
|
307
|
+
heartbeat_interval_seconds=self.environment_variables.mcp_tool_heartbeat_interval_seconds,
|
|
288
308
|
)
|
|
289
309
|
tools.append(langchain_tool)
|
|
290
310
|
|
|
@@ -451,6 +471,7 @@ class MCPToolProvider:
|
|
|
451
471
|
server_name=tool_config.name,
|
|
452
472
|
session_pool=session_pool,
|
|
453
473
|
tool_list_cache=self.tool_list_cache,
|
|
474
|
+
heartbeat_interval_seconds=self.environment_variables.mcp_tool_heartbeat_interval_seconds,
|
|
454
475
|
)
|
|
455
476
|
for mcp_tool in mcp_tools
|
|
456
477
|
]
|
|
@@ -1010,6 +1031,7 @@ class MCPToolProvider:
|
|
|
1010
1031
|
],
|
|
1011
1032
|
session_pool=session_pool,
|
|
1012
1033
|
tool_list_cache=self.tool_list_cache,
|
|
1034
|
+
heartbeat_interval_seconds=self.environment_variables.mcp_tool_heartbeat_interval_seconds,
|
|
1013
1035
|
)
|
|
1014
1036
|
|
|
1015
1037
|
async def fetch_mcp_app_embed(
|
|
@@ -67,6 +67,7 @@ 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,
|
|
70
71
|
) -> None:
|
|
71
72
|
"""
|
|
72
73
|
Wraps an OpenAI /chat/completions request to provide a consistent interface for different request types.
|
|
@@ -84,6 +85,11 @@ class ChatCompletionApiRequestWrapper(ChatRequestWrapper):
|
|
|
84
85
|
if emit_task_progress is not None
|
|
85
86
|
else environment_variables.emit_task_progress_in_chat_completions
|
|
86
87
|
)
|
|
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
|
+
)
|
|
87
93
|
self._debug_prefixes = environment_variables.debug_prefixes
|
|
88
94
|
self._apply_debug_prefix_toggle()
|
|
89
95
|
|
|
@@ -278,6 +284,23 @@ class ChatCompletionApiRequestWrapper(ChatRequestWrapper):
|
|
|
278
284
|
source="task_progress",
|
|
279
285
|
)
|
|
280
286
|
|
|
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
|
+
|
|
281
304
|
@override
|
|
282
305
|
def create_non_streaming_response(
|
|
283
306
|
self,
|
|
@@ -272,6 +272,21 @@ 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
|
+
|
|
275
290
|
def create_tool_start_sse_event(
|
|
276
291
|
self,
|
|
277
292
|
*,
|
|
@@ -373,6 +373,29 @@ 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
|
+
|
|
376
399
|
@staticmethod
|
|
377
400
|
def _convert_usage_to_response_usage(
|
|
378
401
|
usages: list[UsageMetadata],
|
|
@@ -289,6 +289,22 @@ 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
|
+
|
|
292
308
|
@property
|
|
293
309
|
def app_login_uri(self) -> str:
|
|
294
310
|
value = os.environ.get("APP_LOGIN_URI")
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
2.0.87
|
|
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.87 → language_model_common-2.0.89}/languagemodelcommon/__init__.py
RENAMED
|
File without changes
|
{language_model_common-2.0.87 → language_model_common-2.0.89}/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.87 → language_model_common-2.0.89}/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.87 → language_model_common-2.0.89}/languagemodelcommon/github/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{language_model_common-2.0.87 → language_model_common-2.0.89}/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.87 → language_model_common-2.0.89}/languagemodelcommon/http/__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
|
{language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/mcp/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{language_model_common-2.0.87 → language_model_common-2.0.89}/languagemodelcommon/mcp/callbacks.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|