diff --git a/sdks/backend/java/component-api/src/main/java/com/bytechef/component/definition/ComponentDsl.java b/sdks/backend/java/component-api/src/main/java/com/bytechef/component/definition/ComponentDsl.java index a2bb3b78fd9..ddb6816008a 100644 --- a/sdks/backend/java/component-api/src/main/java/com/bytechef/component/definition/ComponentDsl.java +++ b/sdks/backend/java/component-api/src/main/java/com/bytechef/component/definition/ComponentDsl.java @@ -16,7 +16,7 @@ package com.bytechef.component.definition; -import static com.bytechef.component.definition.ai.agent.ToolFunction.TOOLS; +import static com.bytechef.component.definition.ai.agent.BaseToolFunction.TOOLS; import com.bytechef.component.definition.ActionDefinition.PerformFunction; import com.bytechef.component.definition.Authorization.AuthorizationType; @@ -24,7 +24,7 @@ import com.bytechef.component.definition.Property.ObjectProperty; import com.bytechef.component.definition.Property.ValueProperty; import com.bytechef.component.definition.TriggerDefinition.PropertiesFunction; -import com.bytechef.component.definition.ai.agent.SingleConnectionToolFunction; +import com.bytechef.component.definition.ai.agent.ToolFunction; import com.bytechef.component.definition.unified.base.adapter.ProviderModelAdapter; import com.bytechef.component.definition.unified.base.mapper.ProviderModelMapper; import com.bytechef.definition.BaseOutputDefinition.OutputSchema; @@ -241,7 +241,7 @@ public static ModifiableTimeProperty time(String name) { return new ModifiableTimeProperty(name); } - public static ModifiableClusterElementDefinition tool( + public static ModifiableClusterElementDefinition tool( ActionDefinition actionDefinition) { Optional title = actionDefinition.getTitle(); @@ -252,7 +252,7 @@ public static ModifiableClusterElementDefinition t .map(f -> (PerformFunction) f) .orElse((inputParameters, connectionParameters, context) -> null); - return ComponentDsl.clusterElement(actionDefinition.getName()) + return ComponentDsl.clusterElement(actionDefinition.getName()) .title(title.orElse(null)) .description(description.orElse(null)) .type(TOOLS) diff --git a/sdks/backend/java/component-api/src/main/java/com/bytechef/component/definition/ai/agent/SingleConnectionToolFunction.java b/sdks/backend/java/component-api/src/main/java/com/bytechef/component/definition/ai/agent/BaseToolFunction.java similarity index 59% rename from sdks/backend/java/component-api/src/main/java/com/bytechef/component/definition/ai/agent/SingleConnectionToolFunction.java rename to sdks/backend/java/component-api/src/main/java/com/bytechef/component/definition/ai/agent/BaseToolFunction.java index 1111acb6b23..19dc3af113e 100644 --- a/sdks/backend/java/component-api/src/main/java/com/bytechef/component/definition/ai/agent/SingleConnectionToolFunction.java +++ b/sdks/backend/java/component-api/src/main/java/com/bytechef/component/definition/ai/agent/BaseToolFunction.java @@ -16,22 +16,12 @@ package com.bytechef.component.definition.ai.agent; -import com.bytechef.component.definition.ClusterElementContext; -import com.bytechef.component.definition.Parameters; +import com.bytechef.component.definition.ClusterElementDefinition.ClusterElementType; /** * @author Ivica Cardic */ -@FunctionalInterface -public interface SingleConnectionToolFunction extends ToolFunction { +public interface BaseToolFunction { - /** - * - * @param inputParameters - * @param connectionParameters - * @param context - * @return - */ - Object apply(Parameters inputParameters, Parameters connectionParameters, ClusterElementContext context) - throws Exception; + ClusterElementType TOOLS = new ClusterElementType("TOOLS", "tools", "Tools", true, false); } diff --git a/sdks/backend/java/component-api/src/main/java/com/bytechef/component/definition/ai/agent/ToolFunction.java b/sdks/backend/java/component-api/src/main/java/com/bytechef/component/definition/ai/agent/ToolFunction.java index f9c0e3b3c35..7958d51514e 100644 --- a/sdks/backend/java/component-api/src/main/java/com/bytechef/component/definition/ai/agent/ToolFunction.java +++ b/sdks/backend/java/component-api/src/main/java/com/bytechef/component/definition/ai/agent/ToolFunction.java @@ -16,12 +16,22 @@ package com.bytechef.component.definition.ai.agent; -import com.bytechef.component.definition.ClusterElementDefinition.ClusterElementType; +import com.bytechef.component.definition.ClusterElementContext; +import com.bytechef.component.definition.Parameters; /** * @author Ivica Cardic */ -public interface ToolFunction { +@FunctionalInterface +public interface ToolFunction extends BaseToolFunction { - ClusterElementType TOOLS = new ClusterElementType("TOOLS", "tools", "Tools", true, false); + /** + * + * @param inputParameters + * @param connectionParameters + * @param context + * @return + */ + Object apply(Parameters inputParameters, Parameters connectionParameters, ClusterElementContext context) + throws Exception; } diff --git a/server/ee/libs/embedded/embedded-execution/embedded-execution-service/src/main/java/com/bytechef/ee/embedded/execution/facade/ToolFacadeImpl.java b/server/ee/libs/embedded/embedded-execution/embedded-execution-service/src/main/java/com/bytechef/ee/embedded/execution/facade/ToolFacadeImpl.java index ae1577a3138..8fa9fd2e312 100644 --- a/server/ee/libs/embedded/embedded-execution/embedded-execution-service/src/main/java/com/bytechef/ee/embedded/execution/facade/ToolFacadeImpl.java +++ b/server/ee/libs/embedded/embedded-execution/embedded-execution-service/src/main/java/com/bytechef/ee/embedded/execution/facade/ToolFacadeImpl.java @@ -9,7 +9,7 @@ import com.bytechef.commons.util.CollectionUtils; import com.bytechef.component.definition.ComponentCategory; -import com.bytechef.component.definition.ai.agent.ToolFunction; +import com.bytechef.component.definition.ai.agent.BaseToolFunction; import com.bytechef.ee.embedded.configuration.domain.Integration; import com.bytechef.ee.embedded.configuration.domain.IntegrationInstance; import com.bytechef.ee.embedded.configuration.domain.IntegrationInstanceConfiguration; @@ -74,7 +74,7 @@ public ToolFacadeImpl( @Override public List getTools() { - return clusterElementDefinitionService.getClusterElementDefinitions(ToolFunction.TOOLS) + return clusterElementDefinitionService.getClusterElementDefinitions(BaseToolFunction.TOOLS) .stream() .map(clusterElementDefinition -> new ToolDTO( getToolName( @@ -111,7 +111,7 @@ public Map> getTools( .filter(componentDefinition -> filterByCategoryNames(categoryNames, componentDefinition)) .flatMap(componentDefinition -> CollectionUtils.stream( clusterElementDefinitionService.getClusterElementDefinitions( - componentDefinition.getName(), componentDefinition.getVersion(), ToolFunction.TOOLS))) + componentDefinition.getName(), componentDefinition.getVersion(), BaseToolFunction.TOOLS))) .filter(clusterElementDefinition -> filterByClusterElementNames( clusterElementNames, clusterElementDefinition)) .collect( diff --git a/server/libs/platform/platform-component/platform-component-api/src/main/java/com/bytechef/platform/component/definition/ai/agent/MultipleConnectionsToolFunction.java b/server/libs/platform/platform-component/platform-component-api/src/main/java/com/bytechef/platform/component/definition/ai/agent/MultipleConnectionsToolFunction.java index 4f9be1ade66..fac33efc7c3 100644 --- a/server/libs/platform/platform-component/platform-component-api/src/main/java/com/bytechef/platform/component/definition/ai/agent/MultipleConnectionsToolFunction.java +++ b/server/libs/platform/platform-component/platform-component-api/src/main/java/com/bytechef/platform/component/definition/ai/agent/MultipleConnectionsToolFunction.java @@ -18,7 +18,7 @@ import com.bytechef.component.definition.ClusterElementContext; import com.bytechef.component.definition.Parameters; -import com.bytechef.component.definition.ai.agent.ToolFunction; +import com.bytechef.component.definition.ai.agent.BaseToolFunction; import com.bytechef.platform.component.ComponentConnection; import java.util.Map; @@ -26,7 +26,7 @@ * @author Ivica Cardic */ @FunctionalInterface -public interface MultipleConnectionsToolFunction extends ToolFunction { +public interface MultipleConnectionsToolFunction extends BaseToolFunction { /** * @param inputParameters diff --git a/server/libs/platform/platform-component/platform-component-service/src/main/java/com/bytechef/platform/component/service/ClusterElementDefinitionServiceImpl.java b/server/libs/platform/platform-component/platform-component-service/src/main/java/com/bytechef/platform/component/service/ClusterElementDefinitionServiceImpl.java index ffd826159ae..3d9adfeaec0 100644 --- a/server/libs/platform/platform-component/platform-component-service/src/main/java/com/bytechef/platform/component/service/ClusterElementDefinitionServiceImpl.java +++ b/server/libs/platform/platform-component/platform-component-service/src/main/java/com/bytechef/platform/component/service/ClusterElementDefinitionServiceImpl.java @@ -30,7 +30,7 @@ import com.bytechef.component.definition.Parameters; import com.bytechef.component.definition.PropertiesDataSource; import com.bytechef.component.definition.Property.DynamicPropertiesProperty; -import com.bytechef.component.definition.ai.agent.SingleConnectionToolFunction; +import com.bytechef.component.definition.ai.agent.ToolFunction; import com.bytechef.component.exception.ProviderException; import com.bytechef.exception.ConfigurationException; import com.bytechef.exception.ExecutionException; @@ -354,7 +354,7 @@ private Object executeTool( String componentName, Integer componentVersion, String clusterElementName, Map inputParameters, @Nullable ComponentConnection componentConnection, ClusterElementContext context) { - SingleConnectionToolFunction toolFunction = getClusterElement( + ToolFunction toolFunction = getClusterElement( componentName, componentVersion, clusterElementName); try {