Conversation
…GeminiChatModel (langchain4j#4891) ## Issue Closes langchain4j#4875 ## Change Add image generation configuration support to `GoogleAiGeminiChatModel` so users can control generated image dimensions via request payload. ### What changed - Added builder options in `BaseGeminiChatModel.GoogleAiGeminiChatModelBaseBuilder`: - `aspectRatio(String)` - `imageAspectRatio(String)` (alias) - `imageSize(String)` - Added `imageConfig` construction in `BaseGeminiChatModel` when either aspect ratio or image size is configured. - Injected `imageConfig` into `generationConfig` for chat requests: - `generationConfig.imageConfig.aspectRatio` - `generationConfig.imageConfig.imageSize` - Added unit test `shouldSendImageConfigWhenConfigured` in `GoogleAiGeminiChatModelTest` to verify request payload mapping. ## General checklist - [X] There are no breaking changes (API, behaviour) - [X] I have added unit and/or integration tests for my change - [X] The tests cover both positive and negative cases - [X] I have manually run all the unit and integration tests in the module I have added/changed, and they are all green - [ ] I have manually run all the unit and integration tests in the [core](https://github.com/langchain4j/langchain4j/tree/main/langchain4j-core) and [main](https://github.com/langchain4j/langchain4j/tree/main/langchain4j) modules, and they are all green - [ ] I have added/updated the [documentation](https://github.com/langchain4j/langchain4j/tree/main/docs/docs) - [ ] I have added an example in the [examples repo](https://github.com/langchain4j/langchain4j-examples) (only for "big" features) - [ ] I have added/updated [Spring Boot starter(s)](https://github.com/langchain4j/langchain4j-spring) (if applicable) ## Checklist for adding new maven module - [ ] I have added my new module in the root `pom.xml` and `langchain4j-bom/pom.xml` ## Checklist for adding new embedding store integration - [ ] I have added a `{NameOfIntegration}EmbeddingStoreIT` that extends from either `EmbeddingStoreIT` or `EmbeddingStoreWithFilteringIT` - [ ] I have added a `{NameOfIntegration}EmbeddingStoreRemovalIT` that extends from `EmbeddingStoreWithRemovalIT` ## Checklist for changing existing embedding store integration - [ ] I have manually verified that the `{NameOfIntegration}EmbeddingStore` works correctly with the data persisted using the latest released version of LangChain4j Signed-off-by: ZhangDT-sky <485918776@qq.com>
…in4j#4890) <!-- Thank you so much for your contribution! Please fill in all the sections below. Please open the PR as a draft initially. Once it is reviewed and approved, we will ask you to add documentation and examples. Please note that PRs with breaking changes or without tests will be rejected. Please note that PRs will be reviewed based on the priority of the issues they address. We ask for your patience. We are doing our best to review your PR as quickly as possible. Please refrain from pinging and asking when it will be reviewed. Thank you for understanding! --> ## Issue <!-- Please specify the ID of the issue this PR is addressing. For example: "Closes langchain4j#1234" or "Fixes langchain4j#1234" --> Closes langchain4j#4889 ## Change <!-- Please describe the changes you made. --> Fixed a bug where `OpenAiStreamingResponseBuilder.append()` dropped subsequent tool calls if a single streaming `Delta` chunk contained multiple complete tool calls. Changed the logic from extracting just the first element (`delta.toolCalls().get(0)`) to iterating over all entries using a `for (ToolCall toolCall : delta.toolCalls())` loop. Also added a unit test `should_keep_all_tool_calls_from_same_delta` in `OpenAiStreamingResponseBuilderTest` to verify that all tool calls in the same delta are properly accumulated. ## General checklist <!-- Please double-check the following points and mark them like this: [X] --> - [X] There are no breaking changes (API, behaviour) - [X] I have added unit and/or integration tests for my change - [X] The tests cover both positive and negative cases - [X] I have manually run all the unit and integration tests in the module I have added/changed, and they are all green - [X] I have manually run all the unit and integration tests in the [core](https://github.com/langchain4j/langchain4j/tree/main/langchain4j-core) and [main](https://github.com/langchain4j/langchain4j/tree/main/langchain4j) modules, and they are all green <!-- Before adding documentation and example(s) (below), please wait until the PR is reviewed and approved. --> - [ ] I have added/updated the [documentation](https://github.com/langchain4j/langchain4j/tree/main/docs/docs) - [ ] I have added an example in the [examples repo](https://github.com/langchain4j/langchain4j-examples) (only for "big" features) - [ ] I have added/updated [Spring Boot starter(s)](https://github.com/langchain4j/langchain4j-spring) (if applicable) ## Checklist for adding new maven module <!-- Please double-check the following points and mark them like this: [X] --> - [ ] I have added my new module in the root `pom.xml` and `langchain4j-bom/pom.xml` ## Checklist for adding new embedding store integration <!-- Please double-check the following points and mark them like this: [X] --> - [ ] I have added a `{NameOfIntegration}EmbeddingStoreIT` that extends from either `EmbeddingStoreIT` or `EmbeddingStoreWithFilteringIT` - [ ] I have added a `{NameOfIntegration}EmbeddingStoreRemovalIT` that extends from `EmbeddingStoreWithRemovalIT` ## Checklist for changing existing embedding store integration <!-- Please double-check the following points and mark them like this: [X] --> - [ ] I have manually verified that the `{NameOfIntegration}EmbeddingStore` works correctly with the data persisted using the latest released version of LangChain4j --------- Co-authored-by: Dmytro Liubarskyi <ljubarskij@gmail.com>
…langchain4j#4880) ## Summary Adds support for the `dimensions` field in Ollama embedding requests. This change enhances `EmbeddingRequest` to include an optional `dimensions` property, allowing callers to request embeddings with a custom output vector size for models that support configurable dimensions. Example request payload: ```json { "model": "all-minilm", "input": [ "Why is the sky blue?", "What is the best place to visit in summer" ], "dimensions": 2 } --------- Co-authored-by: Harikrishna <harikrishna.gurram@walmart.com>
…4306) <!-- Thank you so much for your contribution! Please fill in all the sections below. Please open the PR as a draft initially. Once it is reviewed and approved, we will ask you to add documentation and examples. Please note that PRs with breaking changes or without tests will be rejected. Please note that PRs will be reviewed based on the priority of the issues they address. We ask for your patience. We are doing our best to review your PR as quickly as possible. Please refrain from pinging and asking when it will be reviewed. Thank you for understanding! --> ## Issue <!-- Please specify the ID of the issue this PR is addressing. For example: "Closes langchain4j#1234" or "Fixes langchain4j#1234" --> Closes langchain4j#4298 ## Change ### Summary Implements `logprobs` and `top_logprobs` support for `OpenAiChatModel`. Users can now retrieve log probability information from OpenAI responses, which is useful for assessing model confidence and exploring alternative token choices. ### Implementation Details Added two new parameters to `OpenAiChatModel`: - `logprobs(Boolean)` - enables log probability output - `topLogprobs(Integer)` - specifies number of alternative tokens to return (0-20) **New DTOs:** Created internal DTOs (`LogProbs`, `TokenLogProb`, `TopLogProb`) to strictly match OpenAI's API structure. **Metadata Exposure:** As suggested by @dliubarskyi, the logprobs data is exposed via `OpenAiChatResponseMetadata` rather than the generic metadata map, ensuring type safety. ### Example Usage ```java ChatRequest request = ChatRequest.builder() .messages(UserMessage.from("Hello")) .parameters(OpenAiChatRequestParameters.builder() .logprobs(true) .topLogprobs(2) .build()) .build(); ChatResponse response = model.chat(request); // Access strongly-typed metadata OpenAiChatResponseMetadata metadata = (OpenAiChatResponseMetadata) response.metadata(); LogProbs logprobs = metadata.logprobs(); ``` ### Testing - Added integration test should_return_logprobs in OpenAiChatModelIT. - Verified that parameters are correctly sent to the API. - Verified that the response structure (including nested top_logprobs) is correctly parsed into the new DTOs. - Tested successfully against the live OpenAI API. ## General checklist <!-- Please double-check the following points and mark them like this: [X] --> - [X] There are no breaking changes (API, behaviour) - [X] I have added unit and/or integration tests for my change - [X] The tests cover both positive and negative cases - [X] I have manually run all the unit and integration tests in the module I have added/changed, and they are all green - [X] I have manually run all the unit and integration tests in the [core](https://github.com/langchain4j/langchain4j/tree/main/langchain4j-core) and [main](https://github.com/langchain4j/langchain4j/tree/main/langchain4j) modules, and they are all green <!-- Before adding documentation and example(s) (below), please wait until the PR is reviewed and approved. --> - [ ] I have added/updated the [documentation](https://github.com/langchain4j/langchain4j/tree/main/docs/docs) - [ ] I have added an example in the [examples repo](https://github.com/langchain4j/langchain4j-examples) (only for "big" features) - [ ] I have added/updated [Spring Boot starter(s)](https://github.com/langchain4j/langchain4j-spring) (if applicable) ## Checklist for adding new maven module <!-- Please double-check the following points and mark them like this: [X] --> - [ ] I have added my new module in the root `pom.xml` and `langchain4j-bom/pom.xml` ## Checklist for adding new embedding store integration <!-- Please double-check the following points and mark them like this: [X] --> - [ ] I have added a `{NameOfIntegration}EmbeddingStoreIT` that extends from either `EmbeddingStoreIT` or `EmbeddingStoreWithFilteringIT` - [ ] I have added a `{NameOfIntegration}EmbeddingStoreRemovalIT` that extends from `EmbeddingStoreWithRemovalIT` ## Checklist for changing existing embedding store integration <!-- Please double-check the following points and mark them like this: [X] --> - [ ] I have manually verified that the `{NameOfIntegration}EmbeddingStore` works correctly with the data persisted using the latest released version of LangChain4j --------- Co-authored-by: Dmytro Liubarskyi <ljubarskij@gmail.com>
…ngchain4j#4902) Fixes langchain4j#4901. ## Summary `DateOutputParser` used a `static final SimpleDateFormat` instance shared across all threads (and shared across the whole application via `DefaultOutputParserFactory`). `SimpleDateFormat` is [documented as not thread-safe](https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/text/SimpleDateFormat.html), so concurrent AI Service calls returning `Date` can produce silently corrupt results or throw `NumberFormatException` / `ArrayIndexOutOfBoundsException`. This PR replaces `SimpleDateFormat` with the thread-safe `DateTimeFormatter.ISO_LOCAL_DATE`, aligning the implementation with the sibling `LocalDateOutputParser`. ## Changes - `DateOutputParser`: use `DateTimeFormatter` + `LocalDate.parse(...)` + `Date.from(localDate.atStartOfDay(ZoneId.systemDefault()).toInstant())` - `OutputParserTest`: add `date_parser_is_thread_safe` — a concurrent regression test (16 threads × 500 iterations). Fails on the current `main` (`NumberFormatException: multiple points`) and passes with this fix. ## Behavior preservation - Same format pattern (`yyyy-MM-dd`) and `formatInstructions()` output - Same default-timezone semantics (`ZoneId.systemDefault()` matches what `SimpleDateFormat` did without explicit TZ configuration) - Same `RuntimeException` surface and exact message for malformed input — the `indexOf("-")` validation is intentionally kept so the pre-existing `date()` test assertion (`.withMessage("Invalid date format: 01-12-2020")`) still holds ## Open questions raised in the issue I left three questions in langchain4j#4901 and chose the most conservative defaults here; happy to adjust based on maintainer preference: 1. `DateTimeFormatter` vs `ThreadLocal<SimpleDateFormat>` → chose `DateTimeFormatter` to match `LocalDateOutputParser` 2. `ZoneId.systemDefault()` vs `ZoneOffset.UTC` → chose `systemDefault()` for behavior preservation 3. Remove the `indexOf("-")` pre-check → kept it to preserve the existing error-message assertion Marking as **draft** until the direction is confirmed. ## Test plan - [x] Existing `OutputParserTest` tests pass (9/9) - [x] New concurrent test fails on current `main` and passes with this fix - [x] `./mvnw -pl langchain4j spotless:check` passes --------- Co-authored-by: Dmytro Liubarskyi <ljubarskij@gmail.com>
…n4j#4908) ## Issue Closes langchain4j#3804 Closes langchain4j#3320 ## Change - Integrate https://revapi.org/ (`revapi-maven-plugin`) into the build to automatically detect breaking API changes - Revapi runs during the `verify` phase on every build, comparing the current code against the latest released version on Maven Central (`RELEASE`) - Suppress `java.method.varargOverloadsOnlyDifferInVarargParameter` globally — this is a design warning about varargs overloads, not an actual breaking change - Add per-module `revapi.json` justifications for pre-existing `java.class.nonPublicPartOfAPI` warnings in `langchain4j-ollama`, `langchain4j-bedrock`, `langchain4j-onnx-scoring`, and `langchain4j-google-ai-gemini` — these are package-private classes exposed through protected members on package-private base classes, so they cannot actually leak to external users - Do not check depndencies - we do not expose them explicitly and are not responsible for any changes there - skip `integration-tests` modules - we do not release them ### How it works - Revapi downloads the latest released JAR from Maven Central and compares it against the locally built JAR at the bytecode level - Any removal, signature change, or visibility reduction of public API elements will fail the build - Adding new public API is always fine - To justify an intentional breaking change, add a `revapi.json` in the module root — justifications auto-expire on the next release since the baseline moves forward ## General checklist - [X] There are no breaking changes (API, behaviour) - [X] I have added unit and/or integration tests for my change - [X] The tests cover both positive and negative cases - [X] I have manually run all the unit and integration tests in the module I have added/changed, and they are all green - [X] I have manually run all the unit and integration tests in the [core](https://github.com/langchain4j/langchain4j/tree/main/langchain4j-core) and [main](https://github.com/langchain4j/langchain4j/tree/main/langchain4j) modules, and they are all green - [ ] I have added/updated the [documentation](https://github.com/langchain4j/langchain4j/tree/main/docs/docs) - [ ] I have added an example in the [examples repo](https://github.com/langchain4j/langchain4j-examples) (only for "big" features) - [ ] I have added/updated [Spring Boot starter(s)](https://github.com/langchain4j/langchain4j-spring) (if applicable)
…ngchain4j#4557) Follow-up on langchain4j#3816. This PR tightens OpenAI Responses support in both official and unofficial integrations: - keep `strict` disabled by default and align Responses-mode JSON-schema handling with actual supported behavior - add explicit `previousResponseId` request parameters instead of shared mutable model state - restore unofficial client logging and remove extra local `maxToolCalls` truncation - improve streaming behavior and test coverage for reasoning/tool-call/error/completion paths - simplify Response-related AI-service test overrides via shared hooks - add license metadata required for `internal/langchain4j-internal-test-retry` - fix brittle Vertex AI Anthropic integration-test initialization by moving the quota-gating condition out of a class with provider-dependent static initialization ## General checklist - [x] There are no breaking changes (API, behaviour) - [x] I have added unit and/or integration tests for my change - [x] The tests cover both positive and negative cases - [x] I have manually run all the unit and integration tests in the module I have added/changed, and they are all green - [ ] I have manually run all the unit and integration tests in the [core](https://github.com/langchain4j/langchain4j/tree/main/langchain4j-core) and [main](https://github.com/langchain4j/langchain4j/tree/main/langchain4j) modules, and they are all green - [x] I have added/updated the [documentation](https://github.com/langchain4j/langchain4j/tree/main/docs/docs) - [ ] I have added an example in the [examples repo](https://github.com/langchain4j/langchain4j-examples) (only for "big" features) - [ ] I have added/updated [Spring Boot starter(s)](https://github.com/langchain4j/langchain4j-spring) (if applicable) ## Checklist for adding new maven module - [ ] I have added my new module in the root `pom.xml` and `langchain4j-bom/pom.xml` ## Checklist for adding new embedding store integration - [ ] I have added a `{NameOfIntegration}EmbeddingStoreIT` that extends from either `EmbeddingStoreIT` or `EmbeddingStoreWithFilteringIT` - [ ] I have added a `{NameOfIntegration}EmbeddingStoreRemovalIT` that extends from `EmbeddingStoreWithRemovalIT` ## Checklist for changing existing embedding store integration - [ ] I have manually verified that the `{NameOfIntegration}EmbeddingStore` works correctly with the data persisted using the latest released version of LangChain4j --------- Co-authored-by: Dmytro Liubarskyi <ljubarskij@gmail.com>
<!-- Thank you so much for your contribution! Please fill in all the sections below. Please open the PR as a draft initially. Once it is reviewed and approved, we will ask you to add documentation and examples. Please note that PRs with breaking changes or without tests will be rejected. Please note that PRs will be reviewed based on the priority of the issues they address. We ask for your patience. We are doing our best to review your PR as quickly as possible. Please refrain from pinging and asking when it will be reviewed. Thank you for understanding! --> ## Issue <!-- Please specify the ID of the issue this PR is addressing. For example: "Closes langchain4j#1234" or "Fixes langchain4j#1234" --> Closes # ## Change Small, non-breaking, improvement for the agentic API, also allowing to configure subagents as a Collection. ## General checklist <!-- Please double-check the following points and mark them like this: [X] --> - [X] There are no breaking changes (API, behaviour) - [X] I have added unit and/or integration tests for my change - [X] The tests cover both positive and negative cases - [X] I have manually run all the unit and integration tests in the module I have added/changed, and they are all green - [ ] I have manually run all the unit and integration tests in the [core](https://github.com/langchain4j/langchain4j/tree/main/langchain4j-core) and [main](https://github.com/langchain4j/langchain4j/tree/main/langchain4j) modules, and they are all green <!-- Before adding documentation and example(s) (below), please wait until the PR is reviewed and approved. --> - [ ] I have added/updated the [documentation](https://github.com/langchain4j/langchain4j/tree/main/docs/docs) - [ ] I have added an example in the [examples repo](https://github.com/langchain4j/langchain4j-examples) (only for "big" features) - [ ] I have added/updated [Spring Boot starter(s)](https://github.com/langchain4j/langchain4j-spring) (if applicable) ## Checklist for adding new maven module <!-- Please double-check the following points and mark them like this: [X] --> - [ ] I have added my new module in the root `pom.xml` and `langchain4j-bom/pom.xml` ## Checklist for adding new embedding store integration <!-- Please double-check the following points and mark them like this: [X] --> - [ ] I have added a `{NameOfIntegration}EmbeddingStoreIT` that extends from either `EmbeddingStoreIT` or `EmbeddingStoreWithFilteringIT` - [ ] I have added a `{NameOfIntegration}EmbeddingStoreRemovalIT` that extends from `EmbeddingStoreWithRemovalIT` ## Checklist for changing existing embedding store integration <!-- Please double-check the following points and mark them like this: [X] --> - [ ] I have manually verified that the `{NameOfIntegration}EmbeddingStore` works correctly with the data persisted using the latest released version of LangChain4j
<!-- Thank you so much for your contribution! Please fill in all the sections below. Please open the PR as a draft initially. Once it is reviewed and approved, we will ask you to add documentation and examples. Please note that PRs with breaking changes or without tests will be rejected. Please note that PRs will be reviewed based on the priority of the issues they address. We ask for your patience. We are doing our best to review your PR as quickly as possible. Please refrain from pinging and asking when it will be reviewed. Thank you for understanding! --> ## Issue <!-- Please specify the ID of the issue this PR is addressing. For example: "Closes langchain4j#1234" or "Fixes langchain4j#1234" --> Closes langchain4j#4924 ## Change <!-- Please describe the changes you made. --> just swap cacheToolList to cacheResourceList on line 338. ## General checklist <!-- Please double-check the following points and mark them like this: [X] --> - [ ] There are no breaking changes (API, behaviour) - [ ] I have added unit and/or integration tests for my change - [ ] The tests cover both positive and negative cases - [ ] I have manually run all the unit and integration tests in the module I have added/changed, and they are all green - [ ] I have manually run all the unit and integration tests in the [core](https://github.com/langchain4j/langchain4j/tree/main/langchain4j-core) and [main](https://github.com/langchain4j/langchain4j/tree/main/langchain4j) modules, and they are all green <!-- Before adding documentation and example(s) (below), please wait until the PR is reviewed and approved. --> - [ ] I have added/updated the [documentation](https://github.com/langchain4j/langchain4j/tree/main/docs/docs) - [ ] I have added an example in the [examples repo](https://github.com/langchain4j/langchain4j-examples) (only for "big" features) - [ ] I have added/updated [Spring Boot starter(s)](https://github.com/langchain4j/langchain4j-spring) (if applicable) ## Checklist for adding new maven module <!-- Please double-check the following points and mark them like this: [X] --> - [ ] I have added my new module in the root `pom.xml` and `langchain4j-bom/pom.xml` ## Checklist for adding new embedding store integration <!-- Please double-check the following points and mark them like this: [X] --> - [ ] I have added a `{NameOfIntegration}EmbeddingStoreIT` that extends from either `EmbeddingStoreIT` or `EmbeddingStoreWithFilteringIT` - [ ] I have added a `{NameOfIntegration}EmbeddingStoreRemovalIT` that extends from `EmbeddingStoreWithRemovalIT` ## Checklist for changing existing embedding store integration <!-- Please double-check the following points and mark them like this: [X] --> - [ ] I have manually verified that the `{NameOfIntegration}EmbeddingStore` works correctly with the data persisted using the latest released version of LangChain4j
## Issue Closes langchain4j#4794 ## Change This PR adds a configurable `McpToolResultExtractor` SPI to `DefaultMcpClient.Builder` for MCP tool responses backed by `CallToolResult.result.content[]`. The main goal is to let users override the default `content[]` parsing behavior for servers that return custom payloads there, while keeping the existing `structuredContent` handling unchanged. Changes included: - added a new `McpToolResultExtractor` extension point - added `DefaultMcpToolResultExtractor` to preserve the current default behavior - wired the extractor into `DefaultMcpClient` through `DefaultMcpClient.Builder#toolResultExtractor(...)` - updated tool result extraction so application-level errors still surface consistently when a custom extractor is used - clarified in Javadoc that this customization only applies to ordinary `content[]` tool results and does **not** apply to `structuredContent`, which is handled separately - added unit tests for: - builder wiring and custom extractor usage - timeout fallback path - listener / application-level error path - default extractor behavior - `structuredContent` precedence and parsing - added a dedicated MCP integration test fixture and stdio integration test covering custom extractor behavior for: - JSON returned as text content - image content - mixed multimodal content - `structuredContent` bypassing the custom extractor ## General checklist - [X] There are no breaking changes (API, behaviour) - [X] I have added unit and/or integration tests for my change - [X] The tests cover both positive and negative cases - [X] I have manually run all the unit and integration tests in the module I have added/changed, and they are all green - [X] I have manually run all the unit and integration tests in the [core](https://github.com/langchain4j/langchain4j/tree/main/langchain4j-core) and [main](https://github.com/langchain4j/langchain4j/tree/main/langchain4j) modules, and they are all green - [ ] I have added/updated the [documentation](https://github.com/langchain4j/langchain4j/tree/main/docs/docs) - [ ] I have added an example in the [examples repo](https://github.com/langchain4j/langchain4j-examples) (only for "big" features) - [ ] I have added/updated [Spring Boot starter(s)](https://github.com/langchain4j/langchain4j-spring) (if applicable) ## Checklist for adding new maven module - [ ] I have added my new module in the root `pom.xml` and `langchain4j-bom/pom.xml` ## Checklist for adding new embedding store integration - [ ] I have added a `{NameOfIntegration}EmbeddingStoreIT` that extends from either `EmbeddingStoreIT` or `EmbeddingStoreWithFilteringIT` - [ ] I have added a `{NameOfIntegration}EmbeddingStoreRemovalIT` that extends from `EmbeddingStoreWithRemovalIT` ## Checklist for changing existing embedding store integration - [ ] I have manually verified that the `{NameOfIntegration}EmbeddingStore` works correctly with the data persisted using the latest released version of LangChain4j
<!-- Thank you so much for your contribution! Please fill in all the sections below. Please open the PR as a draft initially. Once it is reviewed and approved, we will ask you to add documentation and examples. Please note that PRs with breaking changes or without tests will be rejected. Please note that PRs will be reviewed based on the priority of the issues they address. We ask for your patience. We are doing our best to review your PR as quickly as possible. Please refrain from pinging and asking when it will be reviewed. Thank you for understanding! --> ## Issue <!-- Please specify the ID of the issue this PR is addressing. For example: "Closes langchain4j#1234" or "Fixes langchain4j#1234" --> version 1.13.0 has a new Maven module that is not Reproducible https://github.com/jvm-repo-rebuild/reproducible-central/blob/master/content/dev/langchain4j/README.md ## Change configure Reproducible Builds for the new module ## General checklist <!-- Please double-check the following points and mark them like this: [X] --> - [X] There are no breaking changes (API, behaviour) - [ ] I have added unit and/or integration tests for my change - [ ] The tests cover both positive and negative cases - [ ] I have manually run all the unit and integration tests in the module I have added/changed, and they are all green - [ ] I have manually run all the unit and integration tests in the [core](https://github.com/langchain4j/langchain4j/tree/main/langchain4j-core) and [main](https://github.com/langchain4j/langchain4j/tree/main/langchain4j) modules, and they are all green <!-- Before adding documentation and example(s) (below), please wait until the PR is reviewed and approved. --> - [ ] I have added/updated the [documentation](https://github.com/langchain4j/langchain4j/tree/main/docs/docs) - [ ] I have added an example in the [examples repo](https://github.com/langchain4j/langchain4j-examples) (only for "big" features) - [ ] I have added/updated [Spring Boot starter(s)](https://github.com/langchain4j/langchain4j-spring) (if applicable) ## Checklist for adding new maven module <!-- Please double-check the following points and mark them like this: [X] --> - [ ] I have added my new module in the root `pom.xml` and `langchain4j-bom/pom.xml` ## Checklist for adding new embedding store integration <!-- Please double-check the following points and mark them like this: [X] --> - [ ] I have added a `{NameOfIntegration}EmbeddingStoreIT` that extends from either `EmbeddingStoreIT` or `EmbeddingStoreWithFilteringIT` - [ ] I have added a `{NameOfIntegration}EmbeddingStoreRemovalIT` that extends from `EmbeddingStoreWithRemovalIT` ## Checklist for changing existing embedding store integration <!-- Please double-check the following points and mark them like this: [X] --> - [ ] I have manually verified that the `{NameOfIntegration}EmbeddingStore` works correctly with the data persisted using the latest released version of LangChain4j
Bumps [follow-redirects](https://github.com/follow-redirects/follow-redirects) from 1.15.11 to 1.16.0. <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/follow-redirects/follow-redirects/commit/0c23a223067201c368035e82954c11eb2578a33b"><code>0c23a22</code></a> Release version 1.16.0 of the npm package.</li> <li><a href="https://github.com/follow-redirects/follow-redirects/commit/844c4d302ac963d29bdb5dc1754ec7df3d70d7f9"><code>844c4d3</code></a> Add sensitiveHeaders option.</li> <li><a href="https://github.com/follow-redirects/follow-redirects/commit/5e8b8d024e2c76f804a284258e585ecb49a575be"><code>5e8b8d0</code></a> ci: add Node.js 24.x to the CI matrix</li> <li><a href="https://github.com/follow-redirects/follow-redirects/commit/7953e2255aa0b93602eed3804f3bc5e6923a03af"><code>7953e22</code></a> ci: upgrade GitHub Actions to use setup-node@v6 and checkout@v6</li> <li><a href="https://github.com/follow-redirects/follow-redirects/commit/86dc1f86e4b56bcd642c78384d51f10f123aea75"><code>86dc1f8</code></a> Sanitizing input.</li> <li>See full diff in <a href="https://github.com/follow-redirects/follow-redirects/compare/v1.15.11...v1.16.0">compare view</a></li> </ul> </details> <br /> [](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) You can disable automated security fix PRs for this repo from the [Security Alerts page](https://github.com/langchain4j/langchain4j/network/alerts). </details> Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
….17.11 (langchain4j#5210) This PR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | [com.aliyun.openservices:tablestore](http://www.aliyun.com) ([source](https://redirect.github.com/aliyun/aliyun-tablestore-java-sdk)) | `5.17.10` → `5.17.11` |  |  | --- > [!WARNING] > Some dependencies could not be looked up. Check the [Dependency Dashboard](..langchain4j/issues/2069) for more information. --- ### Release Notes <details> <summary>aliyun/aliyun-tablestore-java-sdk (com.aliyun.openservices:tablestore)</summary> ### [`v5.17.11`](https://redirect.github.com/aliyun/aliyun-tablestore-java-sdk/releases/tag/v5.17.11) [Compare Source](https://redirect.github.com/aliyun/aliyun-tablestore-java-sdk/compare/v5.17.10...v5.17.11) - Add ots-knowledgebase v0.2 support - Modify Api Interface - Fix shade dependency relocate commons-codec - Support new stream columns - SQLQuery support non txn table dml </details> --- ### Configuration 📅 **Schedule**: (UTC) - Branch creation - At any time (no schedule defined) - Automerge - At any time (no schedule defined) 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/langchain4j/langchain4j). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4xNzMuNiIsInVwZGF0ZWRJblZlciI6IjQzLjE3My42IiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJkZXBlbmRlbmNpZXMiXX0=--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
This PR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | [org.junit:junit-bom](https://junit.org/) ([source](https://redirect.github.com/junit-team/junit-framework)) | `6.0.1` → `6.0.3` |  |  | | [org.junit.platform:junit-platform-console-standalone](https://junit.org/) ([source](https://redirect.github.com/junit-team/junit-framework)) | `6.0.1` → `6.0.3` |  |  | | [org.junit.jupiter:junit-jupiter-api](https://junit.org/) ([source](https://redirect.github.com/junit-team/junit-framework)) | `6.0.1` → `6.0.3` |  |  | --- > [!WARNING] > Some dependencies could not be looked up. Check the [Dependency Dashboard](..langchain4j/issues/2069) for more information. --- ### Configuration 📅 **Schedule**: (UTC) - Branch creation - At any time (no schedule defined) - Automerge - At any time (no schedule defined) 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about these updates again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/langchain4j/langchain4j). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4xNzMuNiIsInVwZGF0ZWRJblZlciI6IjQzLjE3My42IiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJkZXBlbmRlbmNpZXMiXX0=--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
This PR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | [io.micrometer:micrometer-core](https://redirect.github.com/micrometer-metrics/micrometer) | `1.16.2` → `1.16.5` |  |  | | [io.micrometer:micrometer-bom](https://redirect.github.com/micrometer-metrics/micrometer) | `1.16.2` → `1.16.5` |  |  | | [io.micrometer:micrometer-bom](https://redirect.github.com/micrometer-metrics/micrometer) | `1.16.3` → `1.16.5` |  |  | --- > [!WARNING] > Some dependencies could not be looked up. Check the [Dependency Dashboard](..langchain4j/issues/2069) for more information. --- ### Release Notes <details> <summary>micrometer-metrics/micrometer (io.micrometer:micrometer-core)</summary> ### [`v1.16.5`](https://redirect.github.com/micrometer-metrics/micrometer/releases/tag/v1.16.5): 1.16.5 #### :lady\_beetle: Bug Fixes - Invalid reflection hint in micrometer-core for native GraalVM 25 build [#​7316](https://redirect.github.com/micrometer-metrics/micrometer/issues/7316) - ObservationGrpcClientInterceptor throws NPE when NameResolver returns empty authority [#​7380](https://redirect.github.com/micrometer-metrics/micrometer/issues/7380) - Wrong Nullability Information in OkHttpMetricsEventListener [#​7373](https://redirect.github.com/micrometer-metrics/micrometer/issues/7373) #### 🔨 Dependency Upgrades - Bump com.netflix.spectator:spectator-reg-atlas from 1.9.4 to 1.9.6 [#​7393](https://redirect.github.com/micrometer-metrics/micrometer/pull/7393) - Bump spring6 from 6.2.16 to 6.2.17 [#​7294](https://redirect.github.com/micrometer-metrics/micrometer/pull/7294) #### ❤️ Contributors Thank you to all the contributors who worked on this release: [@​Joowon-Seo](https://redirect.github.com/Joowon-Seo), and [@​ribafish](https://redirect.github.com/ribafish) ### [`v1.16.4`](https://redirect.github.com/micrometer-metrics/micrometer/releases/tag/v1.16.4): 1.16.4 #### :lady\_beetle: Bug Fixes - Using context-propagation with a no-op Observation corrupts the current Observation [#​7200](https://redirect.github.com/micrometer-metrics/micrometer/issues/7200) #### :notebook\_with\_decorative\_cover: Documentation - Document (Default)MeterObservationHandler [#​6361](https://redirect.github.com/micrometer-metrics/micrometer/issues/6361) - Document Jakarta Mail instrumentation [#​6485](https://redirect.github.com/micrometer-metrics/micrometer/issues/6485) - Document statsd UDS config [#​5730](https://redirect.github.com/micrometer-metrics/micrometer/issues/5730) #### ❤️ Contributors Thank you to all the contributors who worked on this release: [@​izeye](https://redirect.github.com/izeye), [@​kangdaeun1022](https://redirect.github.com/kangdaeun1022), and [@​seonghyeoklee](https://redirect.github.com/seonghyeoklee) ### [`v1.16.3`](https://redirect.github.com/micrometer-metrics/micrometer/releases/tag/v1.16.3): 1.16.3 #### :lady\_beetle: Bug Fixes - Add immutable noop Observation.Context [#​7133](https://redirect.github.com/micrometer-metrics/micrometer/pull/7133) - OSGi test isn't reporting failures [#​7060](https://redirect.github.com/micrometer-metrics/micrometer/issues/7060) #### :notebook\_with\_decorative\_cover: Documentation - Docs: Align AsciiDoc callout syntax [#​7148](https://redirect.github.com/micrometer-metrics/micrometer/pull/7148) - Improve documentation of ExecutorServiceMetrics [#​7083](https://redirect.github.com/micrometer-metrics/micrometer/pull/7083) #### 🔨 Dependency Upgrades - Bump ch.qos.logback:logback-classic from 1.5.24 to 1.5.26 [#​7125](https://redirect.github.com/micrometer-metrics/micrometer/pull/7125) - Bump com.hazelcast:hazelcast from 5.3.8 to 5.6.0 [#​6802](https://redirect.github.com/micrometer-metrics/micrometer/pull/6802) - Bump com.netflix.spectator:spectator-reg-atlas from 1.9.3 to 1.9.4 [#​7166](https://redirect.github.com/micrometer-metrics/micrometer/pull/7166) - Bump dropwizard-metrics from 4.2.37 to 4.2.38 [#​7120](https://redirect.github.com/micrometer-metrics/micrometer/pull/7120) - Bump gradle-wrapper from 8.14.3 to 8.14.4 [#​7112](https://redirect.github.com/micrometer-metrics/micrometer/pull/7112) - Bump grpc from 1.76.2 to 1.76.3 [#​7137](https://redirect.github.com/micrometer-metrics/micrometer/pull/7137) - Bump io.dropwizard.metrics5:metrics-core from 5.0.5 to 5.0.6 [#​7124](https://redirect.github.com/micrometer-metrics/micrometer/pull/7124) - Bump io.freefair.aspectj.post-compile-weaving from 8.14.3 to 8.14.4 [#​7070](https://redirect.github.com/micrometer-metrics/micrometer/pull/7070) - Bump io.spring.develocity.conventions from 0.0.24 to 0.0.25 [#​7101](https://redirect.github.com/micrometer-metrics/micrometer/pull/7101) - Bump org.assertj:assertj-core from 3.27.6 to 3.27.7 [#​7126](https://redirect.github.com/micrometer-metrics/micrometer/pull/7126) #### ❤️ Contributors Thank you to all the contributors who worked on this release: [@​izeye](https://redirect.github.com/izeye), [@​mateusz-nalepa](https://redirect.github.com/mateusz-nalepa), and [@​tkmsaaaam](https://redirect.github.com/tkmsaaaam) </details> --- ### Configuration 📅 **Schedule**: (UTC) - Branch creation - At any time (no schedule defined) - Automerge - At any time (no schedule defined) 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about these updates again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/langchain4j/langchain4j). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4xNzMuNiIsInVwZGF0ZWRJblZlciI6IjQzLjE3My42IiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJkZXBlbmRlbmNpZXMiXX0=--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
This PR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | [org.slf4j:slf4j-bom](http://www.slf4j.org) ([source](https://redirect.github.com/qos-ch/slf4j), [changelog](https://www.slf4j.org/news.html)) | `2.0.17` → `2.0.18` |  |  | | [org.slf4j:slf4j-api](http://www.slf4j.org) ([source](https://redirect.github.com/qos-ch/slf4j), [changelog](https://www.slf4j.org/news.html)) | `2.0.17` → `2.0.18` |  |  | --- > [!WARNING] > Some dependencies could not be looked up. Check the [Dependency Dashboard](..langchain4j/issues/2069) for more information. --- ### Configuration 📅 **Schedule**: (UTC) - Branch creation - At any time (no schedule defined) - Automerge - At any time (no schedule defined) 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about these updates again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/langchain4j/langchain4j). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4xNzMuNiIsInVwZGF0ZWRJblZlciI6IjQzLjE3My42IiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJkZXBlbmRlbmNpZXMiXX0=--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
This PR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | [me.kpavlov.aimocks:ai-mocks-openai-jvm](https://mokksy.dev) ([source](https://redirect.github.com/mokksy/ai-mocks)) | `0.4.6` → `0.5.1` |  |  | | [me.kpavlov.aimocks:ai-mocks-gemini-jvm](https://mokksy.dev) ([source](https://redirect.github.com/mokksy/ai-mocks)) | `0.4.6` → `0.5.1` |  |  | | [me.kpavlov.aimocks:ai-mocks-anthropic-jvm](https://mokksy.dev) ([source](https://redirect.github.com/mokksy/ai-mocks)) | `0.4.6` → `0.5.1` |  |  | --- > [!WARNING] > Some dependencies could not be looked up. Check the [Dependency Dashboard](..langchain4j/issues/2069) for more information. --- ### Release Notes <details> <summary>mokksy/ai-mocks (me.kpavlov.aimocks:ai-mocks-openai-jvm)</summary> ### [`v0.5.1`](https://redirect.github.com/mokksy/ai-mocks/releases/tag/v0.5.1) [Compare Source](https://redirect.github.com/mokksy/ai-mocks/compare/v0.5.0-Aplha2...v0.5.1) ##### What's Changed - fix: Refactor Mokksy core and Highlighting logic by [@​kpavlov](https://redirect.github.com/kpavlov) in [#​424](https://redirect.github.com/mokksy/ai-mocks/pull/424) - doc: Update Mokksy documentation by [@​kpavlov](https://redirect.github.com/kpavlov) in [#​420](https://redirect.github.com/mokksy/ai-mocks/pull/420) - fix(deps): update dependency com.openai:openai-java-client-okhttp to v4.3.0 by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​419](https://redirect.github.com/mokksy/ai-mocks/pull/419) - fix(deps): update dependency com.google.genai:google-genai to v1.21.0 by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​418](https://redirect.github.com/mokksy/ai-mocks/pull/418) - fix(deps): update dependency net.datafaker:datafaker to v2.5.2 by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​423](https://redirect.github.com/mokksy/ai-mocks/pull/423) - fix(deps): update dependency com.google.genai:google-genai to v1.22.0 by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​422](https://redirect.github.com/mokksy/ai-mocks/pull/422) - chore(deps): update dependency org.openrewrite.rewrite to v7.18.0 by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​421](https://redirect.github.com/mokksy/ai-mocks/pull/421) - fix(deps): update dependency com.openai:openai-java to v4.3.0 by [@​renovate](https://redirect.github.com/renovate)\[bot] in [#​415](https://redirect.github.com/mokksy/ai-mocks/pull/415) **Full Changelog**: <mokksy/ai-mocks@v0.5.0...v0.5.1> ### [`v0.5.0-Aplha2`](https://redirect.github.com/mokksy/ai-mocks/compare/v0.5.0...v0.5.0-Aplha2) [Compare Source](https://redirect.github.com/mokksy/ai-mocks/compare/v0.5.0...v0.5.0-Aplha2) ### [`v0.5.0`](https://redirect.github.com/mokksy/ai-mocks/releases/tag/v0.5.0) [Compare Source](https://redirect.github.com/mokksy/ai-mocks/compare/v0.4.6...v0.5.0) ##### Release Notes Compared to 0.4.6 ##### Features - Introduced Ollama Mock Server with streaming support - Support A2A protocol v0.3.0 (JSON-RPC 2.0) - Support OpenAI moderation endpoint - Support OpenAI embeddings endpoint - Enhance logging - Introduce ShadowJar to avoid dependency conflicts - Support JSON schema for function parameters in chat models ##### Fixes - Pass `systemMessage` as a parameter in test methods - Update OpenAI Chat API to match the specification ##### Chore/Enhancements - Update Kotlin compiler options and use `kotlin-stdlib` 2.0.10 - Enable parallel test execution for JUnit in all modules - Update tests and Dokka **Full Changelog**: <mokksy/ai-mocks@v0.4.6...v0.5.0> </details> --- ### Configuration 📅 **Schedule**: (UTC) - Branch creation - At any time (no schedule defined) - Automerge - At any time (no schedule defined) 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about these updates again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/langchain4j/langchain4j). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4xNzMuNiIsInVwZGF0ZWRJblZlciI6IjQzLjE3My42IiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJkZXBlbmRlbmNpZXMiXX0=--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
….0 (langchain4j#5219) This PR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | [com.jayway.jsonpath:json-path](https://redirect.github.com/jayway/JsonPath) | `2.9.0` → `2.10.0` |  |  | --- > [!WARNING] > Some dependencies could not be looked up. Check the [Dependency Dashboard](..langchain4j/issues/2069) for more information. --- ### Configuration 📅 **Schedule**: (UTC) - Branch creation - At any time (no schedule defined) - Automerge - At any time (no schedule defined) 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/langchain4j/langchain4j). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4xNzMuNiIsInVwZGF0ZWRJblZlciI6IjQzLjE3My42IiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJkZXBlbmRlbmNpZXMiXX0=--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
…chain4j#5220) This PR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | [docusaurus-lunr-search](https://redirect.github.com/lelouch77/docusaurus-lunr-search/blob/master/README.md) ([source](https://redirect.github.com/lelouch77/docusaurus-lunr-search)) | [`3.5.0` → `3.6.0`](https://renovatebot.com/diffs/npm/docusaurus-lunr-search/3.5.0/3.6.0) |  |  | --- > [!WARNING] > Some dependencies could not be looked up. Check the [Dependency Dashboard](..langchain4j/issues/2069) for more information. --- ### Release Notes <details> <summary>lelouch77/docusaurus-lunr-search (docusaurus-lunr-search)</summary> ### [`v3.6.0`](https://redirect.github.com/lelouch77/docusaurus-lunr-search/compare/v3.5.0...119d8f18d4fff460b73a507011845a72c4bd3116) [Compare Source](https://redirect.github.com/lelouch77/docusaurus-lunr-search/compare/v3.5.0...119d8f18d4fff460b73a507011845a72c4bd3116) </details> --- ### Configuration 📅 **Schedule**: (UTC) - Branch creation - At any time (no schedule defined) - Automerge - At any time (no schedule defined) 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/langchain4j/langchain4j). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4xNzMuNiIsInVwZGF0ZWRJblZlciI6IjQzLjE3My42IiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJkZXBlbmRlbmNpZXMiXX0=--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
)" This reverts commit 08b370d.
…j#5222) This PR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | [org.jsoup:jsoup](https://jsoup.org/) ([source](https://redirect.github.com/jhy/jsoup)) | `1.18.3` → `1.22.2` |  |  | --- > [!WARNING] > Some dependencies could not be looked up. Check the [Dependency Dashboard](..langchain4j/issues/2069) for more information. --- ### Release Notes <details> <summary>jhy/jsoup (org.jsoup:jsoup)</summary> ### [`v1.22.2`](https://redirect.github.com/jhy/jsoup/blob/HEAD/CHANGES.md#1222-2026-Apr-20) ##### Improvements - Expanded and clarified `NodeTraversor` support for in-place DOM rewrites during `NodeVisitor.head()`. Current-node edits such as `remove`, `replace`, and `unwrap` now recover more predictably, while traversal stays within the original root subtree. This makes single-pass tree cleanup and normalization visitors easier to write, for example when unwrapping presentational elements or replacing text nodes as you walk the DOM. [#​2472](https://redirect.github.com/jhy/jsoup/issues/2472) - Documentation: clarified that a configured `Cleaner` may be reused across concurrent threads, and that shared `Safelist` instances should not be mutated while in use. [#​2473](https://redirect.github.com/jhy/jsoup/issues/2473) - Updated the default HTML `TagSet` for current HTML elements: added `dialog`, `search`, `picture`, and `slot`; made `ins`, `del`, `button`, `audio`, `video`, and `canvas` inline by default (`Tag#isInline()`, aligned to phrasing content in the spec); and added readable `Element.text()` boundaries for controls and embedded objects via the new `Tag.TextBoundary` option. This improves pretty-printing and keeps normalized text from running adjacent words together. [#​2493](https://redirect.github.com/jhy/jsoup/pull/2493) ##### Bug Fixes - Android (R8/ProGuard): added a rule to ignore the optional `re2j` dependency when not present. [#​2459](https://redirect.github.com/jhy/jsoup/issues/2459) - Fixed a `NodeTraversor` regression in 1.21.2 where removing or replacing the current node during `head()` could revisit the replacement node and loop indefinitely. The traversal docs now also clarify which inserted nodes are visited in the current pass. [#​2472](https://redirect.github.com/jhy/jsoup/issues/2472) - Parsing during charset sniffing no longer fails if an advisory `available()` call throws `IOException`, as seen on JDK 8 `HttpURLConnection`. [#​2474](https://redirect.github.com/jhy/jsoup/issues/2474) - `Cleaner` no longer makes relative URL attributes in the input document absolute when cleaning or validating a `Document`. URL normalization now applies only to the cleaned output, and `Safelist.isSafeAttribute()` is side effect free. [#​2475](https://redirect.github.com/jhy/jsoup/issues/2475) - `Cleaner` no longer duplicates enforced attributes when the input `Document` preserves attribute case. A case-variant source attribute is now replaced by the enforced attribute in the cleaned output. [#​2476](https://redirect.github.com/jhy/jsoup/issues/2476) - If a per-request SOCKS proxy is configured, jsoup now avoids using the JDK `HttpClient`, because the JDK would silently ignore that proxy and attempt to connect directly. Those requests now fall back to the legacy `HttpURLConnection` transport instead, which does support SOCKS. [#​2468](https://redirect.github.com/jhy/jsoup/issues/2468) - `Connection.Response.streamParser()` and `DataUtil.streamParser(Path, ...)` could fail on small inputs without a declared charset, if the initial 5 KB charset sniff fully consumed the input and closed it before the stream parse began. [#​2483](https://redirect.github.com/jhy/jsoup/issues/2483) - In XML mode, doctypes with an internal subset, such as `<!DOCTYPE root [<!ENTITY name "value">]>`, now round-trip correctly. The subset is preserved as raw text only; entities are not expanded and external DTDs are not loaded. [#​2486](https://redirect.github.com/jhy/jsoup/issues/2486) ##### Build Changes - Migrated the integration test server from Jetty to Netty, which actively maintains support for our minimum JDK target (8). [#​2491](https://redirect.github.com/jhy/jsoup/pull/2491) ### [`v1.22.1`](https://redirect.github.com/jhy/jsoup/blob/HEAD/CHANGES.md#1221-2026-Jan-01) ##### Improvements - Added support for using the `re2j` regular expression engine for regex-based CSS selectors (e.g. `[attr~=regex]`, `:matches(regex)`), which ensures linear-time performance for regex evaluation. This allows safer handling of arbitrary user-supplied query regexes. To enable, add the `com.google.re2j` dependency to your classpath, e.g.: ```xml <dependency> <groupId>com.google.re2j</groupId> <artifactId>re2j</artifactId> <version>1.8</version> </dependency> ``` (If you already have that dependency in your classpath, but you want to keep using the Java regex engine, you can disable re2j via `System.setProperty("jsoup.useRe2j", "false")`.) You can confirm that the re2j engine has been enabled correctly by calling `org.jsoup.helper.Regex.usingRe2j()`. [#​2407](https://redirect.github.com/jhy/jsoup/pull/2407) - Added an instance method `Parser#unescape(String, boolean)` that unescapes HTML entities using the parser's configuration (e.g. to support error tracking), complementing the existing static utility `Parser.unescapeEntities(String, boolean)`. [#​2396](https://redirect.github.com/jhy/jsoup/pull/2396) - Added a configurable maximum parser depth (to limit the number of open elements on stack) to both HTML and XML parsers. The HTML parser now defaults to a depth of 512 to match browser behavior, and protect against unbounded stack growth, while the XML parser keeps unlimited depth by default, but can opt into a limit via `org.jsoup.parser.Parser#setMaxDepth`. [#​2421](https://redirect.github.com/jhy/jsoup/issues/2421) - Build: added CI coverage for JDK 25 [#​2403](https://redirect.github.com/jhy/jsoup/pull/2403) - Build: added a CI fuzzer for contextual fragment parsing (in addition to existing full body HTML and XML fuzzers). [oss-fuzz #​14041](https://redirect.github.com/google/oss-fuzz/pull/14041) ##### Changes - Set a removal schedule of jsoup 1.24.1 for previously deprecated APIs. ##### Bug Fixes - Previously cached child `Elements` of an `Element` were not correctly invalidated in `Node#replaceWith(Node)`, which could lead to incorrect results when subsequently calling `Element#children()`. [#​2391](https://redirect.github.com/jhy/jsoup/issues/2391) - Attribute selector values are now compared literally without trimming. Previously, jsoup trimmed whitespace from selector values and from element attribute values, which could cause mismatches with browser behavior (e.g. `[attr=" foo "]`). Now matches align with the CSS specification and browser engines. [#​2380](https://redirect.github.com/jhy/jsoup/issues/2380) - When using the JDK HttpClient, any system default proxy (`ProxySelector.getDefault()`) was ignored. Now, the system proxy is used if a per-request proxy is not set. [#​2388](https://redirect.github.com/jhy/jsoup/issues/2388), [#​2390](https://redirect.github.com/jhy/jsoup/pull/2390) - A `ValidationException` could be thrown in the adoption agency algorithm with particularly broken input. Now logged as a parse error. [#​2393](https://redirect.github.com/jhy/jsoup/issues/2393) - Null characters in the HTML body were not consistently removed; and in foreign content were not correctly replaced. [#​2395](https://redirect.github.com/jhy/jsoup/issues/2395) - An `IndexOutOfBoundsException` could be thrown when parsing a body fragment with crafted input. Now logged as a parse error. [#​2397](https://redirect.github.com/jhy/jsoup/issues/2397), [#​2406](https://redirect.github.com/jhy/jsoup/issues/2406) - When using StructuralEvaluators (e.g., a `parent child` selector) across many retained threads, their memoized results could also be retained, increasing memory use. These results are now cleared immediately after use, reducing overall memory consumption. [#​2411](https://redirect.github.com/jhy/jsoup/issues/2411) - Cloning a `Parser` now preserves any custom `TagSet` applied to the parser. [#​2422](https://redirect.github.com/jhy/jsoup/issues/2422), [#​2423](https://redirect.github.com/jhy/jsoup/pull/2423) - Custom tags marked as `Tag.Void` now parse and serialize like the built-in void elements: they no longer consume following content, and the XML serializer emits the expected self-closing form. [#​2425](https://redirect.github.com/jhy/jsoup/issues/2425) - The `<br>` element is once again classified as an inline tag (`Tag.isBlock() == false`), matching common developer expectations and its role as phrasing content in HTML, while pretty-printing and text extraction continue to treat it as a line break in the rendered output. [#​2387](https://redirect.github.com/jhy/jsoup/issues/2387), [#​2439](https://redirect.github.com/jhy/jsoup/issues/2439) - Fixed an intermittent truncation issue when fetching and parsing remote documents via `Jsoup.connect(url).get()`. On responses without a charset header, the initial charset sniff could sometimes (depending on buffering / `available()` behavior) be mistaken for end-of-stream and a partial parse reused, dropping trailing content. [#​2448](https://redirect.github.com/jhy/jsoup/issues/2448) - `TagSet` copies no longer mutate their template during lazy lookups, preventing cross-thread `ConcurrentModificationException` when parsing with shared sessions. [#​2453](https://redirect.github.com/jhy/jsoup/pull/2453) - Fixed parsing of `<svg>` `foreignObject` content nested within a `<p>`, which could incorrectly move the HTML subtree outside the SVG. [#​2452](https://redirect.github.com/jhy/jsoup/issues/2452) ##### Internal Changes - Deprecated internal helper `org.jsoup.internal.Functions` (for removal in v1.23.1). This was previously used to support older Android API levels without full `java.util.function` coverage; jsoup now requires core library desugaring so this indirection is no longer necessary. [#​2412](https://redirect.github.com/jhy/jsoup/pull/2412) ### [`v1.21.2`](https://redirect.github.com/jhy/jsoup/blob/HEAD/CHANGES.md#1212-2025-Aug-25) ##### Changes - Deprecated internal (yet visible) methods `Normalizer#normalize(String, bool)` and `Attribute#shouldCollapseAttribute(Document.OutputSettings)`. These will be removed in a future version. - Deprecated `Connection#sslSocketFactory(SSLSocketFactory)` in favor of the new `Connection#sslContext(SSLContext)`. Using `sslSocketFactory` will force the use of the legacy `HttpUrlConnection` implementation, which does not support HTTP/2. [#​2370](https://redirect.github.com/jhy/jsoup/pull/2370) ##### Improvements - When pretty-printing, if there are consecutive text nodes (via DOM manipulation), the non-significant whitespace between them will be collapsed. [#​2349](https://redirect.github.com/jhy/jsoup/pull/2349). - Updated `Connection.Response#statusMessage()` to return a simple loggable string message (e.g. "OK") when using the `HttpClient` implementation, which doesn't otherwise return any server-set status message. [#​2356](https://redirect.github.com/jhy/jsoup/issues/2346) - `Attributes#size()` and `Attributes#isEmpty()` now exclude any internal attributes (such as user data) from their count. This aligns with the attributes' serialized output and iterator. [#​2369](https://redirect.github.com/jhy/jsoup/pull/2369) - Added `Connection#sslContext(SSLContext)` to provide a custom SSL (TLS) context to requests, supporting both the `HttpClient` and the legacy `HttUrlConnection` implementations. [#​2370](https://redirect.github.com/jhy/jsoup/pull/2370) - Performance optimizations for DOM manipulation methods including when repeatedly removing an element's first child (`element.child(0).remove()`, and when using `Parser#parseBodyFragement()` to parse a large number of direct children. [#​2373](https://redirect.github.com/jhy/jsoup/pull/2373). ##### Bug Fixes - When parsing from an InputStream and a multibyte character happened to straddle a buffer boundary, the stream would not be completely read. [#​2353](https://redirect.github.com/jhy/jsoup/issues/2353). - In `NodeTraversor`, if a last child element was removed during the `head()` call, the parent would be visited twice. [#​2355](https://redirect.github.com/jhy/jsoup/issues/2355). - Cloning an Element that has an Attributes object would add an empty internal user-data attribute to that clone, which would cause unexpected results for `Attributes#size()` and `Attributes#isEmpty()`. [#​2356](https://redirect.github.com/jhy/jsoup/issues/2356) - In a multithreaded application where multiple threads are calling `Element#children()` on the same element concurrently, a race condition could happen when the method was generating the internal child element cache (a filtered view of its child nodes). Since concurrent reads of DOM objects should be threadsafe without external synchronization, this method has been updated to execute atomically. [#​2366](https://redirect.github.com/jhy/jsoup/issues/2366) - When parsing HTML with svg:script elements in SVG elements, don't enter the Text insertion mode, but continue to parse as foreign content. Otherwise, misnested HTML could then cause an IndexOutOfBoundsException. [#​2374](https://redirect.github.com/jhy/jsoup/issues/2374) - Malformed HTML could throw an IndexOutOfBoundsException during the adoption agency. [#​2377](https://redirect.github.com/jhy/jsoup/pull/2377). ### [`v1.21.1`](https://redirect.github.com/jhy/jsoup/blob/HEAD/CHANGES.md#1211-2025-Jun-23) ##### Changes - Removed previously deprecated methods. [#​2317](https://redirect.github.com/jhy/jsoup/pull/2317) - Deprecated the `:matchText` pseduo-selector due to its side effects on the DOM; use the new `::textnode` selector and the `Element#selectNodes(String css, Class type)` method instead. [#​2343](https://redirect.github.com/jhy/jsoup/pull/2343) - Deprecated `Connection.Response#bufferUp()` in lieu of `Connection.Response#readFully()` which can throw a checked IOException. - Deprecated internal methods `Validate#ensureNotNull` (replaced by typed `Validate#expectNotNull`); protected HTML appenders from Attribute and Node. - If you happen to be using any of the deprecated methods, please take the opportunity now to migrate away from them, as they will be removed in a future release. ##### Improvements - Enhanced the `Selector` to support direct matching against nodes such as comments and text nodes. For example, you can now find an element that follows a specific comment: `::comment:contains(prices) + p` will select `p` elements immediately after a `<!-- prices: -->` comment. Supported types include `::node`, `::leafnode`, `::comment`, `::text`, `::data`, and `::cdata`. Node contextual selectors like `::node:contains(text)`, `:matches(regex)`, and `:blank` are also supported. Introduced `Element#selectNodes(String css)` and `Element#selectNodes(String css, Class nodeType)` for direct node selection. [#​2324](https://redirect.github.com/jhy/jsoup/pull/2324) - Added `TagSet#onNewTag(Consumer<Tag> customizer)`: register a callback that’s invoked for each new or cloned Tag when it’s inserted into the set. Enables dynamic tweaks of tag options (for example, marking all custom tags as self-closing, or everything in a given namespace as preserving whitespace). - Made `TokenQueue` and `CharacterReader` autocloseable, to ensure that they will release their buffers back to the buffer pool, for later reuse. - Added `Selector#evaluatorOf(String css)`, as a clearer way to obtain an Evaluator from a CSS query. An alias of `QueryParser.parse(String css)`. - Custom tags (defined via the `TagSet`) in a foreign namespace (e.g. SVG) can be configured to parse as data tags. - Added `NodeVisitor#traverse(Node)` to simplify node traversal calls (vs. importing `NodeTraversor`). - Updated the default user-agent string to improve compatibility. [#​2341](https://redirect.github.com/jhy/jsoup/issues/2341) - The HTML parser now allows the specific text-data type (Data, RcData) to be customized for known tags. (Previously, that was only supported on custom tags.) [#​2326](https://redirect.github.com/jhy/jsoup/issues/2326). - Added `Connection#readFully()` as a replacement for `Connection#bufferUp()` with an explicit IOException. Similarly, added `Connection#readBody()` over `Connection#body()`. Deprecated `Connection#bufferUp()`. [#​2327](https://redirect.github.com/jhy/jsoup/pull/2327) - When serializing HTML, the `<` and `>` characters are now escaped in attributes. This helps prevent a class of mutation XSS attacks. [#​2337](https://redirect.github.com/jhy/jsoup/pull/2337) - Changed `Connection` to prefer using the JDK's HttpClient over HttpUrlConnection, if available, to enable HTTP/2 support by default. Users can disable via `-Djsoup.useHttpClient=false`. [#​2340](https://redirect.github.com/jhy/jsoup/pull/2340) ##### Bug Fixes - The contents of a `script` in a `svg` foreign context should be parsed as script data, not text. [#​2320](https://redirect.github.com/jhy/jsoup/issues/2320) - `Tag#isFormSubmittable()` was updating the Tag's options. [#​2323](https://redirect.github.com/jhy/jsoup/issues/2323) - The HTML pretty-printer would incorrectly trim whitespace when text followed an inline element in a block element. [#​2325](https://redirect.github.com/jhy/jsoup/issues/2325) - Custom tags with hyphens or other non-letter characters in their names now work correctly as Data or RcData tags. Their closing tags are now tokenized properly. [#​2332](https://redirect.github.com/jhy/jsoup/issues/2332) - When cloning an Element, the clone would retain the source's cached child Element list (if any), which could lead to incorrect results when modifying the clone's child elements. [#​2334](https://redirect.github.com/jhy/jsoup/issues/2334) ### [`v1.20.1`](https://redirect.github.com/jhy/jsoup/blob/HEAD/CHANGES.md#1201-2025-Apr-29) ##### Changes - To better follow the HTML5 spec and current browsers, the HTML parser no longer allows self-closing tags (`<foo />`) to close HTML elements by default. Foreign content (SVG, MathML), and content parsed with the XML parser, still supports self-closing tags. If you need specific HTML tags to support self-closing, you can register a custom tag via the `TagSet` configured in `Parser.tagSet()`, using `Tag#set(Tag.SelfClose)`. Standard void tags (such as `<img>`, `<br>`, etc.) continue to behave as usual and are not affected by this change. [#​2300](https://redirect.github.com/jhy/jsoup/issues/2300). - The following internal components have been **deprecated**. If you do happen to be using any of these, please take the opportunity now to migrate away from them, as they will be removed in jsoup 1.21.1. - `ChangeNotifyingArrayList`, `Document.updateMetaCharsetElement()`, `Document.updateMetaCharsetElement(boolean)`, `HtmlTreeBuilder.isContentForTagData(String)`, `Parser.isContentForTagData(String)`, `Parser.setTreeBuilder(TreeBuilder)`, `Tag.formatAsBlock()`, `Tag.isFormListed()`, `TokenQueue.addFirst(String)`, `TokenQueue.chompTo(String)`, `TokenQueue.chompToIgnoreCase(String)`, `TokenQueue.consumeToIgnoreCase(String)`, `TokenQueue.consumeWord()`, `TokenQueue.matchesAny(String...)` ##### Functional Improvements - Rebuilt the HTML pretty-printer, to simplify and consolidate the implementation, improve consistency, support custom Tags, and provide a cleaner path for ongoing improvements. The specific HTML produced by the pretty-printer may be different from previous versions. [#​2286](https://redirect.github.com/jhy/jsoup/issues/2286). - Added the ability to define custom tags, and to modify properties of known tags, via the `TagSet` tag collection. Their properties can impact both the parse and how content is serialized (output as HTML or XML). [#​2285](https://redirect.github.com/jhy/jsoup/issues/2285). - `Element.cssSelector()` will prefer to return shorter selectors by using ancestor IDs when available and unique. E.g. `#id > div > p` instead of `html > body > div > div > p` [#​2283](https://redirect.github.com/jhy/jsoup/pull/2283). - Added `Elements.deselect(int index)`, `Elements.deselect(Object o)`, and `Elements.deselectAll()` methods to remove elements from the `Elements` list without removing them from the underlying DOM. Also added `Elements.asList()` method to get a modifiable list of elements without affecting the DOM. (Individual Elements remain linked to the DOM.) [#​2100](https://redirect.github.com/jhy/jsoup/issues/2100). - Added support for sending a request body from an InputStream with `Connection.requestBodyStream(InputStream stream)`. [#​1122](https://redirect.github.com/jhy/jsoup/issues/1122). - The XML parser now supports scoped xmlns: prefix namespace declarations, and applies the correct namespace to Tags and Attributes. Also, added `Tag#prefix()`, `Tag#localName()`, `Attribute#prefix()`, `Attribute#localName()`, and `Attribute#namespace()` to retrieve these. [#​2299](https://redirect.github.com/jhy/jsoup/issues/2299). - CSS identifiers are now escaped and unescaped correctly to the CSS spec. `Element#cssSelector()` will emit appropriately escaped selectors, and the QueryParser supports those. Added `Selector.escapeCssIdentifier()` and `Selector.unescapeCssIdentifier()`. [#​2297](https://redirect.github.com/jhy/jsoup/pull/2297), [#​2305](https://redirect.github.com/jhy/jsoup/pull/2305) ##### Structure and Performance Improvements - Refactored the CSS `QueryParser` into a clearer recursive descent parser. [#​2310](https://redirect.github.com/jhy/jsoup/pull/2310). - CSS selectors with consecutive combinators (e.g. `div >> p`) will throw an explicit parse exception. [#​2311](https://redirect.github.com/jhy/jsoup/pull/2311). - Performance: reduced the shallow size of an Element from 40 to 32 bytes, and the NodeList from 32 to 24. [#​2307](https://redirect.github.com/jhy/jsoup/pull/2307). - Performance: reduced GC load of new StringBuilders when tokenizing input HTML. [#​2304](https://redirect.github.com/jhy/jsoup/pull/2304). - Made `Parser` instances threadsafe, so that inadvertent use of the same instance across threads will not lead to errors. For actual concurrency, use `Parser#newInstance()` per thread. [#​2314](https://redirect.github.com/jhy/jsoup/pull/2314). ##### Bug Fixes - Element names containing characters invalid in XML are now normalized to valid XML names when serializing. [#​1496](https://redirect.github.com/jhy/jsoup/issues/1496). - When serializing to XML, characters that are invalid in XML 1.0 should be removed (not encoded). [#​1743](https://redirect.github.com/jhy/jsoup/issues/1743). - When converting a `Document` to the W3C DOM in `W3CDom`, elements with an attribute in an undeclared namespace now get a declaration of `xmlns:prefix="undefined"`. This allows subsequent serialization to XML via `W3CDom.asString()` to succeed. [#​2087](https://redirect.github.com/jhy/jsoup/issues/2087). - The `StreamParser` could emit the final elements of a document twice, due to how `onNodeCompleted` was fired when closing out the stack. [#​2295](https://redirect.github.com/jhy/jsoup/issues/2295). - When parsing with the XML parser and error tracking enabled, the trailing `?` in `<?xml version="1.0"?>` would incorrectly emit an error. [#​2298](https://redirect.github.com/jhy/jsoup/issues/2298). - Calling `Element#cssSelector()` on an element with combining characters in the class or ID now produces the correct output. [#​1984](https://redirect.github.com/jhy/jsoup/issues/1984). ### [`v1.19.1`](https://redirect.github.com/jhy/jsoup/blob/HEAD/CHANGES.md#1191-2025-Mar-04) ##### Changes - Added support for **http/2** requests in `Jsoup.connect()`, when running on Java 11+, via the Java HttpClient implementation. [#​2257](https://redirect.github.com/jhy/jsoup/pull/2257). - In this version of jsoup, the default is to make requests via the HttpUrlConnection implementation: use **`System.setProperty("jsoup.useHttpClient", "true");`** to enable making requests via the HttpClient instead , which will enable http/2 support, if available. This will become the default in a later version of jsoup, so now is a good time to validate it. - If you are repackaging the jsoup jar in your deployment (i.e. creating a shaded- or a fat-jar), make sure to specify that as a Multi-Release JAR. - If the `HttpClient` impl is not available in your JRE, requests will continue to be made via `HttpURLConnection` (in `http/1.1` mode). - Updated the minimum Android API Level validation from 10 to **21**. As with previous jsoup versions, Android developers need to enable core library desugaring. The minimum Java version remains Java 8. [#​2173](https://redirect.github.com/jhy/jsoup/pull/2173) - Removed previously deprecated class: `org.jsoup.UncheckedIOException` (replace with `java.io.UncheckedIOException`); moved previously deprecated method `Element Element#forEach(Consumer)` to `void Element#forEach(Consumer())`. [#​2246](https://redirect.github.com/jhy/jsoup/pull/2246) - Deprecated the methods `Document#updateMetaCharsetElement(boolean)` and `Document#updateMetaCharsetElement()`, as the setting had no effect. When `Document#charset(Charset)` is called, the document's meta charset or XML encoding instruction is always set. [#​2247](https://redirect.github.com/jhy/jsoup/pull/2247) ##### Improvements - When cleaning HTML with a `Safelist` that preserves relative links, the `isValid()` method will now consider these links valid. Additionally, the enforced attribute `rel=nofollow` will only be added to external links when configured in the safelist. [#​2245](https://redirect.github.com/jhy/jsoup/pull/2245) - Added `Element#selectStream(String query)` and `Element#selectStream(Evaluator)` methods, that return a `Stream` of matching elements. Elements are evaluated and returned as they are found, and the stream can be terminated early. [#​2092](https://redirect.github.com/jhy/jsoup/pull/2092) - `Element` objects now implement `Iterable`, enabling them to be used in enhanced for loops. - Added support for fragment parsing from a `Reader` via `Parser#parseFragmentInput(Reader, Element, String)`. [#​1177](https://redirect.github.com/jhy/jsoup/issues/1177) - Reintroduced CLI executable examples, in `jsoup-examples.jar`. [#​1702](https://redirect.github.com/jhy/jsoup/issues/1702) - Optimized performance of selectors like `#id .class` (and other similar descendant queries) by around 4.6x, by better balancing the Ancestor evaluator's cost function in the query planner. [#​2254](https://redirect.github.com/jhy/jsoup/issues/2254) - Removed the legacy parsing rules for `<isindex>` tags, which would autovivify a `form` element with labels. This is no longer in the spec. - Added `Elements.selectFirst(String cssQuery)` and `Elements.expectFirst(String cssQuery)`, to select the first matching element from an `Elements` list. [#​2263](https://redirect.github.com/jhy/jsoup/pull/2263/) - When parsing with the XML parser, XML Declarations and Processing Instructions are directly handled, vs bouncing through the HTML parser's bogus comment handler. Serialization for non-doctype declarations no longer end with a spurious `!`. [#​2275](https://redirect.github.com/jhy/jsoup/pull/2275) - When converting parsed HTML to XML or the W3C DOM, element names containing `<` are normalized to `_` to ensure valid XML. For example, `<foo<bar>` becomes `<foo_bar>`, as XML does not allow `<` in element names, but HTML5 does. [#​2276](https://redirect.github.com/jhy/jsoup/pull/2276) - Reimplemented the HTML5 Adoption Agency Algorithm to the current spec. This handles mis-nested formating / structural elements. [#​2278](https://redirect.github.com/jhy/jsoup/pull/2278) ##### Bug Fixes - If an element has an `;` in an attribute name, it could not be converted to a W3C DOM element, and so subsequent XPath queries could miss that element. Now, the attribute name is more completely normalized. [#​2244](https://redirect.github.com/jhy/jsoup/issues/2244) - For backwards compatibility, reverted the internal attribute key for doctype names to "name". [#​2241](https://redirect.github.com/jhy/jsoup/issues/2241) - In `Connection`, skip cookies that have no name, rather than throwing a validation exception. [#​2242](https://redirect.github.com/jhy/jsoup/issues/2242) - When running on JDK 1.8, the error `java.lang.NoSuchMethodError: java.nio.ByteBuffer.flip()Ljava/nio/ByteBuffer;` could be thrown when calling `Response#body()` after parsing from a URL and the buffer size was exceeded. [#​2250](https://redirect.github.com/jhy/jsoup/pull/2250) - For backwards compatibility, allow `null` InputStream inputs to `Jsoup.parse(InputStream stream, ...)`, by returning an empty `Document`. [#​2252](https://redirect.github.com/jhy/jsoup/issues/2252) - A `template` tag containing an `li` within an open `li` would be parsed incorrectly, as it was not recognized as a "special" tag (which have additional processing rules). Also, added the SVG and MathML namespace tags to the list of special tags. [#​2258](https://redirect.github.com/jhy/jsoup/issues/2258) - A `template` tag containing a `button` within an open `button` would be parsed incorrectly, as the "in button scope" check was not aware of the `template` element. Corrected other instances including MathML and SVG elements, also. [#​2271](https://redirect.github.com/jhy/jsoup/issues/2271) - An `:nth-child` selector with a negative digit-less step, such as `:nth-child(-n+2)`, would be parsed incorrectly as a positive step, and so would not match as expected. [#​1147](https://redirect.github.com/jhy/jsoup/issues/1147) - Calling `doc.charset(charset)` on an empty XML document would throw an `IndexOutOfBoundsException`. [#​2266](https://redirect.github.com/jhy/jsoup/issues/2266) - Fixed a memory leak when reusing a nested `StructuralEvaluator` (e.g., a selector ancestor chain like `A B C`) by ensuring cache reset calls cascade to inner members. [#​2277](https://redirect.github.com/jhy/jsoup/issues/2277) - Concurrent calls to `doc.clone().append(html)` were not supported. When a document was cloned, its `Parser` was not cloned but was a shallow copy of the original parser. [#​2281](https://redirect.github.com/jhy/jsoup/issues/2281) </details> --- ### Configuration 📅 **Schedule**: (UTC) - Branch creation - At any time (no schedule defined) - Automerge - At any time (no schedule defined) 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/langchain4j/langchain4j). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4xNzMuNiIsInVwZGF0ZWRJblZlciI6IjQzLjE3My42IiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJkZXBlbmRlbmNpZXMiXX0=--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
…rs to v2.1.4 (langchain4j#5224) This PR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | [org.opensearch:opensearch-testcontainers](https://redirect.github.com/opensearch-project/opensearch-testcontainers) | `2.0.1` → `2.1.4` |  |  | --- > [!WARNING] > Some dependencies could not be looked up. Check the [Dependency Dashboard](..langchain4j/issues/2069) for more information. --- ### Release Notes <details> <summary>opensearch-project/opensearch-testcontainers (org.opensearch:opensearch-testcontainers)</summary> ### [`v2.1.4`](https://redirect.github.com/opensearch-project/opensearch-testcontainers/releases/tag/v2.1.4) #### What's Changed - Bump next version to 2.1.4 by [@​reta](https://redirect.github.com/reta) in [#​224](https://redirect.github.com/opensearch-project/opensearch-testcontainers/pull/224) - Add Andrew Ross ([@​andrross](https://redirect.github.com/andrross)) as a mainatainer by [@​reta](https://redirect.github.com/reta) in [#​225](https://redirect.github.com/opensearch-project/opensearch-testcontainers/pull/225) - \[Backport]\[2.x] Update the maven snapshot publish endpoint and credential ([#​254](https://redirect.github.com/opensearch-project/opensearch-testcontainers/issues/254)) by [@​reta](https://redirect.github.com/reta) in [#​265](https://redirect.github.com/opensearch-project/opensearch-testcontainers/pull/265) - Add OpenSearch cluster test case by [@​reta](https://redirect.github.com/reta) in [#​271](https://redirect.github.com/opensearch-project/opensearch-testcontainers/pull/271) - Remove legacy sonatype credential ([#​255](https://redirect.github.com/opensearch-project/opensearch-testcontainers/issues/255)) by [@​reta](https://redirect.github.com/reta) in [#​275](https://redirect.github.com/opensearch-project/opensearch-testcontainers/pull/275) **Full Changelog**: <opensearch-project/opensearch-testcontainers@v2.1.3...v2.1.4> ### [`v2.1.3`](https://redirect.github.com/opensearch-project/opensearch-testcontainers/releases/tag/v2.1.3) #### What's Changed - Bump next version to 2.1.3 by [@​reta](https://redirect.github.com/reta) in [#​200](https://redirect.github.com/opensearch-project/opensearch-testcontainers/pull/200) - Bump org.junit.jupiter:junit-jupiter-params from 5.11.3 to 5.11.4 by [@​dependabot](https://redirect.github.com/dependabot) in [#​202](https://redirect.github.com/opensearch-project/opensearch-testcontainers/pull/202) - Bump org.junit.jupiter:junit-jupiter from 5.11.3 to 5.11.4 by [@​dependabot](https://redirect.github.com/dependabot) in [#​201](https://redirect.github.com/opensearch-project/opensearch-testcontainers/pull/201) - Bump ch.qos.logback:logback-classic from 1.5.12 to 1.5.15 by [@​dependabot](https://redirect.github.com/dependabot) in [#​203](https://redirect.github.com/opensearch-project/opensearch-testcontainers/pull/203) - Bump net.researchgate:gradle-release from 3.0.2 to 3.1.0 by [@​dependabot](https://redirect.github.com/dependabot) in [#​204](https://redirect.github.com/opensearch-project/opensearch-testcontainers/pull/204) - Bump ch.qos.logback:logback-classic from 1.5.15 to 1.5.16 by [@​dependabot](https://redirect.github.com/dependabot) in [#​205](https://redirect.github.com/opensearch-project/opensearch-testcontainers/pull/205) - Update Gradle to 8.12 by [@​reta](https://redirect.github.com/reta) in [#​206](https://redirect.github.com/opensearch-project/opensearch-testcontainers/pull/206) - Bump com.diffplug.spotless:spotless-plugin-gradle from 6.25.0 to 7.0.1 by [@​dependabot](https://redirect.github.com/dependabot) in [#​208](https://redirect.github.com/opensearch-project/opensearch-testcontainers/pull/208) - Bump com.diffplug.spotless from 6.25.0 to 7.0.1 by [@​dependabot](https://redirect.github.com/dependabot) in [#​207](https://redirect.github.com/opensearch-project/opensearch-testcontainers/pull/207) - Bump com.diffplug.spotless:spotless-plugin-gradle from 7.0.1 to 7.0.2 by [@​dependabot](https://redirect.github.com/dependabot) in [#​210](https://redirect.github.com/opensearch-project/opensearch-testcontainers/pull/210) - Bump com.diffplug.spotless from 7.0.1 to 7.0.2 by [@​dependabot](https://redirect.github.com/dependabot) in [#​209](https://redirect.github.com/opensearch-project/opensearch-testcontainers/pull/209) - Bump org.opensearch.client:opensearch-rest-client from 2.18.0 to 2.19.0 by [@​dependabot](https://redirect.github.com/dependabot) in [#​211](https://redirect.github.com/opensearch-project/opensearch-testcontainers/pull/211) - Bump org.testcontainers:testcontainers from 1.20.4 to 1.20.5 by [@​dependabot](https://redirect.github.com/dependabot) in [#​214](https://redirect.github.com/opensearch-project/opensearch-testcontainers/pull/214) - Stepping [@​dblock](https://redirect.github.com/dblock) down to Emeritus. by [@​dblock](https://redirect.github.com/dblock) in [#​216](https://redirect.github.com/opensearch-project/opensearch-testcontainers/pull/216) - Removed dblock@ from CODEOWNERS. by [@​dblock](https://redirect.github.com/dblock) in [#​217](https://redirect.github.com/opensearch-project/opensearch-testcontainers/pull/217) - Bump org.opensearch.client:opensearch-rest-client from 2.19.0 to 2.19.1 by [@​dependabot](https://redirect.github.com/dependabot) in [#​218](https://redirect.github.com/opensearch-project/opensearch-testcontainers/pull/218) - Bump ch.qos.logback:logback-classic from 1.5.16 to 1.5.17 by [@​dependabot](https://redirect.github.com/dependabot) in [#​219](https://redirect.github.com/opensearch-project/opensearch-testcontainers/pull/219) - Bump org.junit.jupiter:junit-jupiter from 5.11.4 to 5.12.0 by [@​dependabot](https://redirect.github.com/dependabot) in [#​213](https://redirect.github.com/opensearch-project/opensearch-testcontainers/pull/213) **Full Changelog**: <opensearch-project/opensearch-testcontainers@v2.1.2...v2.1.3> ### [`v2.1.2`](https://redirect.github.com/opensearch-project/opensearch-testcontainers/releases/tag/v2.1.2) #### What's Changed - Bump next version to 2.1.2 by [@​reta](https://redirect.github.com/reta) in [#​184](https://redirect.github.com/opensearch-project/opensearch-testcontainers/pull/184) - Bump org.opensearch.client:opensearch-rest-client from 2.17.0 to 2.17.1 by [@​dependabot](https://redirect.github.com/dependabot) in [#​185](https://redirect.github.com/opensearch-project/opensearch-testcontainers/pull/185) - Bump org.junit.jupiter:junit-jupiter from 5.11.1 to 5.11.2 by [@​dependabot](https://redirect.github.com/dependabot) in [#​187](https://redirect.github.com/opensearch-project/opensearch-testcontainers/pull/187) - Bump ch.qos.logback:logback-classic from 1.5.8 to 1.5.10 by [@​dependabot](https://redirect.github.com/dependabot) in [#​188](https://redirect.github.com/opensearch-project/opensearch-testcontainers/pull/188) - Bump ch.qos.logback:logback-classic from 1.5.10 to 1.5.11 by [@​dependabot](https://redirect.github.com/dependabot) in [#​191](https://redirect.github.com/opensearch-project/opensearch-testcontainers/pull/191) - Bump org.junit.jupiter:junit-jupiter from 5.11.2 to 5.11.3 by [@​dependabot](https://redirect.github.com/dependabot) in [#​190](https://redirect.github.com/opensearch-project/opensearch-testcontainers/pull/190) - Bump ch.qos.logback:logback-classic from 1.5.11 to 1.5.12 by [@​dependabot](https://redirect.github.com/dependabot) in [#​193](https://redirect.github.com/opensearch-project/opensearch-testcontainers/pull/193) - Bump org.testcontainers:testcontainers from 1.20.2 to 1.20.3 by [@​dependabot](https://redirect.github.com/dependabot) in [#​192](https://redirect.github.com/opensearch-project/opensearch-testcontainers/pull/192) - Bump org.opensearch.client:opensearch-rest-client from 2.17.1 to 2.18.0 by [@​dependabot](https://redirect.github.com/dependabot) in [#​195](https://redirect.github.com/opensearch-project/opensearch-testcontainers/pull/195) - Bump org.testcontainers:testcontainers from 1.20.3 to 1.20.4 by [@​dependabot](https://redirect.github.com/dependabot) in [#​196](https://redirect.github.com/opensearch-project/opensearch-testcontainers/pull/196) - Update Gradle to 8.11.1 by [@​reta](https://redirect.github.com/reta) in [#​198](https://redirect.github.com/opensearch-project/opensearch-testcontainers/pull/198) **Full Changelog**: <opensearch-project/opensearch-testcontainers@v2.1.1...v2.1.2> ### [`v2.1.1`](https://redirect.github.com/opensearch-project/opensearch-testcontainers/releases/tag/v2.1.1) #### What's Changed - Post 2.1.0 release updates by [@​reta](https://redirect.github.com/reta) in [#​166](https://redirect.github.com/opensearch-project/opensearch-testcontainers/pull/166) - Bump org.testcontainers:testcontainers from 1.20.0 to 1.20.1 by [@​dependabot](https://redirect.github.com/dependabot) in [#​167](https://redirect.github.com/opensearch-project/opensearch-testcontainers/pull/167) - Bump org.opensearch.client:opensearch-rest-client from 2.15.0 to 2.16.0 by [@​dependabot](https://redirect.github.com/dependabot) in [#​169](https://redirect.github.com/opensearch-project/opensearch-testcontainers/pull/169) - Update Gradle to 8.10 by [@​reta](https://redirect.github.com/reta) in [#​170](https://redirect.github.com/opensearch-project/opensearch-testcontainers/pull/170) - Bump ch.qos.logback:logback-classic from 1.5.6 to 1.5.7 by [@​dependabot](https://redirect.github.com/dependabot) in [#​171](https://redirect.github.com/opensearch-project/opensearch-testcontainers/pull/171) - Bump org.junit.jupiter:junit-jupiter from 5.10.3 to 5.11.0 by [@​dependabot](https://redirect.github.com/dependabot) in [#​172](https://redirect.github.com/opensearch-project/opensearch-testcontainers/pull/172) - Bump ch.qos.logback:logback-classic from 1.5.7 to 1.5.8 by [@​dependabot](https://redirect.github.com/dependabot) in [#​174](https://redirect.github.com/opensearch-project/opensearch-testcontainers/pull/174) - Update Gradle to 8.10.1 by [@​reta](https://redirect.github.com/reta) in [#​175](https://redirect.github.com/opensearch-project/opensearch-testcontainers/pull/175) - Bump org.opensearch.client:opensearch-rest-client from 2.16.0 to 2.17.0 by [@​dependabot](https://redirect.github.com/dependabot) in [#​177](https://redirect.github.com/opensearch-project/opensearch-testcontainers/pull/177) - Add support for OPENSEARCH\_INITIAL\_ADMIN\_PASSWORD that is required by OpenSearch 2.12.0 or later by [@​reta](https://redirect.github.com/reta) in [#​176](https://redirect.github.com/opensearch-project/opensearch-testcontainers/pull/176) - Update Gradle to 8.10.2 by [@​reta](https://redirect.github.com/reta) in [#​178](https://redirect.github.com/opensearch-project/opensearch-testcontainers/pull/178) - Bump org.junit.jupiter:junit-jupiter-params from 5.11.0 to 5.11.1 by [@​dependabot](https://redirect.github.com/dependabot) in [#​180](https://redirect.github.com/opensearch-project/opensearch-testcontainers/pull/180) - Bump org.junit.jupiter:junit-jupiter from 5.11.0 to 5.11.1 by [@​dependabot](https://redirect.github.com/dependabot) in [#​179](https://redirect.github.com/opensearch-project/opensearch-testcontainers/pull/179) - Update Testcontainers to 1.20.2 by [@​reta](https://redirect.github.com/reta) in [#​181](https://redirect.github.com/opensearch-project/opensearch-testcontainers/pull/181) **Full Changelog**: <opensearch-project/opensearch-testcontainers@v2.1.0...v2.1.1> ### [`v2.1.0`](https://redirect.github.com/opensearch-project/opensearch-testcontainers/releases/tag/v2.1.0) [Compare Source](https://redirect.github.com/opensearch-project/opensearch-testcontainers/compare/v2.0.2...v2.1.0) #### What's Changed - Post 2.0.2 release updates by [@​reta](https://redirect.github.com/reta) in [#​162](https://redirect.github.com/opensearch-project/opensearch-testcontainers/pull/162) - Update Testcontainers to 1.20.0 by [@​reta](https://redirect.github.com/reta) in [#​163](https://redirect.github.com/opensearch-project/opensearch-testcontainers/pull/163) - Update Gradle to 8.9 by [@​reta](https://redirect.github.com/reta) in [#​160](https://redirect.github.com/opensearch-project/opensearch-testcontainers/pull/160) **Full Changelog**: <opensearch-project/opensearch-testcontainers@v2.0.2...v2.1.0> ### [`v2.0.2`](https://redirect.github.com/opensearch-project/opensearch-testcontainers/releases/tag/v2.0.2) [Compare Source](https://redirect.github.com/opensearch-project/opensearch-testcontainers/compare/v2.0.1...v2.0.2) #### What's Changed - Bump version to 2.0.2 and update README.md by [@​reta](https://redirect.github.com/reta) in [#​118](https://redirect.github.com/opensearch-project/opensearch-testcontainers/pull/118) - Bump com.diffplug.spotless from 6.22.0 to 6.23.0 by [@​dependabot](https://redirect.github.com/dependabot) in [#​122](https://redirect.github.com/opensearch-project/opensearch-testcontainers/pull/122) - Bump com.diffplug.spotless:spotless-plugin-gradle from 6.22.0 to 6.23.0 by [@​dependabot](https://redirect.github.com/dependabot) in [#​121](https://redirect.github.com/opensearch-project/opensearch-testcontainers/pull/121) - Bump org.testcontainers:testcontainers from 1.19.2 to 1.19.3 by [@​dependabot](https://redirect.github.com/dependabot) in [#​119](https://redirect.github.com/opensearch-project/opensearch-testcontainers/pull/119) - Bump com.diffplug.spotless:spotless-plugin-gradle from 6.23.0 to 6.23.3 by [@​dependabot](https://redirect.github.com/dependabot) in [#​126](https://redirect.github.com/opensearch-project/opensearch-testcontainers/pull/126) - Bump org.opensearch.client:opensearch-rest-client from 2.11.0 to 2.11.1 by [@​dependabot](https://redirect.github.com/dependabot) in [#​125](https://redirect.github.com/opensearch-project/opensearch-testcontainers/pull/125) - Bump com.diffplug.spotless from 6.23.0 to 6.23.3 by [@​dependabot](https://redirect.github.com/dependabot) in [#​124](https://redirect.github.com/opensearch-project/opensearch-testcontainers/pull/124) - Update to Gradle 8.5 by [@​reta](https://redirect.github.com/reta) in [#​129](https://redirect.github.com/opensearch-project/opensearch-testcontainers/pull/129) - Update logback to 1.2.13 by [@​reta](https://redirect.github.com/reta) in [#​130](https://redirect.github.com/opensearch-project/opensearch-testcontainers/pull/130) - Update CodeQL Gitghub actions by [@​reta](https://redirect.github.com/reta) in [#​131](https://redirect.github.com/opensearch-project/opensearch-testcontainers/pull/131) - Bump com.diffplug.spotless from 6.23.3 to 6.24.0 by [@​dependabot](https://redirect.github.com/dependabot) in [#​133](https://redirect.github.com/opensearch-project/opensearch-testcontainers/pull/133) - Bump com.diffplug.spotless:spotless-plugin-gradle from 6.23.3 to 6.24.0 by [@​dependabot](https://redirect.github.com/dependabot) in [#​132](https://redirect.github.com/opensearch-project/opensearch-testcontainers/pull/132) - Bump com.diffplug.spotless:spotless-plugin-gradle from 6.24.0 to 6.25.0 by [@​dependabot](https://redirect.github.com/dependabot) in [#​137](https://redirect.github.com/opensearch-project/opensearch-testcontainers/pull/137) - Bump com.diffplug.spotless from 6.24.0 to 6.25.0 by [@​dependabot](https://redirect.github.com/dependabot) in [#​136](https://redirect.github.com/opensearch-project/opensearch-testcontainers/pull/136) - Bump org.testcontainers:testcontainers from 1.19.3 to 1.19.4 by [@​dependabot](https://redirect.github.com/dependabot) in [#​134](https://redirect.github.com/opensearch-project/opensearch-testcontainers/pull/134) - Bump org.junit.jupiter:junit-jupiter-params from 5.10.1 to 5.10.2 by [@​dependabot](https://redirect.github.com/dependabot) in [#​140](https://redirect.github.com/opensearch-project/opensearch-testcontainers/pull/140) - Bump org.junit.jupiter:junit-jupiter from 5.10.1 to 5.10.2 by [@​dependabot](https://redirect.github.com/dependabot) in [#​139](https://redirect.github.com/opensearch-project/opensearch-testcontainers/pull/139) - Bump org.testcontainers:testcontainers from 1.19.4 to 1.19.5 by [@​dependabot](https://redirect.github.com/dependabot) in [#​141](https://redirect.github.com/opensearch-project/opensearch-testcontainers/pull/141) - Bump org.testcontainers:testcontainers from 1.19.5 to 1.19.6 by [@​dependabot](https://redirect.github.com/dependabot) in [#​144](https://redirect.github.com/opensearch-project/opensearch-testcontainers/pull/144) - Bump org.opensearch.client:opensearch-rest-client from 2.11.1 to 2.12.0 by [@​dependabot](https://redirect.github.com/dependabot) in [#​143](https://redirect.github.com/opensearch-project/opensearch-testcontainers/pull/143) - Bump org.testcontainers:testcontainers from 1.19.6 to 1.19.7 by [@​dependabot](https://redirect.github.com/dependabot) in [#​147](https://redirect.github.com/opensearch-project/opensearch-testcontainers/pull/147) - Bump org.opensearch.client:opensearch-rest-client from 2.12.0 to 2.13.0 by [@​dependabot](https://redirect.github.com/dependabot) in [#​149](https://redirect.github.com/opensearch-project/opensearch-testcontainers/pull/149) - Update to Gradle 8.7 by [@​reta](https://redirect.github.com/reta) in [#​150](https://redirect.github.com/opensearch-project/opensearch-testcontainers/pull/150) - Bump ch.qos.logback:logback-classic from 1.2.13 to 1.5.6 by [@​dependabot](https://redirect.github.com/dependabot) in [#​152](https://redirect.github.com/opensearch-project/opensearch-testcontainers/pull/152) - Bump org.testcontainers:testcontainers from 1.19.7 to 1.19.8 by [@​dependabot](https://redirect.github.com/dependabot) in [#​154](https://redirect.github.com/opensearch-project/opensearch-testcontainers/pull/154) - Update Testcontainers to 1.19.8 by [@​reta](https://redirect.github.com/reta) in [#​153](https://redirect.github.com/opensearch-project/opensearch-testcontainers/pull/153) - Bump org.opensearch.client:opensearch-rest-client from 2.13.0 to 2.14.0 by [@​dependabot](https://redirect.github.com/dependabot) in [#​156](https://redirect.github.com/opensearch-project/opensearch-testcontainers/pull/156) - Bump org.opensearch.client:opensearch-rest-client from 2.14.0 to 2.15.0 by [@​dependabot](https://redirect.github.com/dependabot) in [#​157](https://redirect.github.com/opensearch-project/opensearch-testcontainers/pull/157) - Bump org.junit.jupiter:junit-jupiter from 5.10.2 to 5.10.3 by [@​dependabot](https://redirect.github.com/dependabot) in [#​159](https://redirect.github.com/opensearch-project/opensearch-testcontainers/pull/159) **Full Changelog**: <opensearch-project/opensearch-testcontainers@v2.0.1...v2.0.2> </details> --- ### Configuration 📅 **Schedule**: (UTC) - Branch creation - At any time (no schedule defined) - Automerge - At any time (no schedule defined) 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/langchain4j/langchain4j). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4xNzMuNiIsInVwZGF0ZWRJblZlciI6IjQzLjE3My42IiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJkZXBlbmRlbmNpZXMiXX0=--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
This PR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | [org.apache.poi:poi-scratchpad](https://poi.apache.org/) | `5.4.0` → `5.5.1` |  |  | | [org.apache.poi:poi-ooxml](https://poi.apache.org/) | `5.4.0` → `5.5.1` |  |  | | [org.apache.poi:poi](https://poi.apache.org/) | `5.4.0` → `5.5.1` |  |  | --- > [!WARNING] > Some dependencies could not be looked up. Check the [Dependency Dashboard](..langchain4j/issues/2069) for more information. --- ### Configuration 📅 **Schedule**: (UTC) - Branch creation - At any time (no schedule defined) - Automerge - At any time (no schedule defined) 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about these updates again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/langchain4j/langchain4j). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4xNzMuNiIsInVwZGF0ZWRJblZlciI6IjQzLjE3My42IiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJkZXBlbmRlbmNpZXMiXX0=--> --------- Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Dmytro Liubarskyi <ljubarskij@gmail.com>
This PR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | [ai.djl.huggingface:tokenizers](http://www.djl.ai/extensions/tokenizers) ([source](https://redirect.github.com/deepjavalibrary/djl)) | `0.31.1` → `0.36.0` |  |  | | [ai.djl:api](http://www.djl.ai/api) ([source](https://redirect.github.com/deepjavalibrary/djl)) | `0.31.1` → `0.36.0` |  |  | | [ai.djl.huggingface:tokenizers](http://www.djl.ai/extensions/tokenizers) ([source](https://redirect.github.com/deepjavalibrary/djl)) | `0.33.0` → `0.36.0` |  |  | | [ai.djl:api](http://www.djl.ai/api) ([source](https://redirect.github.com/deepjavalibrary/djl)) | `0.33.0` → `0.36.0` |  |  | --- > [!WARNING] > Some dependencies could not be looked up. Check the [Dependency Dashboard](..langchain4j/issues/2069) for more information. --- ### Release Notes <details> <summary>deepjavalibrary/djl (ai.djl.huggingface:tokenizers)</summary> ### [`v0.36.0`](https://redirect.github.com/deepjavalibrary/djl/releases/tag/v0.36.0): DJL v0.36.0 Release [Compare Source](https://redirect.github.com/deepjavalibrary/djl/compare/v0.35.1...v0.36.0) ##### What's Changed - Increase build version to 0.36.0 by [@​access2rohit](https://redirect.github.com/access2rohit) in [#​3817](https://redirect.github.com/deepjavalibrary/djl/pull/3817) - Update the Documentation (via DocString) to indicate the risks of using Utils.openUrl() with untrusted inputs by [@​access2rohit](https://redirect.github.com/access2rohit) in [#​3819](https://redirect.github.com/deepjavalibrary/djl/pull/3819) - NDManager.create(Number) unsupported type error message improvement by [@​fracpete](https://redirect.github.com/fracpete) in [#​3818](https://redirect.github.com/deepjavalibrary/djl/pull/3818) ##### New Contributors - [@​access2rohit](https://redirect.github.com/access2rohit) made their first contribution in [#​3816](https://redirect.github.com/deepjavalibrary/djl/pull/3816) - [@​fracpete](https://redirect.github.com/fracpete) made their first contribution in [#​3818](https://redirect.github.com/deepjavalibrary/djl/pull/3818) **Full Changelog**: <deepjavalibrary/djl@v0.35.1...v0.36.0> ### [`v0.35.1`](https://redirect.github.com/deepjavalibrary/djl/releases/tag/v0.35.1): DJL v0.35.1 Release [Compare Source](https://redirect.github.com/deepjavalibrary/djl/compare/v0.35.0...v0.35.1) ##### What's Changed - fix: upgrade jQuery from 2.1.1 to 3.7.1 to address security vulnerabilities by [@​Lokiiiiii](https://redirect.github.com/Lokiiiiii) in [#​3812](https://redirect.github.com/deepjavalibrary/djl/pull/3812) - Fix script injection vulnerabilities in GitHub Actions workflows by [@​Lokiiiiii](https://redirect.github.com/Lokiiiiii) in [#​3813](https://redirect.github.com/deepjavalibrary/djl/pull/3813) - Fix security vulnerabilities in QuestionAnsweringTranslator (CVSS 8.2) by [@​Lokiiiiii](https://redirect.github.com/Lokiiiiii) in [#​3814](https://redirect.github.com/deepjavalibrary/djl/pull/3814) ##### New Contributors - [@​Lokiiiiii](https://redirect.github.com/Lokiiiiii) made their first contribution in [#​3812](https://redirect.github.com/deepjavalibrary/djl/pull/3812) **Full Changelog**: <deepjavalibrary/djl@v0.35.0...v0.35.1> ### [`v0.35.0`](https://redirect.github.com/deepjavalibrary/djl/releases/tag/v0.35.0): DJL v0.35.0 Release [Compare Source](https://redirect.github.com/deepjavalibrary/djl/compare/v0.34.0...v0.35.0) ##### What's Changed - Engine Updates - XGBoost 3.0.4 [#​3788](https://redirect.github.com/deepjavalibrary/djl/pull/3788) ##### Enhancements - Increase build version to 0.35.0 by [@​xyang16](https://redirect.github.com/xyang16) in [#​3766](https://redirect.github.com/deepjavalibrary/djl/pull/3766) - Add default header for openai by [@​bryanktliu](https://redirect.github.com/bryanktliu) in [#​3772](https://redirect.github.com/deepjavalibrary/djl/pull/3772) - Update gradle to 9.0.0 by [@​xyang16](https://redirect.github.com/xyang16) in [#​3777](https://redirect.github.com/deepjavalibrary/djl/pull/3777) - \[XGBoost] Support json model for XGBoost by [@​xyang16](https://redirect.github.com/xyang16) in [#​3786](https://redirect.github.com/deepjavalibrary/djl/pull/3786) - \[api] Accept json input/output for tensor input by [@​xyang16](https://redirect.github.com/xyang16) in [#​3787](https://redirect.github.com/deepjavalibrary/djl/pull/3787) - Upgrade xgboost to 3.0.4 by [@​xyang16](https://redirect.github.com/xyang16) in [#​3788](https://redirect.github.com/deepjavalibrary/djl/pull/3788) - \[pytorch] Add tuple of dict support for IValue by [@​xyang16](https://redirect.github.com/xyang16) in [#​3797](https://redirect.github.com/deepjavalibrary/djl/pull/3797) - \[XGBoost] Add back gpu support for xgboost by [@​xyang16](https://redirect.github.com/xyang16) in [#​3796](https://redirect.github.com/deepjavalibrary/djl/pull/3796) - Update gradle build script to support configuration cache by [@​xyang16](https://redirect.github.com/xyang16) in [#​3782](https://redirect.github.com/deepjavalibrary/djl/pull/3782) - Added percentile implementation for Pytorch engine by [@​tipame](https://redirect.github.com/tipame) in [#​3800](https://redirect.github.com/deepjavalibrary/djl/pull/3800) - Implemented CSV translator that handles CSV input/output support for XGBoost by [@​smouaa](https://redirect.github.com/smouaa) in [#​3801](https://redirect.github.com/deepjavalibrary/djl/pull/3801) - Correct topK documentation by [@​alanocallaghan](https://redirect.github.com/alanocallaghan) in [#​3808](https://redirect.github.com/deepjavalibrary/djl/pull/3808) - \[api] Refactor csvTranslator by [@​xyang16](https://redirect.github.com/xyang16) in [#​3805](https://redirect.github.com/deepjavalibrary/djl/pull/3805) ##### Bug Fixes - Fix pytorch native 2.5.1 aarch64 build by [@​xyang16](https://redirect.github.com/xyang16) in [#​3767](https://redirect.github.com/deepjavalibrary/djl/pull/3767) - \[fix] Fixes load tokenizer gpu shared library issue by [@​xyang16](https://redirect.github.com/xyang16) in [#​3773](https://redirect.github.com/deepjavalibrary/djl/pull/3773) - Fixes [#​3774](https://redirect.github.com/deepjavalibrary/djl/issues/3774) for YoloSegmentationTranslator by [@​bryanktliu](https://redirect.github.com/bryanktliu) in [#​3775](https://redirect.github.com/deepjavalibrary/djl/pull/3775) - Fixes issue [#​3761](https://redirect.github.com/deepjavalibrary/djl/issues/3761) by [@​bryanktliu](https://redirect.github.com/bryanktliu) in [#​3776](https://redirect.github.com/deepjavalibrary/djl/pull/3776) - Fix `BaseNDManager.debugDump` by [@​petebankhead](https://redirect.github.com/petebankhead) in [#​3780](https://redirect.github.com/deepjavalibrary/djl/pull/3780) - Fix preference of tokenizer\_config.json and remove doLowerCase from TokenizerConfig by [@​Soha-Agarwal](https://redirect.github.com/Soha-Agarwal) in [#​3785](https://redirect.github.com/deepjavalibrary/djl/pull/3785) - Fixes: [#​3795](https://redirect.github.com/deepjavalibrary/djl/issues/3795), adds aggregation\_strategy to token classification task by [@​bryanktliu](https://redirect.github.com/bryanktliu) in [#​3798](https://redirect.github.com/deepjavalibrary/djl/pull/3798) - Fix pytorch native build for windows by [@​xyang16](https://redirect.github.com/xyang16) in [#​3802](https://redirect.github.com/deepjavalibrary/djl/pull/3802) ##### CI/CD - Build pytorch jni cpu precxx by [@​xyang16](https://redirect.github.com/xyang16) in [#​3770](https://redirect.github.com/deepjavalibrary/djl/pull/3770) - Remove pytorch 2.1.2 and 2.3.1 publish in nightly by [@​xyang16](https://redirect.github.com/xyang16) in [#​3771](https://redirect.github.com/deepjavalibrary/djl/pull/3771) - Fix sentencepiece native workflow by [@​xyang16](https://redirect.github.com/xyang16) in [#​3768](https://redirect.github.com/deepjavalibrary/djl/pull/3768) - Fix fasttext native workflow by [@​xyang16](https://redirect.github.com/xyang16) in [#​3769](https://redirect.github.com/deepjavalibrary/djl/pull/3769) - Fix continuous build by [@​xyang16](https://redirect.github.com/xyang16) in [#​3804](https://redirect.github.com/deepjavalibrary/djl/pull/3804) ##### New Contributors - [@​smouaa](https://redirect.github.com/smouaa) made their first contribution in [#​3801](https://redirect.github.com/deepjavalibrary/djl/pull/3801) - [@​alanocallaghan](https://redirect.github.com/alanocallaghan) made their first contribution in [#​3808](https://redirect.github.com/deepjavalibrary/djl/pull/3808) **Full Changelog**: <deepjavalibrary/djl@v0.34.0...v0.35.0> ### [`v0.34.0`](https://redirect.github.com/deepjavalibrary/djl/releases/tag/v0.34.0): DJL v0.34.0 Release [Compare Source](https://redirect.github.com/deepjavalibrary/djl/compare/v0.33.0...v0.34.0) ##### Key Changes - Engine Updates - PyTorch 2.7.1 [#​3733](https://redirect.github.com/deepjavalibrary/djl/pull/3733) - Remove TensorRT engine [#​3765](https://redirect.github.com/deepjavalibrary/djl/pull/3765) ##### Enhancements - \[api] Adds FUSE based repository support by [@​raymondkhliu](https://redirect.github.com/raymondkhliu) in [#​3695](https://redirect.github.com/deepjavalibrary/djl/pull/3695) - Treat model server as a remote model by [@​xyang16](https://redirect.github.com/xyang16) in [#​3704](https://redirect.github.com/deepjavalibrary/djl/pull/3704) - Align ZeroShotClassificationTranslator with Hugging Face behavior by [@​raphaeldelio](https://redirect.github.com/raphaeldelio) in [#​3712](https://redirect.github.com/deepjavalibrary/djl/pull/3712) - Remove usage of UUID.randomUUID() for better performance by [@​aakashb-kayzen](https://redirect.github.com/aakashb-kayzen) in [#​3719](https://redirect.github.com/deepjavalibrary/djl/pull/3719) - Replace UUID with NDManager.nextUid() by [@​xyang16](https://redirect.github.com/xyang16) in [#​3720](https://redirect.github.com/deepjavalibrary/djl/pull/3720) - Add NDArray diagonal by [@​dev-jonghoonpark](https://redirect.github.com/dev-jonghoonpark) in [#​3724](https://redirect.github.com/deepjavalibrary/djl/pull/3724) - \[api] Implements remote REST API call as a model by [@​bryanktliu](https://redirect.github.com/bryanktliu) in [#​3725](https://redirect.github.com/deepjavalibrary/djl/pull/3725) - Adds jsonlines streaming support for RpcEngine by [@​bryanktliu](https://redirect.github.com/bryanktliu) in [#​3727](https://redirect.github.com/deepjavalibrary/djl/pull/3727) - Adds genai extension by [@​bryanktliu](https://redirect.github.com/bryanktliu) in [#​3726](https://redirect.github.com/deepjavalibrary/djl/pull/3726) - \[genai] tool calls to ChatInput by [@​bryanktliu](https://redirect.github.com/bryanktliu) in [#​3728](https://redirect.github.com/deepjavalibrary/djl/pull/3728) - Add utility class for genai function call by [@​bryanktliu](https://redirect.github.com/bryanktliu) in [#​3729](https://redirect.github.com/deepjavalibrary/djl/pull/3729) - Improve function call for genai extension by [@​bryanktliu](https://redirect.github.com/bryanktliu) in [#​3731](https://redirect.github.com/deepjavalibrary/djl/pull/3731) - Support convert ChatInput to GeminiInput by [@​bryanktliu](https://redirect.github.com/bryanktliu) in [#​3739](https://redirect.github.com/deepjavalibrary/djl/pull/3739) - Add partial support for HuggingFace Tokenizer to use parameters from tokenizer\_config.json by [@​Soha-Agarwal](https://redirect.github.com/Soha-Agarwal) in [#​3738](https://redirect.github.com/deepjavalibrary/djl/pull/3738) - Add Anthropic support from genai by [@​bryanktliu](https://redirect.github.com/bryanktliu) in [#​3759](https://redirect.github.com/deepjavalibrary/djl/pull/3759) ##### Bug Fixes - Correct CaptchaDataset options count to prevent torch.gather IndexError by [@​xinhuagu](https://redirect.github.com/xinhuagu) in [#​3694](https://redirect.github.com/deepjavalibrary/djl/pull/3694) - Fix dimension check when reshaping offsets in SeqBatcher by [@​xinhuagu](https://redirect.github.com/xinhuagu) in [#​3702](https://redirect.github.com/deepjavalibrary/djl/pull/3702) - Fix the incorrect function name and minor typo in doc by [@​xinhuagu](https://redirect.github.com/xinhuagu) in [#​3703](https://redirect.github.com/deepjavalibrary/djl/pull/3703) - Fix incorrect return value in getImageHeight method by [@​xinhuagu](https://redirect.github.com/xinhuagu) in [#​3706](https://redirect.github.com/deepjavalibrary/djl/pull/3706) - \[djl\_converter]: Fixes djl\_converter bug by [@​raymondkhliu](https://redirect.github.com/raymondkhliu) in [#​3705](https://redirect.github.com/deepjavalibrary/djl/pull/3705) - Fix the out of bounds exception when using an init image by [@​luke-zhou](https://redirect.github.com/luke-zhou) in [#​3717](https://redirect.github.com/deepjavalibrary/djl/pull/3717) - Fix earlystopping metric issue [#​3722](https://redirect.github.com/deepjavalibrary/djl/issues/3722) by [@​SamBSalgado](https://redirect.github.com/SamBSalgado) in [#​3736](https://redirect.github.com/deepjavalibrary/djl/pull/3736) - \[tokenizers] Fix tokenizer cpu and cuda build by [@​xyang16](https://redirect.github.com/xyang16) in [#​3756](https://redirect.github.com/deepjavalibrary/djl/pull/3756) - \[examples] Update tfhub urls by [@​xyang16](https://redirect.github.com/xyang16) in [#​3752](https://redirect.github.com/deepjavalibrary/djl/pull/3752) - Update tfhub repository url by [@​xyang16](https://redirect.github.com/xyang16) in [#​3755](https://redirect.github.com/deepjavalibrary/djl/pull/3755) ##### Documentation - \[docs] Update model zoo document by [@​xyang16](https://redirect.github.com/xyang16) in [#​3690](https://redirect.github.com/deepjavalibrary/djl/pull/3690) ##### CI/CD - increase build version to 0.34.0 by [@​siddvenk](https://redirect.github.com/siddvenk) in [#​3689](https://redirect.github.com/deepjavalibrary/djl/pull/3689) - Uses new recommended way to build pip wheel by [@​raymondkhliu](https://redirect.github.com/raymondkhliu) in [#​3709](https://redirect.github.com/deepjavalibrary/djl/pull/3709) - Bump protobuf from 3.20.2 to 4.25.8 in /extensions/tokenizers/src/main/python by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​3716](https://redirect.github.com/deepjavalibrary/djl/pull/3716) - \[android] Upgrade DJL version to 0.34.0 by [@​xyang16](https://redirect.github.com/xyang16) in [#​3721](https://redirect.github.com/deepjavalibrary/djl/pull/3721) - \[ci] simplify nightly publish workflow by [@​xyang16](https://redirect.github.com/xyang16) in [#​3732](https://redirect.github.com/deepjavalibrary/djl/pull/3732) - \[ci] Update maven central publish url and credential by [@​xyang16](https://redirect.github.com/xyang16) in [#​3748](https://redirect.github.com/deepjavalibrary/djl/pull/3748) - \[djl-converter] Update license in pyproject.toml by [@​xyang16](https://redirect.github.com/xyang16) in [#​3749](https://redirect.github.com/deepjavalibrary/djl/pull/3749) - \[pytorch] Updates PyTorch to 2.7.1 by [@​xyang16](https://redirect.github.com/xyang16) in [#​3733](https://redirect.github.com/deepjavalibrary/djl/pull/3733) - \[ci] Remove serving-publish workflow by [@​xyang16](https://redirect.github.com/xyang16) in [#​3750](https://redirect.github.com/deepjavalibrary/djl/pull/3750) - Update oss sonatype snapshot repository url by [@​xyang16](https://redirect.github.com/xyang16) in [#​3754](https://redirect.github.com/deepjavalibrary/djl/pull/3754) - Upgrade dependency versions by [@​xyang16](https://redirect.github.com/xyang16) in [#​3762](https://redirect.github.com/deepjavalibrary/djl/pull/3762) - \[android] Upgrade pytorch version to 2.7.1 by [@​xyang16](https://redirect.github.com/xyang16) in [#​3763](https://redirect.github.com/deepjavalibrary/djl/pull/3763) - \[ci] Add post-publish task by [@​xyang16](https://redirect.github.com/xyang16) in [#​3764](https://redirect.github.com/deepjavalibrary/djl/pull/3764) - Increase DJL version to 0.34.0 by [@​Soha-Agarwal](https://redirect.github.com/Soha-Agarwal) in [#​3758](https://redirect.github.com/deepjavalibrary/djl/pull/3758) ##### New Contributors - [@​raymondkhliu](https://redirect.github.com/raymondkhliu) made their first contribution in [#​3695](https://redirect.github.com/deepjavalibrary/djl/pull/3695) - [@​raphaeldelio](https://redirect.github.com/raphaeldelio) made their first contribution in [#​3712](https://redirect.github.com/deepjavalibrary/djl/pull/3712) - [@​luke-zhou](https://redirect.github.com/luke-zhou) made their first contribution in [#​3717](https://redirect.github.com/deepjavalibrary/djl/pull/3717) - [@​aakashb-kayzen](https://redirect.github.com/aakashb-kayzen) made their first contribution in [#​3719](https://redirect.github.com/deepjavalibrary/djl/pull/3719) - [@​dev-jonghoonpark](https://redirect.github.com/dev-jonghoonpark) made their first contribution in [#​3724](https://redirect.github.com/deepjavalibrary/djl/pull/3724) - [@​Soha-Agarwal](https://redirect.github.com/Soha-Agarwal) made their first contribution in [#​3738](https://redirect.github.com/deepjavalibrary/djl/pull/3738) - [@​SamBSalgado](https://redirect.github.com/SamBSalgado) made their first contribution in [#​3736](https://redirect.github.com/deepjavalibrary/djl/pull/3736) **Full Changelog**: <deepjavalibrary/djl@v0.33.0...v0.34.0> ### [`v0.33.0`](https://redirect.github.com/deepjavalibrary/djl/releases/tag/v0.33.0): DJL v0.33.0 Release [Compare Source](https://redirect.github.com/deepjavalibrary/djl/compare/v0.32.0...v0.33.0) ##### Key Changes - Engine Updates - OnnxRuntime Updated to 1.21.0 ##### Enhancements - \[tokenizers] Add lasttoken pooling by [@​xyang16](https://redirect.github.com/xyang16) in [#​3607](https://redirect.github.com/deepjavalibrary/djl/pull/3607) - \[api] Provide concrete implementation of TranslatorContext by [@​xyang16](https://redirect.github.com/xyang16) in [#​3622](https://redirect.github.com/deepjavalibrary/djl/pull/3622) - \[api] Add zero shot object detection support by [@​xyang16](https://redirect.github.com/xyang16) in [#​3626](https://redirect.github.com/deepjavalibrary/djl/pull/3626) - \[api] Adds zero short image classification support by [@​xyang16](https://redirect.github.com/xyang16) in [#​3628](https://redirect.github.com/deepjavalibrary/djl/pull/3628) - Adds yolov8s-world2 model support by [@​xyang16](https://redirect.github.com/xyang16) in [#​3637](https://redirect.github.com/deepjavalibrary/djl/pull/3637) - \[tensorflow] Allow retrieving available signatures for TensorFlow models by [@​xyang16](https://redirect.github.com/xyang16) in [#​3638](https://redirect.github.com/deepjavalibrary/djl/pull/3638) - \[api] Improve listModel performance by [@​xyang16](https://redirect.github.com/xyang16) in [#​3641](https://redirect.github.com/deepjavalibrary/djl/pull/3641) - \[tokenizers] Adds SparseRetrievalTranslator by [@​xyang16](https://redirect.github.com/xyang16) in [#​3642](https://redirect.github.com/deepjavalibrary/djl/pull/3642) - \[tokenizers] Fix tokenizer name in tests by [@​xyang16](https://redirect.github.com/xyang16) in [#​3652](https://redirect.github.com/deepjavalibrary/djl/pull/3652) - \[tokenizer] Updates tokenizers to 0.21.1 by [@​xyang16](https://redirect.github.com/xyang16) in [#​3654](https://redirect.github.com/deepjavalibrary/djl/pull/3654) - \[onnxruntime] Updates OnnxRuntime to 1.21.0 by [@​xyang16](https://redirect.github.com/xyang16) in [#​3678](https://redirect.github.com/deepjavalibrary/djl/pull/3678) - \[examples] Add WhisperJet model demo by [@​xyang16](https://redirect.github.com/xyang16) in [#​3681](https://redirect.github.com/deepjavalibrary/djl/pull/3681) - \[pytorch] Add diff support by [@​saedmanaf](https://redirect.github.com/saedmanaf) in [#​3663](https://redirect.github.com/deepjavalibrary/djl/pull/3663) ##### Bug Fixes - \[examples] fixing some dependencies and test requirements by [@​sindhuvahinis](https://redirect.github.com/sindhuvahinis) in [#​3605](https://redirect.github.com/deepjavalibrary/djl/pull/3605) - \[onnxruntime] Fixes intraOpNumThreads bug by [@​xyang16](https://redirect.github.com/xyang16) in [#​3630](https://redirect.github.com/deepjavalibrary/djl/pull/3630) - \[ci] Fixes build.gradle for integration by [@​xyang16](https://redirect.github.com/xyang16) in [#​3635](https://redirect.github.com/deepjavalibrary/djl/pull/3635) - \[ci] Fixes system properties in gradle build script by [@​xyang16](https://redirect.github.com/xyang16) in [#​3636](https://redirect.github.com/deepjavalibrary/djl/pull/3636) - Fix: Corrected 16-bit PCM normalization to avoid overflow issue by [@​leleZeng](https://redirect.github.com/leleZeng) in [#​3646](https://redirect.github.com/deepjavalibrary/djl/pull/3646) - Fix rust build with update candle-core the 0.8.4 version by [@​xyang16](https://redirect.github.com/xyang16) in [#​3645](https://redirect.github.com/deepjavalibrary/djl/pull/3645) - Fixed rust build with update candle-core the 0.8.4 version by [@​xyang16](https://redirect.github.com/xyang16) in [#​3649](https://redirect.github.com/deepjavalibrary/djl/pull/3649) - \[fix] LRUReplayBuffer "stepToReplace" index fix by [@​dwctic](https://redirect.github.com/dwctic) in [#​3660](https://redirect.github.com/deepjavalibrary/djl/pull/3660) ##### Documentation - docs: added a link to the continuous badge by [@​operagxoksana](https://redirect.github.com/operagxoksana) in [#​3668](https://redirect.github.com/deepjavalibrary/djl/pull/3668) - \[doc] Update onnxruntime readme by [@​xyang16](https://redirect.github.com/xyang16) in [#​3669](https://redirect.github.com/deepjavalibrary/djl/pull/3669) - chore: edited badges by [@​operagxoksana](https://redirect.github.com/operagxoksana) in [#​3670](https://redirect.github.com/deepjavalibrary/djl/pull/3670) - chore: added an icon to the release by [@​operagxoksana](https://redirect.github.com/operagxoksana) in [#​3671](https://redirect.github.com/deepjavalibrary/djl/pull/3671) - Correct 'Load Model' documentation: method ImageClassificationTranslator.builder().setSynsetArtifactName() does not exist by [@​xinhuagu](https://redirect.github.com/xinhuagu) in [#​3677](https://redirect.github.com/deepjavalibrary/djl/pull/3677) ##### CI/CD - \[release] Release DJL 0.32.0 by [@​sindhuvahinis](https://redirect.github.com/sindhuvahinis) in [#​3603](https://redirect.github.com/deepjavalibrary/djl/pull/3603) - bump build version to 0.33.0 by [@​siddvenk](https://redirect.github.com/siddvenk) in [#​3627](https://redirect.github.com/deepjavalibrary/djl/pull/3627) - \[ci] Upgrade gradle to 8.13 by [@​xyang16](https://redirect.github.com/xyang16) in [#​3650](https://redirect.github.com/deepjavalibrary/djl/pull/3650) - \[ci] Fixes CI build for cmake 4.0.0 by [@​xyang16](https://redirect.github.com/xyang16) in [#​3659](https://redirect.github.com/deepjavalibrary/djl/pull/3659) - Bump openssl from 0.10.71 to 0.10.72 in /extensions/tokenizers/rust by [@​dependabot](https://redirect.github.com/dependabot) in [#​3661](https://redirect.github.com/deepjavalibrary/djl/pull/3661) - update some dependency versions by [@​siddvenk](https://redirect.github.com/siddvenk) in [#​3665](https://redirect.github.com/deepjavalibrary/djl/pull/3665) - remove status from log4j configuration of status logger by [@​siddvenk](https://redirect.github.com/siddvenk) in [#​3667](https://redirect.github.com/deepjavalibrary/djl/pull/3667) - Remove unnecessary exclusion for testng by [@​xyang16](https://redirect.github.com/xyang16) in [#​3687](https://redirect.github.com/deepjavalibrary/djl/pull/3687) - Updates dependencies version by [@​xyang16](https://redirect.github.com/xyang16) in [#​3688](https://redirect.github.com/deepjavalibrary/djl/pull/3688) - \[onnx] use zulu jdk to fix windows issues by [@​siddvenk](https://redirect.github.com/siddvenk) in [#​3683](https://redirect.github.com/deepjavalibrary/djl/pull/3683) - \[onnx] fix one more usage of java distribution to zulu for windows by [@​siddvenk](https://redirect.github.com/siddvenk) in [#​3684](https://redirect.github.com/deepjavalibrary/djl/pull/3684) ##### New Contributors - [@​leleZeng](https://redirect.github.com/leleZeng) made their first contribution in [#​3646](https://redirect.github.com/deepjavalibrary/djl/pull/3646) - [@​dwctic](https://redirect.github.com/dwctic) made their first contribution in [#​3660](https://redirect.github.com/deepjavalibrary/djl/pull/3660) - [@​saedmanaf](https://redirect.github.com/saedmanaf) made their first contribution in [#​3663](https://redirect.github.com/deepjavalibrary/djl/pull/3663) - [@​xinhuagu](https://redirect.github.com/xinhuagu) made their first contribution in [#​3677](https://redirect.github.com/deepjavalibrary/djl/pull/3677) **Full Changelog**: <deepjavalibrary/djl@v0.32.0...v0.33.0> ### [`v0.32.0`](https://redirect.github.com/deepjavalibrary/djl/releases/tag/v0.32.0): DJL v0.32.0 Release [Compare Source](https://redirect.github.com/deepjavalibrary/djl/compare/v0.31.1...v0.32.0) ##### Key Changes - Engine Updates - Tokenizers updated to 0.21.0 - OnnxRuntime updated to 1.20.0 ##### Enhancements - \[pytorch] support pytorch 2.1.2 for Neuron by [@​siddvenk](https://redirect.github.com/siddvenk) in [#​3542](https://redirect.github.com/deepjavalibrary/djl/pull/3542) - \[onnxruntime] Updates OnnxRuntime engine to 1.20.0 by [@​xyang16](https://redirect.github.com/xyang16) in [#​3549](https://redirect.github.com/deepjavalibrary/djl/pull/3549) - \[tokenizers] Return detail for QA inference by [@​xyang16](https://redirect.github.com/xyang16) in [#​3555](https://redirect.github.com/deepjavalibrary/djl/pull/3555) - \[api] Allows to configure custom batchifer by [@​xyang16](https://redirect.github.com/xyang16) in [#​3559](https://redirect.github.com/deepjavalibrary/djl/pull/3559) - \[tokenizer] Updates huggingface tokenizer to 0.21.0 by [@​xyang16](https://redirect.github.com/xyang16) in [#​3572](https://redirect.github.com/deepjavalibrary/djl/pull/3572) - \[tokenizers] Add int32 option to encoding by [@​xyang16](https://redirect.github.com/xyang16) in [#​3571](https://redirect.github.com/deepjavalibrary/djl/pull/3571) - \[api] Adds ZeroShotClassification support by [@​bryanktliu](https://redirect.github.com/bryanktliu) in [#​3579](https://redirect.github.com/deepjavalibrary/djl/pull/3579) - \[tokenizers] Support import zero-shot-classification to model zoo by [@​bryanktliu](https://redirect.github.com/bryanktliu) in [#​3580](https://redirect.github.com/deepjavalibrary/djl/pull/3580) - \[FASTTEXT] Adds linux-aarch64 support by [@​iamshubhambhola](https://redirect.github.com/iamshubhambhola) in [#​3584](https://redirect.github.com/deepjavalibrary/djl/pull/3584) - Expose OnnxRuntime's getMetadata() in DJL API by [@​VanjaRadulovic](https://redirect.github.com/VanjaRadulovic) in [#​3596](https://redirect.github.com/deepjavalibrary/djl/pull/3596) - \[api] Refactor image processing by [@​xyang16](https://redirect.github.com/xyang16) in [#​3588](https://redirect.github.com/deepjavalibrary/djl/pull/3588) - Adds zero-shot-classification to model zoo by [@​xyang16](https://redirect.github.com/xyang16) in [#​3589](https://redirect.github.com/deepjavalibrary/djl/pull/3589) - \[api] Adds Pad image transform for CV by [@​xyang16](https://redirect.github.com/xyang16) in [#​3593](https://redirect.github.com/deepjavalibrary/djl/pull/3593) ##### Bug Fixes - \[api] fix issue in Tar/Zip Utils that resulted in incorrect artifact … by [@​siddvenk](https://redirect.github.com/siddvenk) in [#​3544](https://redirect.github.com/deepjavalibrary/djl/pull/3544) - \[tokenizer] fixes token\_classification import issues by [@​bryanktliu](https://redirect.github.com/bryanktliu) in [#​3570](https://redirect.github.com/deepjavalibrary/djl/pull/3570) - \[tokenizer] fixes trust\_remote\_code issues for DJL converter by [@​bryanktliu](https://redirect.github.com/bryanktliu) in [#​3569](https://redirect.github.com/deepjavalibrary/djl/pull/3569) - \[fix] Fix YoloV8Translator by [@​xyang16](https://redirect.github.com/xyang16) in [#​3575](https://redirect.github.com/deepjavalibrary/djl/pull/3575) - \[tokenizers] Fixes ZeroShotClassificationTranslator bug by [@​bryanktliu](https://redirect.github.com/bryanktliu) in [#​3581](https://redirect.github.com/deepjavalibrary/djl/pull/3581) - \[xgb] Fix xgb intern to close replaced array by [@​ewan0x79](https://redirect.github.com/ewan0x79) in [#​3558](https://redirect.github.com/deepjavalibrary/djl/pull/3558) ##### Documentation - \[pytorch] Update supported versions of pytorch for 0.32.0 by [@​siddvenk](https://redirect.github.com/siddvenk) in [#​3541](https://redirect.github.com/deepjavalibrary/djl/pull/3541) - Update README.md (fix typo) by [@​paulk-asert](https://redirect.github.com/paulk-asert) in [#​3576](https://redirect.github.com/deepjavalibrary/djl/pull/3576) - Docs: (Readme) by [@​Lubov66](https://redirect.github.com/Lubov66) in [#​3577](https://redirect.github.com/deepjavalibrary/djl/pull/3577) ##### CI/CD - Increase build version to 0.32.0 by [@​siddvenk](https://redirect.github.com/siddvenk) in [#​3540](https://redirect.github.com/deepjavalibrary/djl/pull/3540) - \[ci] fix ci to test windows properly by [@​siddvenk](https://redirect.github.com/siddvenk) in [#​3543](https://redirect.github.com/deepjavalibrary/djl/pull/3543) - \[ci] adding back serving.publish to DJL by [@​sindhuvahinis](https://redirect.github.com/sindhuvahinis) in [#​3551](https://redirect.github.com/deepjavalibrary/djl/pull/3551) - \[ci] adding back serving.publish to DJL by [@​sindhuvahinis](https://redirect.github.com/sindhuvahinis) in [#​3551](https://redirect.github.com/deepjavalibrary/djl/pull/3551) - \[djl-convert] Remove onnxruntime from djl-convert requirements.txt by [@​xyang16](https://redirect.github.com/xyang16) in [#​3550](https://redirect.github.com/deepjavalibrary/djl/pull/3550) - \[djl-convert] Remove onnxruntime from djl-convert requirements by [@​xyang16](https://redirect.github.com/xyang16) in [#​3552](https://redirect.github.com/deepjavalibrary/djl/pull/3552) - Fixes java23 compile error by [@​xyang16](https://redirect.github.com/xyang16) in [#​3556](https://redirect.github.com/deepjavalibrary/djl/pull/3556) - \[fix]\[ci] don't compile fasttext jni for windows by [@​siddvenk](https://redirect.github.com/siddvenk) in [#​3590](https://redirect.github.com/deepjavalibrary/djl/pull/3590) - \[ci] Upgrade gradle to 8.12 by [@​xyang16](https://redirect.github.com/xyang16) in [#​3573](https://redirect.github.com/deepjavalibrary/djl/pull/3573) - \[ci]\[docs] enable debug logging for s3 commands to troubleshoot failu… by [@​siddvenk](https://redirect.github.com/siddvenk) in [#​3591](https://redirect.github.com/deepjavalibrary/djl/pull/3591) - \[ci] Update upload-artifact action to v4 by [@​xyang16](https://redirect.github.com/xyang16) in [#​3594](https://redirect.github.com/deepjavalibrary/djl/pull/3594) - \[fix] Fix the pytorch-native ci failure by [@​xyang16](https://redirect.github.com/xyang16) in [#​3595](https://redirect.github.com/deepjavalibrary/djl/pull/3595) - \[ci] Fix nightly publish upload artifact name by [@​xyang16](https://redirect.github.com/xyang16) in [#​3597](https://redirect.github.com/deepjavalibrary/djl/pull/3597) - Implement NDArray.sub operation by [@​xyang16](https://redirect.github.com/xyang16) in [#​3598](https://redirect.github.com/deepjavalibrary/djl/pull/3598) - \[ci] Fix continuous ci failure by [@​xyang16](https://redirect.github.com/xyang16) in [#​3599](https://redirect.github.com/deepjavalibrary/djl/pull/3599) - \[ci] Fix ClipModelTest assertion failure by [@​sindhuvahinis](https://redirect.github.com/sindhuvahinis) in [#​3602](https://redirect.github.com/deepjavalibrary/djl/pull/3602) ##### New Contributors - [@​paulk-asert](https://redirect.github.com/paulk-asert) made their first contribution in [#​3576](https://redirect.github.com/deepjavalibrary/djl/pull/3576) - [@​Lubov66](https://redirect.github.com/Lubov66) made their first contribution in [#​3577](https://redirect.github.com/deepjavalibrary/djl/pull/3577) - [@​iamshubhambhola](https://redirect.github.com/iamshubhambhola) made their first contribution in [#​3584](https://redirect.github.com/deepjavalibrary/djl/pull/3584) - [@​VanjaRadulovic](https://redirect.github.com/VanjaRadulovic) made their first contribution in [#​3596](https://redirect.github.com/deepjavalibrary/djl/pull/3596) **Full Changelog**: <deepjavalibrary/djl@v0.31.1...v0.32.0> </details> --- ### Configuration 📅 **Schedule**: (UTC) - Branch creation - At any time (no schedule defined) - Automerge - At any time (no schedule defined) 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about these updates again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/langchain4j/langchain4j). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4xNzMuNiIsInVwZGF0ZWRJblZlciI6IjQzLjE3My42IiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJkZXBlbmRlbmNpZXMiXX0=--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Dmytro Liubarskyi <ljubarskij@gmail.com>
…ator (langchain4j#5209) ## Summary Some OpenAI-compatible providers (observed with `deepseek-v4-flash`) emit a trailing sentinel chunk after all real `tool_calls` have streamed: ```json {"index": 0, "id": "", "type": "function", "function": {"arguments": null}} ``` It carries an empty id, no `function.name`, and null `function.arguments`. When its index does not match a previously-seen tool call (e.g., arrives at a fresh `index`), the accumulator's `computeIfAbsent` creates an empty builder that surfaces as a ghost `ToolExecutionRequest { id = "", name = "", arguments = "" }` in the final result. Downstream code in `OpenAiUtils#toOpenAiMessage` then substitutes `"{}"` for the blank arguments when echoing the assistant message back, producing the well-known `ToolExecutionRequest { id = null, name = null, arguments = "{}" }` symptom in user-facing tool-execution chains. The fix adds an `isSentinel(toolCall)` guard at the top of the `tool_calls` accumulation loop in `OpenAiStreamingResponseBuilder` that treats end-of-stream marker frames as no-ops (skipped via `continue`) before `computeIfAbsent` is invoked. Legitimate header chunks (id+name set) and argument-fragment chunks (non-null arguments) are unaffected because they have at least one of `id`, `function.name`, or non-null `function.arguments` populated. ## Test plan - [x] New `should_ignore_trailing_sentinel_chunk_from_deepseek_v4_flash` exercises the exact stream pattern: header → argument fragments → sentinel — asserts exactly 1 `ToolExecutionRequest` with the full reconstructed arguments. - [x] New `should_not_produce_ghost_for_orphan_sentinel_chunk` exercises a sentinel arriving at a fresh `index` with no prior data — asserts no ghost is produced. Without the fix this test produces `ToolExecutionRequest { id = "", name = "", arguments = "" }`. - [x] All 138 existing unit tests in `langchain4j-open-ai` continue to pass. --------- Co-authored-by: Dmytro Liubarskyi <ljubarskij@gmail.com>
This PR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | [org.commonmark:commonmark](https://redirect.github.com/commonmark/commonmark-java) | `0.26.0` → `0.28.0` |  |  | | [org.commonmark:commonmark-ext-yaml-front-matter](https://redirect.github.com/commonmark/commonmark-java) | `0.26.0` → `0.28.0` |  |  | --- > [!WARNING] > Some dependencies could not be looked up. Check the [Dependency Dashboard](..langchain4j/issues/2069) for more information. --- ### Release Notes <details> <summary>commonmark/commonmark-java (org.commonmark:commonmark)</summary> ### [`v0.28.0`](https://redirect.github.com/commonmark/commonmark-java/blob/HEAD/CHANGELOG.md#0280---2026-03-31) ##### Added - New extension for alerts (aka callouts/admonitions) - Syntax: ``` > [!NOTE] > The text of the note. ``` - As types you can use NOTE, TIP, IMPORTANT, WARNING, CAUTION; or configure the extension to add additional ones. - Use class `AlertsExtension` in artifact `commonmark-ext-gfm-alerts` ([#​420](https://redirect.github.com/commonmark/commonmark-java/issues/420)) - New option `maxOpenBlockParsers` for `Parser.Builder` to set an overall limit for the depth of block parsing. If set, any nesting beyond the limit will be parsed as paragraph text instead. The default remains unlimited. ### [`v0.27.1`](https://redirect.github.com/commonmark/commonmark-java/blob/HEAD/CHANGELOG.md#0271---2026-01-14) ##### Fixed - Line(s) after a hard line break would sometimes also get an unwanted hard line break, e.g. if they ended in emphasis or other non-text inlines ([#​415](https://redirect.github.com/commonmark/commonmark-java/issues/415)) - `TextContentRenderer` (for plain text): Fix nested lists on the same line ([#​413](https://redirect.github.com/commonmark/commonmark-java/issues/413)) - Fix minor performance regression with pathological input (deeply nested brackets) that was introduced in version 0.23.0. ### [`v0.27.0`](https://redirect.github.com/commonmark/commonmark-java/blob/HEAD/CHANGELOG.md#0270---2025-10-12) ##### Added - Autolink extension: Now supports configuration of different link types that should be recognized and converted to links. See `AutolinkExtension#builder` | Type | Default? | Description | | ------- | -------- | ------------------------------------------------------ | | `URL` | Yes | URL with a protocol such as `https://example.com` | | `EMAIL` | Yes | Email address such as `foo@example.com` | | `WWW` | Yes | Address beginning with `www` such as `www.example.com` | Note that this changes the behavior of `AutolinkExtension.create()` to now also include `WWW` links by default. To re-enable the previous behavior, use: ```java AutolinkExtension.builder().linkTypes(AutolinkType.URL, AutolinkType.EMAIL).build(); ``` </details> --- ### Configuration 📅 **Schedule**: (UTC) - Branch creation - At any time (no schedule defined) - Automerge - At any time (no schedule defined) 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about these updates again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/langchain4j/langchain4j). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4xNzMuNiIsInVwZGF0ZWRJblZlciI6IjQzLjE3My42IiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJkZXBlbmRlbmNpZXMiXX0=--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
This PR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | [org.awaitility:awaitility-kotlin](https://redirect.github.com/awaitility/awaitility) | `4.2.2` → `4.3.0` |  |  | | [org.awaitility:awaitility](http://awaitility.org) ([source](https://redirect.github.com/awaitility/awaitility)) | `4.2.2` → `4.3.0` |  |  | --- > [!WARNING] > Some dependencies could not be looked up. Check the [Dependency Dashboard](..langchain4j/issues/2069) for more information. --- ### Release Notes <details> <summary>awaitility/awaitility (org.awaitility:awaitility-kotlin)</summary> ### [`v4.3.0`](https://redirect.github.com/awaitility/awaitility/blob/HEAD/changelog.txt#Changelog-430-2025-02-21) - Support for kotlin.time.Duration in Kotlin DSL (thanks to Ivo Šmíd for PR) - Upgraded kotlin version in the awaitility-kotlin module to 2.1.10 - Using a more descriptive error message when using VERY long wait conditions or poll durations (issue 290) - Added an overloaded method of untilAsserted(..) that takes a supplier and a consumer. For example, lets say you have a class like this: public class MyClass { public String myFunction() { // Imagine stuff being executed in asynchronously here and the result of this // operation is a string called "my value" return "my value" } } // Then in your test you can wait for the "myFunction" to be asserted by a "consumer" that uses // assertj to make sure that "myFunction" returns ""my value" await().untilAsserted(myClass::myFunction, value -> Assertions.assertThat(value).isEqualTo("my value")); This has also been implemented for all atomic, adder, and accumulator methods. </details> --- ### Configuration 📅 **Schedule**: (UTC) - Branch creation - At any time (no schedule defined) - Automerge - At any time (no schedule defined) 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about these updates again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/langchain4j/langchain4j). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4xNzMuNiIsInVwZGF0ZWRJblZlciI6IjQzLjE3My42IiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJkZXBlbmRlbmNpZXMiXX0=--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
…1.2 (langchain4j#5233) This PR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | [com.couchbase.client:java-client](https://couchbase.com/java-client) ([source](https://redirect.github.com/couchbase/couchbase-jvm-clients/tree/HEAD/java-client)) | `3.9.1` → `3.11.2` |  |  | --- > [!WARNING] > Some dependencies could not be looked up. Check the [Dependency Dashboard](..langchain4j/issues/2069) for more information. --- ### Release Notes <details> <summary>couchbase/couchbase-jvm-clients (com.couchbase.client:java-client)</summary> ### [`v3.11.2`](https://redirect.github.com/couchbase/couchbase-jvm-clients/compare/3.11.1...3.11.2) [Compare Source](https://redirect.github.com/couchbase/couchbase-jvm-clients/compare/3.11.1...3.11.2) ### [`v3.11.1`](https://redirect.github.com/couchbase/couchbase-jvm-clients/compare/3.11.0...3.11.1) [Compare Source](https://redirect.github.com/couchbase/couchbase-jvm-clients/compare/3.11.0...3.11.1) ### [`v3.11.0`](https://redirect.github.com/couchbase/couchbase-jvm-clients/compare/3.10.1...3.11.0) [Compare Source](https://redirect.github.com/couchbase/couchbase-jvm-clients/compare/3.10.1...3.11.0) ### [`v3.10.1`](https://redirect.github.com/couchbase/couchbase-jvm-clients/compare/3.10.0...3.10.1) [Compare Source](https://redirect.github.com/couchbase/couchbase-jvm-clients/compare/3.10.0...3.10.1) ### [`v3.10.0`](https://redirect.github.com/couchbase/couchbase-jvm-clients/compare/3.9.2...3.10.0) [Compare Source](https://redirect.github.com/couchbase/couchbase-jvm-clients/compare/3.9.2...3.10.0) ### [`v3.9.2`](https://redirect.github.com/couchbase/couchbase-jvm-clients/compare/3.9.1...3.9.2) [Compare Source](https://redirect.github.com/couchbase/couchbase-jvm-clients/compare/3.9.1...3.9.2) </details> --- ### Configuration 📅 **Schedule**: (UTC) - Branch creation - At any time (no schedule defined) - Automerge - At any time (no schedule defined) 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/langchain4j/langchain4j). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4xNzMuNiIsInVwZGF0ZWRJblZlciI6IjQzLjE3My42IiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJkZXBlbmRlbmNpZXMiXX0=--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
…langchain4j#5236) This PR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | [com.github.jsqlparser:jsqlparser](https://redirect.github.com/JSQLParser/JSqlParser) | `4.8` → `4.9` |  |  | --- > [!WARNING] > Some dependencies could not be looked up. Check the [Dependency Dashboard](..langchain4j/issues/2069) for more information. --- ### Configuration 📅 **Schedule**: (UTC) - Branch creation - At any time (no schedule defined) - Automerge - At any time (no schedule defined) 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/langchain4j/langchain4j). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4xNzMuNiIsInVwZGF0ZWRJblZlciI6IjQzLjE3My42IiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJkZXBlbmRlbmNpZXMiXX0=--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
…4658) ## Issue Closes langchain4j#4383 ## Change Added a new integration module `langchain4j-google-genai`. This module integrates the Google Gen AI SDK (`com.google.genai:google-genai`), enabling support for Google's Gemini models through the official Java client. ## General checklist - [x] There are no breaking changes (API, behaviour) - [x] I have added unit and/or integration tests for my change - [x] The tests cover both positive and negative cases - [x] I have manually run all the unit and integration tests in the module I have added/changed, and they are all green - [x] I have manually run all the unit and integration tests in the core and main modules, and they are all green - [x] I have added/updated the documentation - [ ] I have added an example in the examples repo (only for "big" features) - [ ] I have added/updated Spring Boot starter(s) (if applicable) ## Checklist for adding new maven module - [x] I have added my new module in the root `pom.xml` and `langchain4j-bom/pom.xml` --------- Co-authored-by: Guillaume Laforge <glaforge@gmail.com> Co-authored-by: Dmytro Liubarskyi <ljubarskij@gmail.com>
…tion for agents retrieval or creation (langchain4j#5269) (cherry picked from commit 66d54b4)
…ory (langchain4j#5253) ## Summary Fixes langchain4j#5250 `getOrCreateChatMemory` had an asymmetry: the custom-memoryId path used `ConcurrentHashMap.computeIfAbsent` (atomic), but the DEFAULT path used a plain check-then-set on a non-volatile field: ```java // before if (memoryId == DEFAULT) { if (defaultChatMemory == null) { // unprotected read defaultChatMemory = chatMemoryProvider.get(DEFAULT); // non-atomic write } return defaultChatMemory; } return chatMemories.computeIfAbsent(memoryId, chatMemoryProvider::get); ``` Two concurrent threads could both observe `null`, both call `chatMemoryProvider.get(DEFAULT)`, and one instance would be silently overwritten — dropping any messages already added to it. This affects any application using `chatMemoryProvider(...)` (no `@MemoryId`) under concurrent load. ## Fix Unify both paths: when a `ChatMemoryProvider` is configured, all memory IDs go through `computeIfAbsent`, making initialization atomic. The direct-`ChatMemory` path is unaffected. ```java // after public ChatMemory getOrCreateChatMemory(Object memoryId) { if (chatMemoryProvider != null) { return chatMemories.computeIfAbsent(memoryId, chatMemoryProvider::get); } return defaultChatMemory; } ``` This also removes the `memoryId == DEFAULT` reference-equality check, which was fragile by nature. ## Test plan - [ ] Existing memory tests pass - [ ] Concurrent stress test: multiple threads invoking an AI Service with `chatMemoryProvider(...)` and no `@MemoryId` — all calls should share the same `ChatMemory` instance --------- Co-authored-by: Benamira05 <145583236+Benamira05@users.noreply.github.com> Co-authored-by: Q <2857503667@qq.com> (cherry picked from commit 1b5050b)
…alizing it (langchain4j#5290) <!-- Thank you so much for your contribution! Please fill in all the sections below. Please open the PR as a draft initially. Once it is reviewed and approved, we will ask you to add documentation and examples. Please note that PRs with breaking changes or without tests will be rejected. Please note that PRs will be reviewed based on the priority of the issues they address. We ask for your patience. We are doing our best to review your PR as quickly as possible. Please refrain from pinging and asking when it will be reviewed. Thank you for understanding! --> ## Issue <!-- Please specify the ID of the issue this PR is addressing. For example: "Closes langchain4j#1234" or "Fixes langchain4j#1234" --> Closes langchain4j#5285 ## Change <!-- Please describe the changes you made. --> ## General checklist <!-- Please double-check the following points and mark them like this: [X] --> - [X] There are no breaking changes (API, behaviour) - [X] I have added unit and/or integration tests for my change - [X] The tests cover both positive and negative cases - [X] I have manually run all the unit and integration tests in the module I have added/changed, and they are all green - [ ] I have manually run all the unit and integration tests in the [core](https://github.com/langchain4j/langchain4j/tree/main/langchain4j-core) and [main](https://github.com/langchain4j/langchain4j/tree/main/langchain4j) modules, and they are all green <!-- Before adding documentation and example(s) (below), please wait until the PR is reviewed and approved. --> - [ ] I have added/updated the [documentation](https://github.com/langchain4j/langchain4j/tree/main/docs/docs) - [ ] I have added an example in the [examples repo](https://github.com/langchain4j/langchain4j-examples) (only for "big" features) - [ ] I have added/updated [Spring Boot starter(s)](https://github.com/langchain4j/langchain4j-spring) (if applicable) ## Checklist for adding new maven module <!-- Please double-check the following points and mark them like this: [X] --> - [ ] I have added my new module in the root `pom.xml` and `langchain4j-bom/pom.xml` ## Checklist for adding new embedding store integration <!-- Please double-check the following points and mark them like this: [X] --> - [ ] I have added a `{NameOfIntegration}EmbeddingStoreIT` that extends from either `EmbeddingStoreIT` or `EmbeddingStoreWithFilteringIT` - [ ] I have added a `{NameOfIntegration}EmbeddingStoreRemovalIT` that extends from `EmbeddingStoreWithRemovalIT` ## Checklist for changing existing embedding store integration <!-- Please double-check the following points and mark them like this: [X] --> - [ ] I have manually verified that the `{NameOfIntegration}EmbeddingStore` works correctly with the data persisted using the latest released version of LangChain4j (cherry picked from commit fcf18fd)
…n empty ReturnBehavior list (langchain4j#5319) ## Issue Fixes langchain4j#5277 ## Change Re-applies only the fix from langchain4j#5279 ## General checklist - [X] There are no breaking changes (API, behaviour) - [X] I have added unit and/or integration tests for my change - [X] The tests cover both positive and negative cases - [X] I have manually run all the unit and integration tests in the module I have added/changed, and they are all green - [X] I have manually run all the unit and integration tests in the [core](https://github.com/langchain4j/langchain4j/tree/main/langchain4j-core) and [main](https://github.com/langchain4j/langchain4j/tree/main/langchain4j) modules, and they are all green - [ ] I have added/updated the [documentation](https://github.com/langchain4j/langchain4j/tree/main/docs/docs) - [ ] I have added an example in the [examples repo](https://github.com/langchain4j/langchain4j-examples) (only for "big" features) - [ ] I have added/updated [Spring Boot starter(s)](https://github.com/langchain4j/langchain4j-spring) (if applicable) (cherry picked from commit d564992)
# Conflicts: # .github/workflows/docs.yaml # .github/workflows/main.yaml # .github/workflows/nightly_jdk17.yaml # .github/workflows/nightly_jdk21.yaml # .github/workflows/nightly_jdk25.yaml # .github/workflows/nightly_oracle.yaml # .github/workflows/release.yaml # .github/workflows/split-package-detection.yaml # README.md # code-execution-engines/langchain4j-code-execution-engine-azure-acads/pom.xml # code-execution-engines/langchain4j-code-execution-engine-graalvm-polyglot/pom.xml # code-execution-engines/langchain4j-code-execution-engine-judge0/pom.xml # document-loaders/langchain4j-document-loader-amazon-s3/pom.xml # document-loaders/langchain4j-document-loader-azure-storage-blob/pom.xml # document-loaders/langchain4j-document-loader-github/pom.xml # document-loaders/langchain4j-document-loader-google-cloud-storage/pom.xml # document-loaders/langchain4j-document-loader-playwright/pom.xml # document-loaders/langchain4j-document-loader-selenium/pom.xml # document-loaders/langchain4j-document-loader-tencent-cos/pom.xml # document-parsers/langchain4j-document-parser-apache-pdfbox/pom.xml # document-parsers/langchain4j-document-parser-apache-poi/pom.xml # document-parsers/langchain4j-document-parser-apache-tika/pom.xml # document-parsers/langchain4j-document-parser-markdown/pom.xml # document-parsers/langchain4j-document-parser-yaml/pom.xml # document-transformers/langchain4j-document-transformer-jsoup/pom.xml # embedding-store-filter-parsers/langchain4j-embedding-store-filter-parser-sql/pom.xml # embeddings/langchain4j-embeddings-all-minilm-l6-v2-q/pom.xml # embeddings/langchain4j-embeddings-all-minilm-l6-v2/pom.xml # embeddings/langchain4j-embeddings-bge-small-en-q/pom.xml # embeddings/langchain4j-embeddings-bge-small-en-v15-q/pom.xml # embeddings/langchain4j-embeddings-bge-small-en-v15/pom.xml # embeddings/langchain4j-embeddings-bge-small-en/pom.xml # embeddings/langchain4j-embeddings-bge-small-zh-v15-q/pom.xml # embeddings/langchain4j-embeddings-bge-small-zh-v15/pom.xml # embeddings/langchain4j-embeddings-e5-small-v2-q/pom.xml # embeddings/langchain4j-embeddings-e5-small-v2/pom.xml # embeddings/langchain4j-embeddings/pom.xml # experimental/langchain4j-experimental-hibernate/pom.xml # experimental/langchain4j-experimental-skills-shell/pom.xml # experimental/langchain4j-experimental-sql/pom.xml # http-clients/langchain4j-http-client-apache/pom.xml # http-clients/langchain4j-http-client-jdk/pom.xml # http-clients/langchain4j-http-client-okhttp/pom.xml # integration-tests/integration-tests-class-instance-loader/integration-tests-class-instance-loader-quarkus/pom.xml # integration-tests/integration-tests-class-instance-loader/integration-tests-class-instance-loader-spring/pom.xml # integration-tests/integration-tests-class-instance-loader/pom.xml # integration-tests/integration-tests-class-metadata-provider/integration-tests-class-metadata-provider-spring/pom.xml # integration-tests/integration-tests-class-metadata-provider/pom.xml # integration-tests/integration-tests-guardrails/pom.xml # integration-tests/pom.xml # internal/langchain4j-docu-chatbot-updater/pom.xml # internal/langchain4j-internal-test-retry/pom.xml # langchain4j-agentic-a2a/pom.xml # langchain4j-agentic-mcp/pom.xml # langchain4j-agentic-patterns/pom.xml # langchain4j-agentic/pom.xml # langchain4j-anthropic/pom.xml # langchain4j-azure-ai-search/pom.xml # langchain4j-azure-cosmos-mongo-vcore/pom.xml # langchain4j-azure-cosmos-nosql/pom.xml # langchain4j-azure-open-ai/pom.xml # langchain4j-bedrock/pom.xml # langchain4j-bom/pom.xml # langchain4j-cassandra/pom.xml # langchain4j-chroma/pom.xml # langchain4j-cohere/pom.xml # langchain4j-coherence/pom.xml # langchain4j-core/pom.xml # langchain4j-couchbase/pom.xml # langchain4j-easy-rag/pom.xml # langchain4j-elasticsearch/pom.xml # langchain4j-github-models/pom.xml # langchain4j-google-ai-gemini/pom.xml # langchain4j-google-ai-gemini/src/main/java/dev/langchain4j/model/googleai/BaseGeminiChatModel.java # langchain4j-google-ai-gemini/src/main/java/dev/langchain4j/model/googleai/GeminiGenerateContentResponse.java # langchain4j-google-ai-gemini/src/test/java/dev/langchain4j/model/googleai/GoogleAiGeminiChatModelTest.java # langchain4j-google-ai-gemini/src/test/java/dev/langchain4j/model/googleai/GoogleAiGeminiGoogleMapsTest.java # langchain4j-google-ai-gemini/src/test/java/dev/langchain4j/model/googleai/GoogleAiGeminiUrlContextTest.java # langchain4j-gpu-llama3/pom.xml # langchain4j-guardrails/pom.xml # langchain4j-hibernate/pom.xml # langchain4j-http-client/pom.xml # langchain4j-hugging-face/pom.xml # langchain4j-infinispan/pom.xml # langchain4j-jina/pom.xml # langchain4j-jlama/pom.xml # langchain4j-kotlin/pom.xml # langchain4j-local-ai/pom.xml # langchain4j-mariadb/pom.xml # langchain4j-mcp-docker/pom.xml # langchain4j-mcp/pom.xml # langchain4j-micrometer-metrics/pom.xml # langchain4j-milvus/pom.xml # langchain4j-mistral-ai/pom.xml # langchain4j-mongodb-atlas/pom.xml # langchain4j-nomic/pom.xml # langchain4j-observation/pom.xml # langchain4j-ollama/pom.xml # langchain4j-onnx-scoring/pom.xml # langchain4j-open-ai-official/pom.xml # langchain4j-open-ai/pom.xml # langchain4j-opensearch/pom.xml # langchain4j-oracle/pom.xml # langchain4j-ovh-ai/pom.xml # langchain4j-parent/pom.xml # langchain4j-pgvector/pom.xml # langchain4j-pinecone/pom.xml # langchain4j-qdrant/pom.xml # langchain4j-skills/pom.xml # langchain4j-tablestore/pom.xml # langchain4j-test/pom.xml # langchain4j-vertex-ai-anthropic/pom.xml # langchain4j-vertex-ai-gemini/pom.xml # langchain4j-vertex-ai/pom.xml # langchain4j-vespa/pom.xml # langchain4j-voyage-ai/pom.xml # langchain4j-watsonx/pom.xml # langchain4j-weaviate/pom.xml # langchain4j-workers-ai/pom.xml # langchain4j/pom.xml # pom.xml # web-search-engines/langchain4j-web-search-engine-google-custom/pom.xml # web-search-engines/langchain4j-web-search-engine-searchapi/pom.xml # web-search-engines/langchain4j-web-search-engine-tavily/pom.xml
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.