Skip to content

Oracle Module for ChatMemory#6115

Closed
psilberk wants to merge 33 commits into
spring-projects:mainfrom
psilberk:main
Closed

Oracle Module for ChatMemory#6115
psilberk wants to merge 33 commits into
spring-projects:mainfrom
psilberk:main

Conversation

@psilberk
Copy link
Copy Markdown
Contributor

Thank you for taking time to contribute this pull request!
You might have already read the contributor guide, but as a reminder, please make sure to:

  • Add a Signed-off-by line to each commit (git commit -s) per the DCO
  • Rebase your changes on the latest main branch and squash your commits
  • Add/Update unit tests as needed
  • Run a build and make sure all tests pass prior to submission

For more details, please check the contributor guide.
Thank you upfront!

tzolov and others added 30 commits May 22, 2026 13:31
Replace scattered tool-registration methods with a single ToolSpec consumer:

- tools(Consumer<ToolSpec>) / defaultTools(Consumer<ToolSpec>) as the
  primary entry points; old toolCallbacks/toolNames/toolContext overloads
  are deprecated in favour of ToolSpec
- ToolSpec exposes: instances(Object...|List), callbacks(ToolCallback...|List,
  ToolCallbackProvider...), context(Map|key+value), advisor(ToolAdvisor)
- advisor(ToolAdvisor) co-locates a custom ToolAdvisor with its tools;
  suppresses auto-registration of ToolCallAdvisor, consistent with the
  existing .advisors() path
- toolNames() are deprecated. For java.util.function tools with ToolSpec
  use explicit ToolCallback instances and FunctionToolCallback.
- Update tests and docs accordingly

Signed-off-by: Christian Tzolov <christian.tzolov@broadcom.com>
Signed-off-by: psilberk <psilberkasten@gmail.com>
  - Include spring-boot-starter-jdbc as test scope

Signed-off-by: Ilayaperumal Gopinathan <ilayaperumal.gopinathan@broadcom.com>
Signed-off-by: psilberk <psilberkasten@gmail.com>
Adding upgrade docs about CosmosDB components removal

Signed-off-by: Soby Chacko <soby.chacko@broadcom.com>
Signed-off-by: psilberk <psilberkasten@gmail.com>
Signed-off-by: psilberk <psilberkasten@gmail.com>
* Alphabetic sorting of third party dependencies and plugins

Signed-off-by: Soby Chacko <soby.chacko@broadcom.com>
Signed-off-by: psilberk <psilberkasten@gmail.com>
Signed-off-by: Soby Chacko <soby.chacko@broadcom.com>
Signed-off-by: psilberk <psilberkasten@gmail.com>
Signed-off-by: Soby Chacko <soby.chacko@broadcom.com>
Signed-off-by: psilberk <psilberkasten@gmail.com>
The ChatClientAutoConfiguration is now applied after ToolCallingAutoConfiguration, ensuring the auto-configured ToolCallingManager is used correctly when building a ToolCallAdvisor instance.

Signed-off-by: Thomas Vitale <ThomasVitale@users.noreply.github.com>
Signed-off-by: psilberk <psilberkasten@gmail.com>
Include explicit dependency on spring-ai-client-chat in all model starters after it was removed as a transitive dependendency on spring-ai-autoconfigure-model-chat-client.

Fixes spring-projectsgh-6094

Signed-off-by: Thomas Vitale <ThomasVitale@users.noreply.github.com>
Signed-off-by: psilberk <psilberkasten@gmail.com>
…olCallMessages

 - Add ToolCallAdvisor with suppressToolCallStreaming

Signed-off-by: Ilayaperumal Gopinathan <ilayaperumal.gopinathan@broadcom.com>
Signed-off-by: psilberk <psilberkasten@gmail.com>
 - spring-ai-mcp is needed as the test scoped dependency for DockerMcpGatewayContainerConnectionDetailsFactoryIT

Signed-off-by: Ilayaperumal Gopinathan <ilayaperumal.gopinathan@broadcom.com>
Signed-off-by: psilberk <psilberkasten@gmail.com>
Signed-off-by: Eric Bottard <eric.bottard@broadcom.com>
Signed-off-by: psilberk <psilberkasten@gmail.com>
Follow-up to spring-projects#6036, completing the documentation corrections started in
192eb5c.

Signed-off-by: jewoodev <jewoos15@naver.com>
Signed-off-by: psilberk <psilberkasten@gmail.com>
Signed-off-by: Ilayaperumal Gopinathan <ilayaperumal.gopinathan@broadcom.com>
Signed-off-by: psilberk <psilberkasten@gmail.com>
 - include apache commons-lang3 in test scope

Signed-off-by: Ilayaperumal Gopinathan <ilayaperumal.gopinathan@broadcom.com>
Signed-off-by: psilberk <psilberkasten@gmail.com>
Also, add some more enforcer rules to the build,
to make sure modularity is correctly taken care of.

Signed-off-by: Eric Bottard <eric.bottard@broadcom.com>
Signed-off-by: psilberk <psilberkasten@gmail.com>
Signed-off-by: Ilayaperumal Gopinathan <ilayaperumal.gopinathan@broadcom.com>
Signed-off-by: psilberk <psilberkasten@gmail.com>
…jects#6035)

Add hoistDefsToRoot into JsonSchemaUtils so both JsonSchemaGenerator and
McpJsonSchemaGenerator share the implementation.
Handles equal-definition reuse, name collisions with suffix renaming,
peer-ref rewriting, and correct $defs-before-properties ordering.
Add tests for both generators.

Signed-off-by: jewoodev <jewoos15@naver.com>
Signed-off-by: Christian Tzolov <christian.tzolov@broadcom.com>

Co-authored-by: Christian Tzolov <christian.tzolov@broadcom.com>
Signed-off-by: psilberk <psilberkasten@gmail.com>
Signed-off-by: Ilayaperumal Gopinathan <ilayaperumal.gopinathan@broadcom.com>
Signed-off-by: psilberk <psilberkasten@gmail.com>
Signed-off-by: Dariusz Jędrzejczyk <2554306+chemicL@users.noreply.github.com>
Signed-off-by: Daniel Garnier-Moiroux <git@garnier.wf>
Signed-off-by: psilberk <psilberkasten@gmail.com>
Signed-off-by: Daniel Garnier-Moiroux <git@garnier.wf>
Signed-off-by: psilberk <psilberkasten@gmail.com>
 - Fix ConditionalOnClass for the autoconfiguration as it uses google-cloud-aiplatform instead of google-cloud-vertexai

Signed-off-by: Ilayaperumal Gopinathan <ilayaperumal.gopinathan@broadcom.com>
Signed-off-by: psilberk <psilberkasten@gmail.com>
- Add validateSingleToolAdvisor() to throw IllegalStateException when more
  than one ToolAdvisor is present in the advisor chain after auto-registration.
- Delegate legacy toolCallbacks/toolContext methods to tools(ToolSpec) to
  consolidate validation.
- Remove the streaming boolean from buildAdvisorChain
  since streamToolCallResponses is now pre-configured on the builder.

Signed-off-by: Christian Tzolov <christian.tzolov@broadcom.com>
Signed-off-by: psilberk <psilberkasten@gmail.com>
Signed-off-by: Soby Chacko <soby.chacko@broadcom.com>
Signed-off-by: psilberk <psilberkasten@gmail.com>
Signed-off-by: psilberk <psilberkasten@gmail.com>
Signed-off-by: ddobrin <ddobrin@google.com>
Signed-off-by: psilberk <psilberkasten@gmail.com>
Closes spring-projects#6107
Signed-off-by: Sébastien Deleuze <sdeleuze@users.noreply.github.com>
Signed-off-by: psilberk <psilberkasten@gmail.com>
Signed-off-by: Eric Bottard <eric.bottard@broadcom.com>
Signed-off-by: psilberk <psilberkasten@gmail.com>
MCP SDK 2.0.0-M3 makes `model` on `CreateMessageResult` and `maxTokens`
on `CreateMessageRequest` mandatory, throwing `IllegalArgumentException`
at construction time if omitted.
All other builders now require their mandatory arguments upfront in
the factory method.

- Fix affected test files to use M3 builder APIs
- Update MCP documentation code samples to match
- Add MCP SDK 2.0.0-M3 section to upgrade-notes.adoc

Signed-off-by: Christian Tzolov <christian.tzolov@broadcom.com>
Signed-off-by: psilberk <psilberkasten@gmail.com>
Reactive switchMap operator eagerly subscribes to the source requesting
unlimited data from the upstream. When the downstream is busy processing items
on another thread, the next incoming item will cause a previous one to be
discarded. That can force the streaming variant of ChatModel to silently drop
parts of the streamed response and is highly undesired.

This is a port of spring-projects#6106 and spring-projects#6123

Signed-off-by: Dariusz Jędrzejczyk <2554306+chemicL@users.noreply.github.com>
Signed-off-by: psilberk <psilberkasten@gmail.com>
sdeleuze and others added 3 commits May 22, 2026 13:31
See spring-projectsgh-5695
Signed-off-by: Sébastien Deleuze <sdeleuze@users.noreply.github.com>
Signed-off-by: psilberk <psilberkasten@gmail.com>
Signed-off-by: Christian Tzolov <christian.tzolov@broadcom.com>
Signed-off-by: psilberk <psilberkasten@gmail.com>
The filename comes back from the Anthropic API, which means it's
ultimately influenced by the model. We were handing it straight to
targetDir.resolve(...), so an absolute path would just throw the
target dir away and land wherever the model said. ., .. segments and
NUL bytes had their own problems.

Run the name through a small validator first and do one last
startsWith check on the resolved path as a backstop.

Adding unit tests to verify these scenarios.

Signed-off-by: Soby Chacko <soby.chacko@broadcom.com>
Signed-off-by: psilberk <psilberkasten@gmail.com>
@sdeleuze
Copy link
Copy Markdown
Contributor

The PR looks broken (too many unrelated commits) and we in the process of moving from memory in session in 2.1, so I will decline it, feel free to submit a PR to https://github.com/spring-ai-community/spring-ai-session.

@sdeleuze sdeleuze closed this May 23, 2026
@psilberk
Copy link
Copy Markdown
Contributor Author

psilberk commented May 27, 2026

Hi @sdeleuze , yes, this pr was broken, I just opened a new one with the same functionality in here #6159 if you can please review. Thanks

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.