[ { "extension": "revapi.differences", "configuration": { "ignore": true, "differences": [ { "code": "java.method.addedToInterface", "new": "method void dev.langchain4j.agentic.scope.AgenticScope::writeExecutionContext(java.lang.String, java.lang.Object)", "justification": "New method to allow Planner implementations to store non-serializable execution context. Does not break existing implementations as it's a new optional feature." }, { "code": "java.method.addedToInterface", "new": "method java.lang.Object dev.langchain4j.agentic.scope.AgenticScope::executionContext(java.lang.String)", "justification": "New method to retrieve non-serializable execution context. Does not break existing implementations as it's a new optional feature." }, { "code": "java.method.addedToInterface", "new": "method T dev.langchain4j.agentic.scope.AgenticScope::executionContextAs(java.lang.String, java.lang.Class)", "justification": "New method to retrieve non-serializable execution context with type-safe casting. Does not break existing implementations as it's a new optional feature." }, { "code": "java.method.addedToInterface", "new": "method void dev.langchain4j.agentic.scope.AgenticScope::writeExecutionContext(java.lang.Class, java.lang.Object)", "justification": "Convenience default method that delegates to writeExecutionContext(String, Object) using the class name as key. Does not require implementation." }, { "code": "java.method.addedToInterface", "new": "method T dev.langchain4j.agentic.scope.AgenticScope::executionContextAs(java.lang.Class)", "justification": "Convenience default method that delegates to executionContextAs(String, Class) using the class name as key. Does not require implementation." }, { "ignore": true, "code": "java.method.parameterTypeChanged", "old": "parameter T dev.langchain4j.agentic.planner.AgenticService::subAgents(===java.util.List===)", "new": "parameter T dev.langchain4j.agentic.planner.AgenticService::subAgents(===java.util.Collection===)", "parameterIndex": "0", "justification": "Not a breaking change, it simply enlarges the scope of accepted values" }, { "ignore": true, "code": "java.method.parameterTypeChanged", "old": "parameter dev.langchain4j.agentic.supervisor.SupervisorAgentService dev.langchain4j.agentic.supervisor.SupervisorAgentService::subAgents(===java.util.List===)", "new": "parameter dev.langchain4j.agentic.supervisor.SupervisorAgentService dev.langchain4j.agentic.supervisor.SupervisorAgentService::subAgents(===java.util.Collection===)", "parameterIndex": "0", "justification": "Not a breaking change, it simply enlarges the scope of accepted values" }, { "ignore": true, "code": "java.method.parameterTypeChanged", "old": "parameter dev.langchain4j.agentic.workflow.impl.ConditionalAgentServiceImpl dev.langchain4j.agentic.workflow.impl.ConditionalAgentServiceImpl::subAgents(===java.util.List===)", "new": "parameter dev.langchain4j.agentic.workflow.impl.ConditionalAgentServiceImpl dev.langchain4j.agentic.workflow.impl.ConditionalAgentServiceImpl::subAgents(===java.util.Collection===)", "parameterIndex": "0", "justification": "Not a breaking change, this is an internal API that is not exposed to users" }, { "ignore": true, "code": "java.method.numberOfParametersChanged", "old": "method void dev.langchain4j.agentic.workflow.HumanInTheLoop::(java.lang.String, java.lang.String, boolean, java.util.function.Function, dev.langchain4j.agentic.observability.AgentListener)", "new": "method void dev.langchain4j.agentic.workflow.HumanInTheLoop::(java.lang.String, java.lang.String, boolean, java.util.function.Function, dev.langchain4j.agentic.observability.AgentListener, java.util.List)", "justification": "The HumanInTheLoop is always supposed to be instantiated through the builder, so the constructor is not meant to be used directly and can be considered as a private API." }, { "ignore": true, "code": "java.method.parameterTypeChanged", "old": "parameter T dev.langchain4j.agentic.AgenticServices::createAgenticSystem(java.lang.Class, ===java.util.function.Consumer>===)", "new": "parameter T dev.langchain4j.agentic.AgenticServices::createAgenticSystem(java.lang.Class, ===dev.langchain4j.agentic.AgenticServices.AgentConfigurator===)", "parameterIndex": "1", "justification": "Not a breaking change, this method is only used by the Quarkus extension" }, { "ignore": true, "code": "java.method.parameterTypeChanged", "old": "parameter T dev.langchain4j.agentic.AgenticServices::createAgenticSystem(java.lang.Class, dev.langchain4j.model.chat.ChatModel, ===java.util.function.Consumer>===)", "new": "parameter T dev.langchain4j.agentic.AgenticServices::createAgenticSystem(java.lang.Class, dev.langchain4j.model.chat.ChatModel, ===dev.langchain4j.agentic.AgenticServices.AgentConfigurator===)", "parameterIndex": "2", "justification": "Not a breaking change, this method is only used by the Quarkus extension" }, { "ignore": true, "code": "java.class.removed", "old": "interface dev.langchain4j.agentic.declarative.ChatSupplierParameterResolver", "justification": "Replaced by SupplierParameterResolver. ChatSupplierParameterResolver was deprecated for removal." }, { "ignore": true, "code": "java.class.removed", "old": "interface dev.langchain4j.agentic.declarative.ChatSupplierParameterResolver.Context", "justification": "Replaced by SupplierParameterResolver.Context. ChatSupplierParameterResolver was deprecated for removal." }, { "ignore": true, "code": "java.method.removed", "old": "method void dev.langchain4j.agentic.declarative.DeclarativeUtil::addChatSupplierParameterResolver(dev.langchain4j.agentic.declarative.ChatSupplierParameterResolver)", "justification": "Replaced by addSupplierParameterResolver. Deprecated method removed." }, { "ignore": true, "code": "java.method.removed", "old": "method java.util.List dev.langchain4j.agentic.declarative.DeclarativeUtil::getChatSupplierParameterResolvers()", "justification": "Replaced by getSupplierParameterResolvers. Deprecated method removed." }, { "ignore": true, "code": "java.method.numberOfParametersChanged", "old": "method void dev.langchain4j.agentic.AgenticServices.AgentConfigurator::(java.util.function.Consumer>, java.util.function.Function, java.lang.Object>)", "new": "method void dev.langchain4j.agentic.AgenticServices.AgentConfigurator::(java.util.function.Consumer>, java.util.function.Function, java.lang.Object>, java.util.function.BiFunction, java.lang.reflect.InvocationHandler, java.lang.Object>)", "justification": "Necessary to support agents generated at deployment time from the Quarkus extension" }, { "ignore": true, "code": "java.method.visibilityIncreased", "old": "method void dev.langchain4j.agentic.agent.AgentInvocationHandler::(dev.langchain4j.service.AiServiceContext, java.lang.Object, dev.langchain4j.agentic.agent.AgentBuilder, boolean)", "new": "method void dev.langchain4j.agentic.agent.AgentInvocationHandler::(dev.langchain4j.service.AiServiceContext, java.lang.Object, dev.langchain4j.agentic.agent.AgentBuilder, boolean)", "oldVisibility": "package", "newVisibility": "public", "justification": "Necessary to support agents generated at deployment time from the Quarkus extension" } ] } } ]