Skip to content

Upgrade to 1.15.1#22

Open
dskarzh wants to merge 230 commits into
mainfrom
upgrade
Open

Upgrade to 1.15.1#22
dskarzh wants to merge 230 commits into
mainfrom
upgrade

Conversation

@dskarzh
Copy link
Copy Markdown

@dskarzh dskarzh commented Jun 1, 2026

No description provided.

github-actions Bot and others added 30 commits April 9, 2026 13:34
…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 />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=follow-redirects&package-manager=npm_and_yarn&previous-version=1.15.11&new-version=1.16.0)](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>
renovate Bot and others added 30 commits May 13, 2026 17:41
….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` |
![age](https://developer.mend.io/api/mc/badges/age/maven/com.aliyun.openservices:tablestore/5.17.11?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/com.aliyun.openservices:tablestore/5.17.10/5.17.11?slim=true)
|

---

> [!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` |
![age](https://developer.mend.io/api/mc/badges/age/maven/org.junit:junit-bom/6.0.3?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/org.junit:junit-bom/6.0.1/6.0.3?slim=true)
|
|
[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` |
![age](https://developer.mend.io/api/mc/badges/age/maven/org.junit.platform:junit-platform-console-standalone/6.0.3?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/org.junit.platform:junit-platform-console-standalone/6.0.1/6.0.3?slim=true)
|
| [org.junit.jupiter:junit-jupiter-api](https://junit.org/)
([source](https://redirect.github.com/junit-team/junit-framework)) |
`6.0.1` → `6.0.3` |
![age](https://developer.mend.io/api/mc/badges/age/maven/org.junit.jupiter:junit-jupiter-api/6.0.3?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/org.junit.jupiter:junit-jupiter-api/6.0.1/6.0.3?slim=true)
|

---

> [!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` |
![age](https://developer.mend.io/api/mc/badges/age/maven/io.micrometer:micrometer-core/1.16.5?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/io.micrometer:micrometer-core/1.16.2/1.16.5?slim=true)
|
|
[io.micrometer:micrometer-bom](https://redirect.github.com/micrometer-metrics/micrometer)
| `1.16.2` → `1.16.5` |
![age](https://developer.mend.io/api/mc/badges/age/maven/io.micrometer:micrometer-bom/1.16.5?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/io.micrometer:micrometer-bom/1.16.2/1.16.5?slim=true)
|
|
[io.micrometer:micrometer-bom](https://redirect.github.com/micrometer-metrics/micrometer)
| `1.16.3` → `1.16.5` |
![age](https://developer.mend.io/api/mc/badges/age/maven/io.micrometer:micrometer-bom/1.16.5?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/io.micrometer:micrometer-bom/1.16.3/1.16.5?slim=true)
|

---

> [!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
[#&#8203;7316](https://redirect.github.com/micrometer-metrics/micrometer/issues/7316)
- ObservationGrpcClientInterceptor throws NPE when NameResolver returns
empty authority
[#&#8203;7380](https://redirect.github.com/micrometer-metrics/micrometer/issues/7380)
- Wrong Nullability Information in OkHttpMetricsEventListener
[#&#8203;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
[#&#8203;7393](https://redirect.github.com/micrometer-metrics/micrometer/pull/7393)
- Bump spring6 from 6.2.16 to 6.2.17
[#&#8203;7294](https://redirect.github.com/micrometer-metrics/micrometer/pull/7294)

#### ❤️ Contributors

Thank you to all the contributors who worked on this release:

[@&#8203;Joowon-Seo](https://redirect.github.com/Joowon-Seo), and
[@&#8203;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
[#&#8203;7200](https://redirect.github.com/micrometer-metrics/micrometer/issues/7200)

#### :notebook\_with\_decorative\_cover: Documentation

- Document (Default)MeterObservationHandler
[#&#8203;6361](https://redirect.github.com/micrometer-metrics/micrometer/issues/6361)
- Document Jakarta Mail instrumentation
[#&#8203;6485](https://redirect.github.com/micrometer-metrics/micrometer/issues/6485)
- Document statsd UDS config
[#&#8203;5730](https://redirect.github.com/micrometer-metrics/micrometer/issues/5730)

#### ❤️ Contributors

Thank you to all the contributors who worked on this release:

[@&#8203;izeye](https://redirect.github.com/izeye),
[@&#8203;kangdaeun1022](https://redirect.github.com/kangdaeun1022), and
[@&#8203;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
[#&#8203;7133](https://redirect.github.com/micrometer-metrics/micrometer/pull/7133)
- OSGi test isn't reporting failures
[#&#8203;7060](https://redirect.github.com/micrometer-metrics/micrometer/issues/7060)

#### :notebook\_with\_decorative\_cover: Documentation

- Docs: Align AsciiDoc callout syntax
[#&#8203;7148](https://redirect.github.com/micrometer-metrics/micrometer/pull/7148)
- Improve documentation of ExecutorServiceMetrics
[#&#8203;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
[#&#8203;7125](https://redirect.github.com/micrometer-metrics/micrometer/pull/7125)
- Bump com.hazelcast:hazelcast from 5.3.8 to 5.6.0
[#&#8203;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
[#&#8203;7166](https://redirect.github.com/micrometer-metrics/micrometer/pull/7166)
- Bump dropwizard-metrics from 4.2.37 to 4.2.38
[#&#8203;7120](https://redirect.github.com/micrometer-metrics/micrometer/pull/7120)
- Bump gradle-wrapper from 8.14.3 to 8.14.4
[#&#8203;7112](https://redirect.github.com/micrometer-metrics/micrometer/pull/7112)
- Bump grpc from 1.76.2 to 1.76.3
[#&#8203;7137](https://redirect.github.com/micrometer-metrics/micrometer/pull/7137)
- Bump io.dropwizard.metrics5:metrics-core from 5.0.5 to 5.0.6
[#&#8203;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
[#&#8203;7070](https://redirect.github.com/micrometer-metrics/micrometer/pull/7070)
- Bump io.spring.develocity.conventions from 0.0.24 to 0.0.25
[#&#8203;7101](https://redirect.github.com/micrometer-metrics/micrometer/pull/7101)
- Bump org.assertj:assertj-core from 3.27.6 to 3.27.7
[#&#8203;7126](https://redirect.github.com/micrometer-metrics/micrometer/pull/7126)

#### ❤️ Contributors

Thank you to all the contributors who worked on this release:

[@&#8203;izeye](https://redirect.github.com/izeye),
[@&#8203;mateusz-nalepa](https://redirect.github.com/mateusz-nalepa),
and [@&#8203;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` |
![age](https://developer.mend.io/api/mc/badges/age/maven/org.slf4j:slf4j-bom/2.0.18?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/org.slf4j:slf4j-bom/2.0.17/2.0.18?slim=true)
|
| [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` |
![age](https://developer.mend.io/api/mc/badges/age/maven/org.slf4j:slf4j-api/2.0.18?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/org.slf4j:slf4j-api/2.0.17/2.0.18?slim=true)
|

---

> [!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` |
![age](https://developer.mend.io/api/mc/badges/age/maven/me.kpavlov.aimocks:ai-mocks-openai-jvm/0.5.1?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/me.kpavlov.aimocks:ai-mocks-openai-jvm/0.4.6/0.5.1?slim=true)
|
| [me.kpavlov.aimocks:ai-mocks-gemini-jvm](https://mokksy.dev)
([source](https://redirect.github.com/mokksy/ai-mocks)) | `0.4.6` →
`0.5.1` |
![age](https://developer.mend.io/api/mc/badges/age/maven/me.kpavlov.aimocks:ai-mocks-gemini-jvm/0.5.1?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/me.kpavlov.aimocks:ai-mocks-gemini-jvm/0.4.6/0.5.1?slim=true)
|
| [me.kpavlov.aimocks:ai-mocks-anthropic-jvm](https://mokksy.dev)
([source](https://redirect.github.com/mokksy/ai-mocks)) | `0.4.6` →
`0.5.1` |
![age](https://developer.mend.io/api/mc/badges/age/maven/me.kpavlov.aimocks:ai-mocks-anthropic-jvm/0.5.1?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/me.kpavlov.aimocks:ai-mocks-anthropic-jvm/0.4.6/0.5.1?slim=true)
|

---

> [!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
[@&#8203;kpavlov](https://redirect.github.com/kpavlov) in
[#&#8203;424](https://redirect.github.com/mokksy/ai-mocks/pull/424)
- doc: Update Mokksy documentation by
[@&#8203;kpavlov](https://redirect.github.com/kpavlov) in
[#&#8203;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 [@&#8203;renovate](https://redirect.github.com/renovate)\[bot]
in [#&#8203;419](https://redirect.github.com/mokksy/ai-mocks/pull/419)
- fix(deps): update dependency com.google.genai:google-genai to v1.21.0
by [@&#8203;renovate](https://redirect.github.com/renovate)\[bot] in
[#&#8203;418](https://redirect.github.com/mokksy/ai-mocks/pull/418)
- fix(deps): update dependency net.datafaker:datafaker to v2.5.2 by
[@&#8203;renovate](https://redirect.github.com/renovate)\[bot] in
[#&#8203;423](https://redirect.github.com/mokksy/ai-mocks/pull/423)
- fix(deps): update dependency com.google.genai:google-genai to v1.22.0
by [@&#8203;renovate](https://redirect.github.com/renovate)\[bot] in
[#&#8203;422](https://redirect.github.com/mokksy/ai-mocks/pull/422)
- chore(deps): update dependency org.openrewrite.rewrite to v7.18.0 by
[@&#8203;renovate](https://redirect.github.com/renovate)\[bot] in
[#&#8203;421](https://redirect.github.com/mokksy/ai-mocks/pull/421)
- fix(deps): update dependency com.openai:openai-java to v4.3.0 by
[@&#8203;renovate](https://redirect.github.com/renovate)\[bot] in
[#&#8203;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` |
![age](https://developer.mend.io/api/mc/badges/age/maven/com.jayway.jsonpath:json-path/2.10.0?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/com.jayway.jsonpath:json-path/2.9.0/2.10.0?slim=true)
|

---

> [!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)
|
![age](https://developer.mend.io/api/mc/badges/age/npm/docusaurus-lunr-search/3.6.0?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/docusaurus-lunr-search/3.5.0/3.6.0?slim=true)
|

---

> [!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>
…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`
|
![age](https://developer.mend.io/api/mc/badges/age/maven/org.jsoup:jsoup/1.22.2?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/org.jsoup:jsoup/1.18.3/1.22.2?slim=true)
|

---

> [!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.
[#&#8203;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.
[#&#8203;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.
[#&#8203;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.
[#&#8203;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.
[#&#8203;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`.
[#&#8203;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.
[#&#8203;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.
[#&#8203;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.
[#&#8203;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.
[#&#8203;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.
[#&#8203;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).
[#&#8203;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()`.
[#&#8203;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)`.
[#&#8203;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`.
[#&#8203;2421](https://redirect.github.com/jhy/jsoup/issues/2421)
- Build: added CI coverage for JDK 25
[#&#8203;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
#&#8203;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()`.
[#&#8203;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.
[#&#8203;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.
[#&#8203;2388](https://redirect.github.com/jhy/jsoup/issues/2388),
[#&#8203;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.
[#&#8203;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.
[#&#8203;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.
[#&#8203;2397](https://redirect.github.com/jhy/jsoup/issues/2397),
[#&#8203;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.
[#&#8203;2411](https://redirect.github.com/jhy/jsoup/issues/2411)
- Cloning a `Parser` now preserves any custom `TagSet` applied to the
parser.
[#&#8203;2422](https://redirect.github.com/jhy/jsoup/issues/2422),
[#&#8203;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.
[#&#8203;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.
[#&#8203;2387](https://redirect.github.com/jhy/jsoup/issues/2387),
[#&#8203;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.
[#&#8203;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.
[#&#8203;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.
[#&#8203;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.
[#&#8203;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.
[#&#8203;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.
[#&#8203;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.
[#&#8203;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.
[#&#8203;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.
[#&#8203;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.
[#&#8203;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.
[#&#8203;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.
[#&#8203;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()`.
[#&#8203;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.
[#&#8203;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.
[#&#8203;2374](https://redirect.github.com/jhy/jsoup/issues/2374)
- Malformed HTML could throw an IndexOutOfBoundsException during the
adoption agency.
[#&#8203;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.
[#&#8203;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.
[#&#8203;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.
[#&#8203;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.
[#&#8203;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.)
[#&#8203;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()`.
[#&#8203;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.
[#&#8203;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`.
[#&#8203;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.
[#&#8203;2320](https://redirect.github.com/jhy/jsoup/issues/2320)
- `Tag#isFormSubmittable()` was updating the Tag's options.
[#&#8203;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.
[#&#8203;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.
[#&#8203;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.
[#&#8203;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.
[#&#8203;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.
[#&#8203;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).
[#&#8203;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`
[#&#8203;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.) [#&#8203;2100](https://redirect.github.com/jhy/jsoup/issues/2100).
- Added support for sending a request body from an InputStream with
`Connection.requestBodyStream(InputStream stream)`.
[#&#8203;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.
[#&#8203;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()`.
[#&#8203;2297](https://redirect.github.com/jhy/jsoup/pull/2297),
[#&#8203;2305](https://redirect.github.com/jhy/jsoup/pull/2305)

##### Structure and Performance Improvements

- Refactored the CSS `QueryParser` into a clearer recursive descent
parser. [#&#8203;2310](https://redirect.github.com/jhy/jsoup/pull/2310).
- CSS selectors with consecutive combinators (e.g. `div >> p`) will
throw an explicit parse
exception.
[#&#8203;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.
  [#&#8203;2307](https://redirect.github.com/jhy/jsoup/pull/2307).
- Performance: reduced GC load of new StringBuilders when tokenizing
input
  HTML. [#&#8203;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. [#&#8203;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.
[#&#8203;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).
[#&#8203;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.
[#&#8203;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.
[#&#8203;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.
[#&#8203;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.
[#&#8203;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.
[#&#8203;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.
  [#&#8203;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())`.
[#&#8203;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.
[#&#8203;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.
[#&#8203;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.
[#&#8203;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)`.
[#&#8203;1177](https://redirect.github.com/jhy/jsoup/issues/1177)
- Reintroduced CLI executable examples, in `jsoup-examples.jar`.
[#&#8203;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.
[#&#8203;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.
[#&#8203;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 `!`.
[#&#8203;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. [#&#8203;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.
[#&#8203;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.
[#&#8203;2244](https://redirect.github.com/jhy/jsoup/issues/2244)
- For backwards compatibility, reverted the internal attribute key for
doctype names to
"name".
[#&#8203;2241](https://redirect.github.com/jhy/jsoup/issues/2241)
- In `Connection`, skip cookies that have no name, rather than throwing
a validation
exception.
[#&#8203;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.
[#&#8203;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`.
[#&#8203;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.
[#&#8203;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. [#&#8203;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.
[#&#8203;1147](https://redirect.github.com/jhy/jsoup/issues/1147)
- Calling `doc.charset(charset)` on an empty XML document would throw an
`IndexOutOfBoundsException`.
[#&#8203;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.
[#&#8203;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.
[#&#8203;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` |
![age](https://developer.mend.io/api/mc/badges/age/maven/org.opensearch:opensearch-testcontainers/2.1.4?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/org.opensearch:opensearch-testcontainers/2.0.1/2.1.4?slim=true)
|

---

> [!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
[@&#8203;reta](https://redirect.github.com/reta) in
[#&#8203;224](https://redirect.github.com/opensearch-project/opensearch-testcontainers/pull/224)
- Add Andrew Ross
([@&#8203;andrross](https://redirect.github.com/andrross)) as a
mainatainer by [@&#8203;reta](https://redirect.github.com/reta) in
[#&#8203;225](https://redirect.github.com/opensearch-project/opensearch-testcontainers/pull/225)
- \[Backport]\[2.x] Update the maven snapshot publish endpoint and
credential
([#&#8203;254](https://redirect.github.com/opensearch-project/opensearch-testcontainers/issues/254))
by [@&#8203;reta](https://redirect.github.com/reta) in
[#&#8203;265](https://redirect.github.com/opensearch-project/opensearch-testcontainers/pull/265)
- Add OpenSearch cluster test case by
[@&#8203;reta](https://redirect.github.com/reta) in
[#&#8203;271](https://redirect.github.com/opensearch-project/opensearch-testcontainers/pull/271)
- Remove legacy sonatype credential
([#&#8203;255](https://redirect.github.com/opensearch-project/opensearch-testcontainers/issues/255))
by [@&#8203;reta](https://redirect.github.com/reta) in
[#&#8203;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
[@&#8203;reta](https://redirect.github.com/reta) in
[#&#8203;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
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[#&#8203;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
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[#&#8203;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
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[#&#8203;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
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[#&#8203;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
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[#&#8203;205](https://redirect.github.com/opensearch-project/opensearch-testcontainers/pull/205)
- Update Gradle to 8.12 by
[@&#8203;reta](https://redirect.github.com/reta) in
[#&#8203;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 [@&#8203;dependabot](https://redirect.github.com/dependabot) in
[#&#8203;208](https://redirect.github.com/opensearch-project/opensearch-testcontainers/pull/208)
- Bump com.diffplug.spotless from 6.25.0 to 7.0.1 by
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[#&#8203;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 [@&#8203;dependabot](https://redirect.github.com/dependabot) in
[#&#8203;210](https://redirect.github.com/opensearch-project/opensearch-testcontainers/pull/210)
- Bump com.diffplug.spotless from 7.0.1 to 7.0.2 by
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[#&#8203;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 [@&#8203;dependabot](https://redirect.github.com/dependabot)
in
[#&#8203;211](https://redirect.github.com/opensearch-project/opensearch-testcontainers/pull/211)
- Bump org.testcontainers:testcontainers from 1.20.4 to 1.20.5 by
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[#&#8203;214](https://redirect.github.com/opensearch-project/opensearch-testcontainers/pull/214)
- Stepping [@&#8203;dblock](https://redirect.github.com/dblock) down to
Emeritus. by [@&#8203;dblock](https://redirect.github.com/dblock) in
[#&#8203;216](https://redirect.github.com/opensearch-project/opensearch-testcontainers/pull/216)
- Removed dblock@ from CODEOWNERS. by
[@&#8203;dblock](https://redirect.github.com/dblock) in
[#&#8203;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 [@&#8203;dependabot](https://redirect.github.com/dependabot)
in
[#&#8203;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
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[#&#8203;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
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[#&#8203;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
[@&#8203;reta](https://redirect.github.com/reta) in
[#&#8203;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 [@&#8203;dependabot](https://redirect.github.com/dependabot)
in
[#&#8203;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
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[#&#8203;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
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[#&#8203;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
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[#&#8203;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
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[#&#8203;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
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[#&#8203;193](https://redirect.github.com/opensearch-project/opensearch-testcontainers/pull/193)
- Bump org.testcontainers:testcontainers from 1.20.2 to 1.20.3 by
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[#&#8203;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 [@&#8203;dependabot](https://redirect.github.com/dependabot)
in
[#&#8203;195](https://redirect.github.com/opensearch-project/opensearch-testcontainers/pull/195)
- Bump org.testcontainers:testcontainers from 1.20.3 to 1.20.4 by
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[#&#8203;196](https://redirect.github.com/opensearch-project/opensearch-testcontainers/pull/196)
- Update Gradle to 8.11.1 by
[@&#8203;reta](https://redirect.github.com/reta) in
[#&#8203;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
[@&#8203;reta](https://redirect.github.com/reta) in
[#&#8203;166](https://redirect.github.com/opensearch-project/opensearch-testcontainers/pull/166)
- Bump org.testcontainers:testcontainers from 1.20.0 to 1.20.1 by
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[#&#8203;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 [@&#8203;dependabot](https://redirect.github.com/dependabot)
in
[#&#8203;169](https://redirect.github.com/opensearch-project/opensearch-testcontainers/pull/169)
- Update Gradle to 8.10 by
[@&#8203;reta](https://redirect.github.com/reta) in
[#&#8203;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
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[#&#8203;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
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[#&#8203;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
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[#&#8203;174](https://redirect.github.com/opensearch-project/opensearch-testcontainers/pull/174)
- Update Gradle to 8.10.1 by
[@&#8203;reta](https://redirect.github.com/reta) in
[#&#8203;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 [@&#8203;dependabot](https://redirect.github.com/dependabot)
in
[#&#8203;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
[@&#8203;reta](https://redirect.github.com/reta) in
[#&#8203;176](https://redirect.github.com/opensearch-project/opensearch-testcontainers/pull/176)
- Update Gradle to 8.10.2 by
[@&#8203;reta](https://redirect.github.com/reta) in
[#&#8203;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
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[#&#8203;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
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[#&#8203;179](https://redirect.github.com/opensearch-project/opensearch-testcontainers/pull/179)
- Update Testcontainers to 1.20.2 by
[@&#8203;reta](https://redirect.github.com/reta) in
[#&#8203;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
[@&#8203;reta](https://redirect.github.com/reta) in
[#&#8203;162](https://redirect.github.com/opensearch-project/opensearch-testcontainers/pull/162)
- Update Testcontainers to 1.20.0 by
[@&#8203;reta](https://redirect.github.com/reta) in
[#&#8203;163](https://redirect.github.com/opensearch-project/opensearch-testcontainers/pull/163)
- Update Gradle to 8.9 by
[@&#8203;reta](https://redirect.github.com/reta) in
[#&#8203;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
[@&#8203;reta](https://redirect.github.com/reta) in
[#&#8203;118](https://redirect.github.com/opensearch-project/opensearch-testcontainers/pull/118)
- Bump com.diffplug.spotless from 6.22.0 to 6.23.0 by
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[#&#8203;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 [@&#8203;dependabot](https://redirect.github.com/dependabot)
in
[#&#8203;121](https://redirect.github.com/opensearch-project/opensearch-testcontainers/pull/121)
- Bump org.testcontainers:testcontainers from 1.19.2 to 1.19.3 by
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[#&#8203;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 [@&#8203;dependabot](https://redirect.github.com/dependabot)
in
[#&#8203;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 [@&#8203;dependabot](https://redirect.github.com/dependabot)
in
[#&#8203;125](https://redirect.github.com/opensearch-project/opensearch-testcontainers/pull/125)
- Bump com.diffplug.spotless from 6.23.0 to 6.23.3 by
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[#&#8203;124](https://redirect.github.com/opensearch-project/opensearch-testcontainers/pull/124)
- Update to Gradle 8.5 by
[@&#8203;reta](https://redirect.github.com/reta) in
[#&#8203;129](https://redirect.github.com/opensearch-project/opensearch-testcontainers/pull/129)
- Update logback to 1.2.13 by
[@&#8203;reta](https://redirect.github.com/reta) in
[#&#8203;130](https://redirect.github.com/opensearch-project/opensearch-testcontainers/pull/130)
- Update CodeQL Gitghub actions by
[@&#8203;reta](https://redirect.github.com/reta) in
[#&#8203;131](https://redirect.github.com/opensearch-project/opensearch-testcontainers/pull/131)
- Bump com.diffplug.spotless from 6.23.3 to 6.24.0 by
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[#&#8203;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 [@&#8203;dependabot](https://redirect.github.com/dependabot)
in
[#&#8203;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 [@&#8203;dependabot](https://redirect.github.com/dependabot)
in
[#&#8203;137](https://redirect.github.com/opensearch-project/opensearch-testcontainers/pull/137)
- Bump com.diffplug.spotless from 6.24.0 to 6.25.0 by
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[#&#8203;136](https://redirect.github.com/opensearch-project/opensearch-testcontainers/pull/136)
- Bump org.testcontainers:testcontainers from 1.19.3 to 1.19.4 by
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[#&#8203;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
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[#&#8203;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
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[#&#8203;139](https://redirect.github.com/opensearch-project/opensearch-testcontainers/pull/139)
- Bump org.testcontainers:testcontainers from 1.19.4 to 1.19.5 by
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[#&#8203;141](https://redirect.github.com/opensearch-project/opensearch-testcontainers/pull/141)
- Bump org.testcontainers:testcontainers from 1.19.5 to 1.19.6 by
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[#&#8203;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 [@&#8203;dependabot](https://redirect.github.com/dependabot)
in
[#&#8203;143](https://redirect.github.com/opensearch-project/opensearch-testcontainers/pull/143)
- Bump org.testcontainers:testcontainers from 1.19.6 to 1.19.7 by
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[#&#8203;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 [@&#8203;dependabot](https://redirect.github.com/dependabot)
in
[#&#8203;149](https://redirect.github.com/opensearch-project/opensearch-testcontainers/pull/149)
- Update to Gradle 8.7 by
[@&#8203;reta](https://redirect.github.com/reta) in
[#&#8203;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
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[#&#8203;152](https://redirect.github.com/opensearch-project/opensearch-testcontainers/pull/152)
- Bump org.testcontainers:testcontainers from 1.19.7 to 1.19.8 by
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[#&#8203;154](https://redirect.github.com/opensearch-project/opensearch-testcontainers/pull/154)
- Update Testcontainers to 1.19.8 by
[@&#8203;reta](https://redirect.github.com/reta) in
[#&#8203;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 [@&#8203;dependabot](https://redirect.github.com/dependabot)
in
[#&#8203;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 [@&#8203;dependabot](https://redirect.github.com/dependabot)
in
[#&#8203;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
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[#&#8203;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` |
![age](https://developer.mend.io/api/mc/badges/age/maven/org.apache.poi:poi-scratchpad/5.5.1?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/org.apache.poi:poi-scratchpad/5.4.0/5.5.1?slim=true)
|
| [org.apache.poi:poi-ooxml](https://poi.apache.org/) | `5.4.0` →
`5.5.1` |
![age](https://developer.mend.io/api/mc/badges/age/maven/org.apache.poi:poi-ooxml/5.5.1?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/org.apache.poi:poi-ooxml/5.4.0/5.5.1?slim=true)
|
| [org.apache.poi:poi](https://poi.apache.org/) | `5.4.0` → `5.5.1` |
![age](https://developer.mend.io/api/mc/badges/age/maven/org.apache.poi:poi/5.5.1?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/org.apache.poi:poi/5.4.0/5.5.1?slim=true)
|

---

> [!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` |
![age](https://developer.mend.io/api/mc/badges/age/maven/ai.djl.huggingface:tokenizers/0.36.0?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/ai.djl.huggingface:tokenizers/0.31.1/0.36.0?slim=true)
|
| [ai.djl:api](http://www.djl.ai/api)
([source](https://redirect.github.com/deepjavalibrary/djl)) | `0.31.1` →
`0.36.0` |
![age](https://developer.mend.io/api/mc/badges/age/maven/ai.djl:api/0.36.0?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/ai.djl:api/0.31.1/0.36.0?slim=true)
|
|
[ai.djl.huggingface:tokenizers](http://www.djl.ai/extensions/tokenizers)
([source](https://redirect.github.com/deepjavalibrary/djl)) | `0.33.0` →
`0.36.0` |
![age](https://developer.mend.io/api/mc/badges/age/maven/ai.djl.huggingface:tokenizers/0.36.0?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/ai.djl.huggingface:tokenizers/0.33.0/0.36.0?slim=true)
|
| [ai.djl:api](http://www.djl.ai/api)
([source](https://redirect.github.com/deepjavalibrary/djl)) | `0.33.0` →
`0.36.0` |
![age](https://developer.mend.io/api/mc/badges/age/maven/ai.djl:api/0.36.0?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/ai.djl:api/0.33.0/0.36.0?slim=true)
|

---

> [!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
[@&#8203;access2rohit](https://redirect.github.com/access2rohit) in
[#&#8203;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
[@&#8203;access2rohit](https://redirect.github.com/access2rohit) in
[#&#8203;3819](https://redirect.github.com/deepjavalibrary/djl/pull/3819)
- NDManager.create(Number) unsupported type error message improvement by
[@&#8203;fracpete](https://redirect.github.com/fracpete) in
[#&#8203;3818](https://redirect.github.com/deepjavalibrary/djl/pull/3818)

##### New Contributors

- [@&#8203;access2rohit](https://redirect.github.com/access2rohit) made
their first contribution in
[#&#8203;3816](https://redirect.github.com/deepjavalibrary/djl/pull/3816)
- [@&#8203;fracpete](https://redirect.github.com/fracpete) made their
first contribution in
[#&#8203;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
[@&#8203;Lokiiiiii](https://redirect.github.com/Lokiiiiii) in
[#&#8203;3812](https://redirect.github.com/deepjavalibrary/djl/pull/3812)
- Fix script injection vulnerabilities in GitHub Actions workflows by
[@&#8203;Lokiiiiii](https://redirect.github.com/Lokiiiiii) in
[#&#8203;3813](https://redirect.github.com/deepjavalibrary/djl/pull/3813)
- Fix security vulnerabilities in QuestionAnsweringTranslator (CVSS 8.2)
by [@&#8203;Lokiiiiii](https://redirect.github.com/Lokiiiiii) in
[#&#8203;3814](https://redirect.github.com/deepjavalibrary/djl/pull/3814)

##### New Contributors

- [@&#8203;Lokiiiiii](https://redirect.github.com/Lokiiiiii) made their
first contribution in
[#&#8203;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
[#&#8203;3788](https://redirect.github.com/deepjavalibrary/djl/pull/3788)

##### Enhancements

- Increase build version to 0.35.0 by
[@&#8203;xyang16](https://redirect.github.com/xyang16) in
[#&#8203;3766](https://redirect.github.com/deepjavalibrary/djl/pull/3766)
- Add default header for openai by
[@&#8203;bryanktliu](https://redirect.github.com/bryanktliu) in
[#&#8203;3772](https://redirect.github.com/deepjavalibrary/djl/pull/3772)
- Update gradle to 9.0.0 by
[@&#8203;xyang16](https://redirect.github.com/xyang16) in
[#&#8203;3777](https://redirect.github.com/deepjavalibrary/djl/pull/3777)
- \[XGBoost] Support json model for XGBoost by
[@&#8203;xyang16](https://redirect.github.com/xyang16) in
[#&#8203;3786](https://redirect.github.com/deepjavalibrary/djl/pull/3786)
- \[api] Accept json input/output for tensor input by
[@&#8203;xyang16](https://redirect.github.com/xyang16) in
[#&#8203;3787](https://redirect.github.com/deepjavalibrary/djl/pull/3787)
- Upgrade xgboost to 3.0.4 by
[@&#8203;xyang16](https://redirect.github.com/xyang16) in
[#&#8203;3788](https://redirect.github.com/deepjavalibrary/djl/pull/3788)
- \[pytorch] Add tuple of dict support for IValue by
[@&#8203;xyang16](https://redirect.github.com/xyang16) in
[#&#8203;3797](https://redirect.github.com/deepjavalibrary/djl/pull/3797)
- \[XGBoost] Add back gpu support for xgboost by
[@&#8203;xyang16](https://redirect.github.com/xyang16) in
[#&#8203;3796](https://redirect.github.com/deepjavalibrary/djl/pull/3796)
- Update gradle build script to support configuration cache by
[@&#8203;xyang16](https://redirect.github.com/xyang16) in
[#&#8203;3782](https://redirect.github.com/deepjavalibrary/djl/pull/3782)
- Added percentile implementation for Pytorch engine by
[@&#8203;tipame](https://redirect.github.com/tipame) in
[#&#8203;3800](https://redirect.github.com/deepjavalibrary/djl/pull/3800)
- Implemented CSV translator that handles CSV input/output support for
XGBoost by [@&#8203;smouaa](https://redirect.github.com/smouaa) in
[#&#8203;3801](https://redirect.github.com/deepjavalibrary/djl/pull/3801)
- Correct topK documentation by
[@&#8203;alanocallaghan](https://redirect.github.com/alanocallaghan) in
[#&#8203;3808](https://redirect.github.com/deepjavalibrary/djl/pull/3808)
- \[api] Refactor csvTranslator by
[@&#8203;xyang16](https://redirect.github.com/xyang16) in
[#&#8203;3805](https://redirect.github.com/deepjavalibrary/djl/pull/3805)

##### Bug Fixes

- Fix pytorch native 2.5.1 aarch64 build by
[@&#8203;xyang16](https://redirect.github.com/xyang16) in
[#&#8203;3767](https://redirect.github.com/deepjavalibrary/djl/pull/3767)
- \[fix] Fixes load tokenizer gpu shared library issue by
[@&#8203;xyang16](https://redirect.github.com/xyang16) in
[#&#8203;3773](https://redirect.github.com/deepjavalibrary/djl/pull/3773)
- Fixes
[#&#8203;3774](https://redirect.github.com/deepjavalibrary/djl/issues/3774)
for YoloSegmentationTranslator by
[@&#8203;bryanktliu](https://redirect.github.com/bryanktliu) in
[#&#8203;3775](https://redirect.github.com/deepjavalibrary/djl/pull/3775)
- Fixes issue
[#&#8203;3761](https://redirect.github.com/deepjavalibrary/djl/issues/3761)
by [@&#8203;bryanktliu](https://redirect.github.com/bryanktliu) in
[#&#8203;3776](https://redirect.github.com/deepjavalibrary/djl/pull/3776)
- Fix `BaseNDManager.debugDump` by
[@&#8203;petebankhead](https://redirect.github.com/petebankhead) in
[#&#8203;3780](https://redirect.github.com/deepjavalibrary/djl/pull/3780)
- Fix preference of tokenizer\_config.json and remove doLowerCase from
TokenizerConfig by
[@&#8203;Soha-Agarwal](https://redirect.github.com/Soha-Agarwal) in
[#&#8203;3785](https://redirect.github.com/deepjavalibrary/djl/pull/3785)
- Fixes:
[#&#8203;3795](https://redirect.github.com/deepjavalibrary/djl/issues/3795),
adds aggregation\_strategy to token classification task by
[@&#8203;bryanktliu](https://redirect.github.com/bryanktliu) in
[#&#8203;3798](https://redirect.github.com/deepjavalibrary/djl/pull/3798)
- Fix pytorch native build for windows by
[@&#8203;xyang16](https://redirect.github.com/xyang16) in
[#&#8203;3802](https://redirect.github.com/deepjavalibrary/djl/pull/3802)

##### CI/CD

- Build pytorch jni cpu precxx by
[@&#8203;xyang16](https://redirect.github.com/xyang16) in
[#&#8203;3770](https://redirect.github.com/deepjavalibrary/djl/pull/3770)
- Remove pytorch 2.1.2 and 2.3.1 publish in nightly by
[@&#8203;xyang16](https://redirect.github.com/xyang16) in
[#&#8203;3771](https://redirect.github.com/deepjavalibrary/djl/pull/3771)
- Fix sentencepiece native workflow by
[@&#8203;xyang16](https://redirect.github.com/xyang16) in
[#&#8203;3768](https://redirect.github.com/deepjavalibrary/djl/pull/3768)
- Fix fasttext native workflow by
[@&#8203;xyang16](https://redirect.github.com/xyang16) in
[#&#8203;3769](https://redirect.github.com/deepjavalibrary/djl/pull/3769)
- Fix continuous build by
[@&#8203;xyang16](https://redirect.github.com/xyang16) in
[#&#8203;3804](https://redirect.github.com/deepjavalibrary/djl/pull/3804)

##### New Contributors

- [@&#8203;smouaa](https://redirect.github.com/smouaa) made their first
contribution in
[#&#8203;3801](https://redirect.github.com/deepjavalibrary/djl/pull/3801)
- [@&#8203;alanocallaghan](https://redirect.github.com/alanocallaghan)
made their first contribution in
[#&#8203;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
[#&#8203;3733](https://redirect.github.com/deepjavalibrary/djl/pull/3733)
- Remove TensorRT engine
[#&#8203;3765](https://redirect.github.com/deepjavalibrary/djl/pull/3765)

##### Enhancements

- \[api] Adds FUSE based repository support by
[@&#8203;raymondkhliu](https://redirect.github.com/raymondkhliu) in
[#&#8203;3695](https://redirect.github.com/deepjavalibrary/djl/pull/3695)
- Treat model server as a remote model by
[@&#8203;xyang16](https://redirect.github.com/xyang16) in
[#&#8203;3704](https://redirect.github.com/deepjavalibrary/djl/pull/3704)
- Align ZeroShotClassificationTranslator with Hugging Face behavior by
[@&#8203;raphaeldelio](https://redirect.github.com/raphaeldelio) in
[#&#8203;3712](https://redirect.github.com/deepjavalibrary/djl/pull/3712)
- Remove usage of UUID.randomUUID() for better performance by
[@&#8203;aakashb-kayzen](https://redirect.github.com/aakashb-kayzen) in
[#&#8203;3719](https://redirect.github.com/deepjavalibrary/djl/pull/3719)
- Replace UUID with NDManager.nextUid() by
[@&#8203;xyang16](https://redirect.github.com/xyang16) in
[#&#8203;3720](https://redirect.github.com/deepjavalibrary/djl/pull/3720)
- Add NDArray diagonal by
[@&#8203;dev-jonghoonpark](https://redirect.github.com/dev-jonghoonpark)
in
[#&#8203;3724](https://redirect.github.com/deepjavalibrary/djl/pull/3724)
- \[api] Implements remote REST API call as a model by
[@&#8203;bryanktliu](https://redirect.github.com/bryanktliu) in
[#&#8203;3725](https://redirect.github.com/deepjavalibrary/djl/pull/3725)
- Adds jsonlines streaming support for RpcEngine by
[@&#8203;bryanktliu](https://redirect.github.com/bryanktliu) in
[#&#8203;3727](https://redirect.github.com/deepjavalibrary/djl/pull/3727)
- Adds genai extension by
[@&#8203;bryanktliu](https://redirect.github.com/bryanktliu) in
[#&#8203;3726](https://redirect.github.com/deepjavalibrary/djl/pull/3726)
- \[genai] tool calls to ChatInput by
[@&#8203;bryanktliu](https://redirect.github.com/bryanktliu) in
[#&#8203;3728](https://redirect.github.com/deepjavalibrary/djl/pull/3728)
- Add utility class for genai function call by
[@&#8203;bryanktliu](https://redirect.github.com/bryanktliu) in
[#&#8203;3729](https://redirect.github.com/deepjavalibrary/djl/pull/3729)
- Improve function call for genai extension by
[@&#8203;bryanktliu](https://redirect.github.com/bryanktliu) in
[#&#8203;3731](https://redirect.github.com/deepjavalibrary/djl/pull/3731)
- Support convert ChatInput to GeminiInput by
[@&#8203;bryanktliu](https://redirect.github.com/bryanktliu) in
[#&#8203;3739](https://redirect.github.com/deepjavalibrary/djl/pull/3739)
- Add partial support for HuggingFace Tokenizer to use parameters from
tokenizer\_config.json by
[@&#8203;Soha-Agarwal](https://redirect.github.com/Soha-Agarwal) in
[#&#8203;3738](https://redirect.github.com/deepjavalibrary/djl/pull/3738)
- Add Anthropic support from genai by
[@&#8203;bryanktliu](https://redirect.github.com/bryanktliu) in
[#&#8203;3759](https://redirect.github.com/deepjavalibrary/djl/pull/3759)

##### Bug Fixes

- Correct CaptchaDataset options count to prevent torch.gather
IndexError by [@&#8203;xinhuagu](https://redirect.github.com/xinhuagu)
in
[#&#8203;3694](https://redirect.github.com/deepjavalibrary/djl/pull/3694)
- Fix dimension check when reshaping offsets in SeqBatcher by
[@&#8203;xinhuagu](https://redirect.github.com/xinhuagu) in
[#&#8203;3702](https://redirect.github.com/deepjavalibrary/djl/pull/3702)
- Fix the incorrect function name and minor typo in doc by
[@&#8203;xinhuagu](https://redirect.github.com/xinhuagu) in
[#&#8203;3703](https://redirect.github.com/deepjavalibrary/djl/pull/3703)
- Fix incorrect return value in getImageHeight method by
[@&#8203;xinhuagu](https://redirect.github.com/xinhuagu) in
[#&#8203;3706](https://redirect.github.com/deepjavalibrary/djl/pull/3706)
- \[djl\_converter]: Fixes djl\_converter bug by
[@&#8203;raymondkhliu](https://redirect.github.com/raymondkhliu) in
[#&#8203;3705](https://redirect.github.com/deepjavalibrary/djl/pull/3705)
- Fix the out of bounds exception when using an init image by
[@&#8203;luke-zhou](https://redirect.github.com/luke-zhou) in
[#&#8203;3717](https://redirect.github.com/deepjavalibrary/djl/pull/3717)
- Fix earlystopping metric issue
[#&#8203;3722](https://redirect.github.com/deepjavalibrary/djl/issues/3722)
by [@&#8203;SamBSalgado](https://redirect.github.com/SamBSalgado) in
[#&#8203;3736](https://redirect.github.com/deepjavalibrary/djl/pull/3736)
- \[tokenizers] Fix tokenizer cpu and cuda build by
[@&#8203;xyang16](https://redirect.github.com/xyang16) in
[#&#8203;3756](https://redirect.github.com/deepjavalibrary/djl/pull/3756)
- \[examples] Update tfhub urls by
[@&#8203;xyang16](https://redirect.github.com/xyang16) in
[#&#8203;3752](https://redirect.github.com/deepjavalibrary/djl/pull/3752)
- Update tfhub repository url by
[@&#8203;xyang16](https://redirect.github.com/xyang16) in
[#&#8203;3755](https://redirect.github.com/deepjavalibrary/djl/pull/3755)

##### Documentation

- \[docs] Update model zoo document by
[@&#8203;xyang16](https://redirect.github.com/xyang16) in
[#&#8203;3690](https://redirect.github.com/deepjavalibrary/djl/pull/3690)

##### CI/CD

- increase build version to 0.34.0 by
[@&#8203;siddvenk](https://redirect.github.com/siddvenk) in
[#&#8203;3689](https://redirect.github.com/deepjavalibrary/djl/pull/3689)
- Uses new recommended way to build pip wheel by
[@&#8203;raymondkhliu](https://redirect.github.com/raymondkhliu) in
[#&#8203;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
[@&#8203;dependabot](https://redirect.github.com/dependabot)\[bot] in
[#&#8203;3716](https://redirect.github.com/deepjavalibrary/djl/pull/3716)
- \[android] Upgrade DJL version to 0.34.0 by
[@&#8203;xyang16](https://redirect.github.com/xyang16) in
[#&#8203;3721](https://redirect.github.com/deepjavalibrary/djl/pull/3721)
- \[ci] simplify nightly publish workflow by
[@&#8203;xyang16](https://redirect.github.com/xyang16) in
[#&#8203;3732](https://redirect.github.com/deepjavalibrary/djl/pull/3732)
- \[ci] Update maven central publish url and credential by
[@&#8203;xyang16](https://redirect.github.com/xyang16) in
[#&#8203;3748](https://redirect.github.com/deepjavalibrary/djl/pull/3748)
- \[djl-converter] Update license in pyproject.toml by
[@&#8203;xyang16](https://redirect.github.com/xyang16) in
[#&#8203;3749](https://redirect.github.com/deepjavalibrary/djl/pull/3749)
- \[pytorch] Updates PyTorch to 2.7.1 by
[@&#8203;xyang16](https://redirect.github.com/xyang16) in
[#&#8203;3733](https://redirect.github.com/deepjavalibrary/djl/pull/3733)
- \[ci] Remove serving-publish workflow by
[@&#8203;xyang16](https://redirect.github.com/xyang16) in
[#&#8203;3750](https://redirect.github.com/deepjavalibrary/djl/pull/3750)
- Update oss sonatype snapshot repository url by
[@&#8203;xyang16](https://redirect.github.com/xyang16) in
[#&#8203;3754](https://redirect.github.com/deepjavalibrary/djl/pull/3754)
- Upgrade dependency versions by
[@&#8203;xyang16](https://redirect.github.com/xyang16) in
[#&#8203;3762](https://redirect.github.com/deepjavalibrary/djl/pull/3762)
- \[android] Upgrade pytorch version to 2.7.1 by
[@&#8203;xyang16](https://redirect.github.com/xyang16) in
[#&#8203;3763](https://redirect.github.com/deepjavalibrary/djl/pull/3763)
- \[ci] Add post-publish task by
[@&#8203;xyang16](https://redirect.github.com/xyang16) in
[#&#8203;3764](https://redirect.github.com/deepjavalibrary/djl/pull/3764)
- Increase DJL version to 0.34.0 by
[@&#8203;Soha-Agarwal](https://redirect.github.com/Soha-Agarwal) in
[#&#8203;3758](https://redirect.github.com/deepjavalibrary/djl/pull/3758)

##### New Contributors

- [@&#8203;raymondkhliu](https://redirect.github.com/raymondkhliu) made
their first contribution in
[#&#8203;3695](https://redirect.github.com/deepjavalibrary/djl/pull/3695)
- [@&#8203;raphaeldelio](https://redirect.github.com/raphaeldelio) made
their first contribution in
[#&#8203;3712](https://redirect.github.com/deepjavalibrary/djl/pull/3712)
- [@&#8203;luke-zhou](https://redirect.github.com/luke-zhou) made their
first contribution in
[#&#8203;3717](https://redirect.github.com/deepjavalibrary/djl/pull/3717)
- [@&#8203;aakashb-kayzen](https://redirect.github.com/aakashb-kayzen)
made their first contribution in
[#&#8203;3719](https://redirect.github.com/deepjavalibrary/djl/pull/3719)
-
[@&#8203;dev-jonghoonpark](https://redirect.github.com/dev-jonghoonpark)
made their first contribution in
[#&#8203;3724](https://redirect.github.com/deepjavalibrary/djl/pull/3724)
- [@&#8203;Soha-Agarwal](https://redirect.github.com/Soha-Agarwal) made
their first contribution in
[#&#8203;3738](https://redirect.github.com/deepjavalibrary/djl/pull/3738)
- [@&#8203;SamBSalgado](https://redirect.github.com/SamBSalgado) made
their first contribution in
[#&#8203;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
[@&#8203;xyang16](https://redirect.github.com/xyang16) in
[#&#8203;3607](https://redirect.github.com/deepjavalibrary/djl/pull/3607)
- \[api] Provide concrete implementation of TranslatorContext by
[@&#8203;xyang16](https://redirect.github.com/xyang16) in
[#&#8203;3622](https://redirect.github.com/deepjavalibrary/djl/pull/3622)
- \[api] Add zero shot object detection support by
[@&#8203;xyang16](https://redirect.github.com/xyang16) in
[#&#8203;3626](https://redirect.github.com/deepjavalibrary/djl/pull/3626)
- \[api] Adds zero short image classification support by
[@&#8203;xyang16](https://redirect.github.com/xyang16) in
[#&#8203;3628](https://redirect.github.com/deepjavalibrary/djl/pull/3628)
- Adds yolov8s-world2 model support by
[@&#8203;xyang16](https://redirect.github.com/xyang16) in
[#&#8203;3637](https://redirect.github.com/deepjavalibrary/djl/pull/3637)
- \[tensorflow] Allow retrieving available signatures for TensorFlow
models by [@&#8203;xyang16](https://redirect.github.com/xyang16) in
[#&#8203;3638](https://redirect.github.com/deepjavalibrary/djl/pull/3638)
- \[api] Improve listModel performance by
[@&#8203;xyang16](https://redirect.github.com/xyang16) in
[#&#8203;3641](https://redirect.github.com/deepjavalibrary/djl/pull/3641)
- \[tokenizers] Adds SparseRetrievalTranslator by
[@&#8203;xyang16](https://redirect.github.com/xyang16) in
[#&#8203;3642](https://redirect.github.com/deepjavalibrary/djl/pull/3642)
- \[tokenizers] Fix tokenizer name in tests by
[@&#8203;xyang16](https://redirect.github.com/xyang16) in
[#&#8203;3652](https://redirect.github.com/deepjavalibrary/djl/pull/3652)
- \[tokenizer] Updates tokenizers to 0.21.1 by
[@&#8203;xyang16](https://redirect.github.com/xyang16) in
[#&#8203;3654](https://redirect.github.com/deepjavalibrary/djl/pull/3654)
- \[onnxruntime] Updates OnnxRuntime to 1.21.0 by
[@&#8203;xyang16](https://redirect.github.com/xyang16) in
[#&#8203;3678](https://redirect.github.com/deepjavalibrary/djl/pull/3678)
- \[examples] Add WhisperJet model demo by
[@&#8203;xyang16](https://redirect.github.com/xyang16) in
[#&#8203;3681](https://redirect.github.com/deepjavalibrary/djl/pull/3681)
- \[pytorch] Add diff support by
[@&#8203;saedmanaf](https://redirect.github.com/saedmanaf) in
[#&#8203;3663](https://redirect.github.com/deepjavalibrary/djl/pull/3663)

##### Bug Fixes

- \[examples] fixing some dependencies and test requirements by
[@&#8203;sindhuvahinis](https://redirect.github.com/sindhuvahinis) in
[#&#8203;3605](https://redirect.github.com/deepjavalibrary/djl/pull/3605)
- \[onnxruntime] Fixes intraOpNumThreads bug by
[@&#8203;xyang16](https://redirect.github.com/xyang16) in
[#&#8203;3630](https://redirect.github.com/deepjavalibrary/djl/pull/3630)
- \[ci] Fixes build.gradle for integration by
[@&#8203;xyang16](https://redirect.github.com/xyang16) in
[#&#8203;3635](https://redirect.github.com/deepjavalibrary/djl/pull/3635)
- \[ci] Fixes system properties in gradle build script by
[@&#8203;xyang16](https://redirect.github.com/xyang16) in
[#&#8203;3636](https://redirect.github.com/deepjavalibrary/djl/pull/3636)
- Fix: Corrected 16-bit PCM normalization to avoid overflow issue by
[@&#8203;leleZeng](https://redirect.github.com/leleZeng) in
[#&#8203;3646](https://redirect.github.com/deepjavalibrary/djl/pull/3646)
- Fix rust build with update candle-core the 0.8.4 version by
[@&#8203;xyang16](https://redirect.github.com/xyang16) in
[#&#8203;3645](https://redirect.github.com/deepjavalibrary/djl/pull/3645)
- Fixed rust build with update candle-core the 0.8.4 version by
[@&#8203;xyang16](https://redirect.github.com/xyang16) in
[#&#8203;3649](https://redirect.github.com/deepjavalibrary/djl/pull/3649)
- \[fix] LRUReplayBuffer "stepToReplace" index fix by
[@&#8203;dwctic](https://redirect.github.com/dwctic) in
[#&#8203;3660](https://redirect.github.com/deepjavalibrary/djl/pull/3660)

##### Documentation

- docs: added a link to the continuous badge by
[@&#8203;operagxoksana](https://redirect.github.com/operagxoksana) in
[#&#8203;3668](https://redirect.github.com/deepjavalibrary/djl/pull/3668)
- \[doc] Update onnxruntime readme by
[@&#8203;xyang16](https://redirect.github.com/xyang16) in
[#&#8203;3669](https://redirect.github.com/deepjavalibrary/djl/pull/3669)
- chore: edited badges by
[@&#8203;operagxoksana](https://redirect.github.com/operagxoksana) in
[#&#8203;3670](https://redirect.github.com/deepjavalibrary/djl/pull/3670)
- chore: added an icon to the release by
[@&#8203;operagxoksana](https://redirect.github.com/operagxoksana) in
[#&#8203;3671](https://redirect.github.com/deepjavalibrary/djl/pull/3671)
- Correct 'Load Model' documentation: method
ImageClassificationTranslator.builder().setSynsetArtifactName() does not
exist by [@&#8203;xinhuagu](https://redirect.github.com/xinhuagu) in
[#&#8203;3677](https://redirect.github.com/deepjavalibrary/djl/pull/3677)

##### CI/CD

- \[release] Release DJL 0.32.0 by
[@&#8203;sindhuvahinis](https://redirect.github.com/sindhuvahinis) in
[#&#8203;3603](https://redirect.github.com/deepjavalibrary/djl/pull/3603)
- bump build version to 0.33.0 by
[@&#8203;siddvenk](https://redirect.github.com/siddvenk) in
[#&#8203;3627](https://redirect.github.com/deepjavalibrary/djl/pull/3627)
- \[ci] Upgrade gradle to 8.13 by
[@&#8203;xyang16](https://redirect.github.com/xyang16) in
[#&#8203;3650](https://redirect.github.com/deepjavalibrary/djl/pull/3650)
- \[ci] Fixes CI build for cmake 4.0.0 by
[@&#8203;xyang16](https://redirect.github.com/xyang16) in
[#&#8203;3659](https://redirect.github.com/deepjavalibrary/djl/pull/3659)
- Bump openssl from 0.10.71 to 0.10.72 in /extensions/tokenizers/rust by
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[#&#8203;3661](https://redirect.github.com/deepjavalibrary/djl/pull/3661)
- update some dependency versions by
[@&#8203;siddvenk](https://redirect.github.com/siddvenk) in
[#&#8203;3665](https://redirect.github.com/deepjavalibrary/djl/pull/3665)
- remove status from log4j configuration of status logger by
[@&#8203;siddvenk](https://redirect.github.com/siddvenk) in
[#&#8203;3667](https://redirect.github.com/deepjavalibrary/djl/pull/3667)
- Remove unnecessary exclusion for testng by
[@&#8203;xyang16](https://redirect.github.com/xyang16) in
[#&#8203;3687](https://redirect.github.com/deepjavalibrary/djl/pull/3687)
- Updates dependencies version by
[@&#8203;xyang16](https://redirect.github.com/xyang16) in
[#&#8203;3688](https://redirect.github.com/deepjavalibrary/djl/pull/3688)
- \[onnx] use zulu jdk to fix windows issues by
[@&#8203;siddvenk](https://redirect.github.com/siddvenk) in
[#&#8203;3683](https://redirect.github.com/deepjavalibrary/djl/pull/3683)
- \[onnx] fix one more usage of java distribution to zulu for windows by
[@&#8203;siddvenk](https://redirect.github.com/siddvenk) in
[#&#8203;3684](https://redirect.github.com/deepjavalibrary/djl/pull/3684)

##### New Contributors

- [@&#8203;leleZeng](https://redirect.github.com/leleZeng) made their
first contribution in
[#&#8203;3646](https://redirect.github.com/deepjavalibrary/djl/pull/3646)
- [@&#8203;dwctic](https://redirect.github.com/dwctic) made their first
contribution in
[#&#8203;3660](https://redirect.github.com/deepjavalibrary/djl/pull/3660)
- [@&#8203;saedmanaf](https://redirect.github.com/saedmanaf) made their
first contribution in
[#&#8203;3663](https://redirect.github.com/deepjavalibrary/djl/pull/3663)
- [@&#8203;xinhuagu](https://redirect.github.com/xinhuagu) made their
first contribution in
[#&#8203;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
[@&#8203;siddvenk](https://redirect.github.com/siddvenk) in
[#&#8203;3542](https://redirect.github.com/deepjavalibrary/djl/pull/3542)
- \[onnxruntime] Updates OnnxRuntime engine to 1.20.0 by
[@&#8203;xyang16](https://redirect.github.com/xyang16) in
[#&#8203;3549](https://redirect.github.com/deepjavalibrary/djl/pull/3549)
- \[tokenizers] Return detail for QA inference by
[@&#8203;xyang16](https://redirect.github.com/xyang16) in
[#&#8203;3555](https://redirect.github.com/deepjavalibrary/djl/pull/3555)
- \[api] Allows to configure custom batchifer by
[@&#8203;xyang16](https://redirect.github.com/xyang16) in
[#&#8203;3559](https://redirect.github.com/deepjavalibrary/djl/pull/3559)
- \[tokenizer] Updates huggingface tokenizer to 0.21.0 by
[@&#8203;xyang16](https://redirect.github.com/xyang16) in
[#&#8203;3572](https://redirect.github.com/deepjavalibrary/djl/pull/3572)
- \[tokenizers] Add int32 option to encoding by
[@&#8203;xyang16](https://redirect.github.com/xyang16) in
[#&#8203;3571](https://redirect.github.com/deepjavalibrary/djl/pull/3571)
- \[api] Adds ZeroShotClassification support by
[@&#8203;bryanktliu](https://redirect.github.com/bryanktliu) in
[#&#8203;3579](https://redirect.github.com/deepjavalibrary/djl/pull/3579)
- \[tokenizers] Support import zero-shot-classification to model zoo by
[@&#8203;bryanktliu](https://redirect.github.com/bryanktliu) in
[#&#8203;3580](https://redirect.github.com/deepjavalibrary/djl/pull/3580)
- \[FASTTEXT] Adds linux-aarch64 support by
[@&#8203;iamshubhambhola](https://redirect.github.com/iamshubhambhola)
in
[#&#8203;3584](https://redirect.github.com/deepjavalibrary/djl/pull/3584)
- Expose OnnxRuntime's getMetadata() in DJL API by
[@&#8203;VanjaRadulovic](https://redirect.github.com/VanjaRadulovic) in
[#&#8203;3596](https://redirect.github.com/deepjavalibrary/djl/pull/3596)
- \[api] Refactor image processing by
[@&#8203;xyang16](https://redirect.github.com/xyang16) in
[#&#8203;3588](https://redirect.github.com/deepjavalibrary/djl/pull/3588)
- Adds zero-shot-classification to model zoo by
[@&#8203;xyang16](https://redirect.github.com/xyang16) in
[#&#8203;3589](https://redirect.github.com/deepjavalibrary/djl/pull/3589)
- \[api] Adds Pad image transform for CV by
[@&#8203;xyang16](https://redirect.github.com/xyang16) in
[#&#8203;3593](https://redirect.github.com/deepjavalibrary/djl/pull/3593)

##### Bug Fixes

- \[api] fix issue in Tar/Zip Utils that resulted in incorrect artifact
… by [@&#8203;siddvenk](https://redirect.github.com/siddvenk) in
[#&#8203;3544](https://redirect.github.com/deepjavalibrary/djl/pull/3544)
- \[tokenizer] fixes token\_classification import issues by
[@&#8203;bryanktliu](https://redirect.github.com/bryanktliu) in
[#&#8203;3570](https://redirect.github.com/deepjavalibrary/djl/pull/3570)
- \[tokenizer] fixes trust\_remote\_code issues for DJL converter by
[@&#8203;bryanktliu](https://redirect.github.com/bryanktliu) in
[#&#8203;3569](https://redirect.github.com/deepjavalibrary/djl/pull/3569)
- \[fix] Fix YoloV8Translator by
[@&#8203;xyang16](https://redirect.github.com/xyang16) in
[#&#8203;3575](https://redirect.github.com/deepjavalibrary/djl/pull/3575)
- \[tokenizers] Fixes ZeroShotClassificationTranslator bug by
[@&#8203;bryanktliu](https://redirect.github.com/bryanktliu) in
[#&#8203;3581](https://redirect.github.com/deepjavalibrary/djl/pull/3581)
- \[xgb] Fix xgb intern to close replaced array by
[@&#8203;ewan0x79](https://redirect.github.com/ewan0x79) in
[#&#8203;3558](https://redirect.github.com/deepjavalibrary/djl/pull/3558)

##### Documentation

- \[pytorch] Update supported versions of pytorch for 0.32.0 by
[@&#8203;siddvenk](https://redirect.github.com/siddvenk) in
[#&#8203;3541](https://redirect.github.com/deepjavalibrary/djl/pull/3541)
- Update README.md (fix typo) by
[@&#8203;paulk-asert](https://redirect.github.com/paulk-asert) in
[#&#8203;3576](https://redirect.github.com/deepjavalibrary/djl/pull/3576)
- Docs: (Readme) by
[@&#8203;Lubov66](https://redirect.github.com/Lubov66) in
[#&#8203;3577](https://redirect.github.com/deepjavalibrary/djl/pull/3577)

##### CI/CD

- Increase build version to 0.32.0 by
[@&#8203;siddvenk](https://redirect.github.com/siddvenk) in
[#&#8203;3540](https://redirect.github.com/deepjavalibrary/djl/pull/3540)
- \[ci] fix ci to test windows properly by
[@&#8203;siddvenk](https://redirect.github.com/siddvenk) in
[#&#8203;3543](https://redirect.github.com/deepjavalibrary/djl/pull/3543)
- \[ci] adding back serving.publish to DJL by
[@&#8203;sindhuvahinis](https://redirect.github.com/sindhuvahinis) in
[#&#8203;3551](https://redirect.github.com/deepjavalibrary/djl/pull/3551)
- \[ci] adding back serving.publish to DJL by
[@&#8203;sindhuvahinis](https://redirect.github.com/sindhuvahinis) in
[#&#8203;3551](https://redirect.github.com/deepjavalibrary/djl/pull/3551)
- \[djl-convert] Remove onnxruntime from djl-convert requirements.txt by
[@&#8203;xyang16](https://redirect.github.com/xyang16) in
[#&#8203;3550](https://redirect.github.com/deepjavalibrary/djl/pull/3550)
- \[djl-convert] Remove onnxruntime from djl-convert requirements by
[@&#8203;xyang16](https://redirect.github.com/xyang16) in
[#&#8203;3552](https://redirect.github.com/deepjavalibrary/djl/pull/3552)
- Fixes java23 compile error by
[@&#8203;xyang16](https://redirect.github.com/xyang16) in
[#&#8203;3556](https://redirect.github.com/deepjavalibrary/djl/pull/3556)
- \[fix]\[ci] don't compile fasttext jni for windows by
[@&#8203;siddvenk](https://redirect.github.com/siddvenk) in
[#&#8203;3590](https://redirect.github.com/deepjavalibrary/djl/pull/3590)
- \[ci] Upgrade gradle to 8.12 by
[@&#8203;xyang16](https://redirect.github.com/xyang16) in
[#&#8203;3573](https://redirect.github.com/deepjavalibrary/djl/pull/3573)
- \[ci]\[docs] enable debug logging for s3 commands to troubleshoot
failu… by [@&#8203;siddvenk](https://redirect.github.com/siddvenk) in
[#&#8203;3591](https://redirect.github.com/deepjavalibrary/djl/pull/3591)
- \[ci] Update upload-artifact action to v4 by
[@&#8203;xyang16](https://redirect.github.com/xyang16) in
[#&#8203;3594](https://redirect.github.com/deepjavalibrary/djl/pull/3594)
- \[fix] Fix the pytorch-native ci failure by
[@&#8203;xyang16](https://redirect.github.com/xyang16) in
[#&#8203;3595](https://redirect.github.com/deepjavalibrary/djl/pull/3595)
- \[ci] Fix nightly publish upload artifact name by
[@&#8203;xyang16](https://redirect.github.com/xyang16) in
[#&#8203;3597](https://redirect.github.com/deepjavalibrary/djl/pull/3597)
- Implement NDArray.sub operation by
[@&#8203;xyang16](https://redirect.github.com/xyang16) in
[#&#8203;3598](https://redirect.github.com/deepjavalibrary/djl/pull/3598)
- \[ci] Fix continuous ci failure by
[@&#8203;xyang16](https://redirect.github.com/xyang16) in
[#&#8203;3599](https://redirect.github.com/deepjavalibrary/djl/pull/3599)
- \[ci] Fix ClipModelTest assertion failure by
[@&#8203;sindhuvahinis](https://redirect.github.com/sindhuvahinis) in
[#&#8203;3602](https://redirect.github.com/deepjavalibrary/djl/pull/3602)

##### New Contributors

- [@&#8203;paulk-asert](https://redirect.github.com/paulk-asert) made
their first contribution in
[#&#8203;3576](https://redirect.github.com/deepjavalibrary/djl/pull/3576)
- [@&#8203;Lubov66](https://redirect.github.com/Lubov66) made their
first contribution in
[#&#8203;3577](https://redirect.github.com/deepjavalibrary/djl/pull/3577)
- [@&#8203;iamshubhambhola](https://redirect.github.com/iamshubhambhola)
made their first contribution in
[#&#8203;3584](https://redirect.github.com/deepjavalibrary/djl/pull/3584)
- [@&#8203;VanjaRadulovic](https://redirect.github.com/VanjaRadulovic)
made their first contribution in
[#&#8203;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` |
![age](https://developer.mend.io/api/mc/badges/age/maven/org.commonmark:commonmark/0.28.0?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/org.commonmark:commonmark/0.26.0/0.28.0?slim=true)
|
|
[org.commonmark:commonmark-ext-yaml-front-matter](https://redirect.github.com/commonmark/commonmark-java)
| `0.26.0` → `0.28.0` |
![age](https://developer.mend.io/api/mc/badges/age/maven/org.commonmark:commonmark-ext-yaml-front-matter/0.28.0?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/org.commonmark:commonmark-ext-yaml-front-matter/0.26.0/0.28.0?slim=true)
|

---

> [!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`
([#&#8203;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
([#&#8203;415](https://redirect.github.com/commonmark/commonmark-java/issues/415))
- `TextContentRenderer` (for plain text): Fix nested lists on the same
line
([#&#8203;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` |
![age](https://developer.mend.io/api/mc/badges/age/maven/org.awaitility:awaitility-kotlin/4.3.0?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/org.awaitility:awaitility-kotlin/4.2.2/4.3.0?slim=true)
|
| [org.awaitility:awaitility](http://awaitility.org)
([source](https://redirect.github.com/awaitility/awaitility)) | `4.2.2`
→ `4.3.0` |
![age](https://developer.mend.io/api/mc/badges/age/maven/org.awaitility:awaitility/4.3.0?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/org.awaitility:awaitility/4.2.2/4.3.0?slim=true)
|

---

> [!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` |
![age](https://developer.mend.io/api/mc/badges/age/maven/com.couchbase.client:java-client/3.11.2?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/com.couchbase.client:java-client/3.9.1/3.11.2?slim=true)
|

---

> [!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` |
![age](https://developer.mend.io/api/mc/badges/age/maven/com.github.jsqlparser:jsqlparser/4.9?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/com.github.jsqlparser:jsqlparser/4.8/4.9?slim=true)
|

---

> [!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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.