From 11bab6e7150a8b8746e6b092af58c2c44967c8d1 Mon Sep 17 00:00:00 2001 From: Zacharias Date: Sun, 5 Jul 2026 21:28:21 +0200 Subject: [PATCH] Updated the Plugin-API version to 0.1.4.1 Fixed entryPoint in plugin.json added the getting of tools added tools: - TestTool: sends back "This is a test tool" - TestToolAdvance: sends a "pong" back with the content of the "ping" --- build.gradle | 3 +- .../neurodock/example/plugin/TestPlugin.java | 9 +++++ .../me/neurodock/example/plugin/TestTool.java | 35 +++++++++++++++++++ .../example/plugin/TestToolAdvance.java | 33 +++++++++++++++++ src/main/resources/plugin.json | 2 +- 5 files changed, 80 insertions(+), 2 deletions(-) create mode 100644 src/main/java/me/neurodock/example/plugin/TestTool.java create mode 100644 src/main/java/me/neurodock/example/plugin/TestToolAdvance.java diff --git a/build.gradle b/build.gradle index 3862767..ba472fd 100644 --- a/build.gradle +++ b/build.gradle @@ -8,6 +8,7 @@ version = '1.0-SNAPSHOT' repositories { mavenCentral() + mavenLocal() maven { url = "https://git.server.4zellen.se/api/packages/neurodock/maven" name = "gitea" @@ -19,7 +20,7 @@ dependencies { testImplementation 'org.junit.jupiter:junit-jupiter' testRuntimeOnly 'org.junit.platform:junit-platform-launcher' - compileOnly("me.neurodock:Plugin-API:0.1.2") + compileOnly("me.neurodock:Plugin-API:0.1.4.1") } test { diff --git a/src/main/java/me/neurodock/example/plugin/TestPlugin.java b/src/main/java/me/neurodock/example/plugin/TestPlugin.java index 55d99b5..c8e98b2 100644 --- a/src/main/java/me/neurodock/example/plugin/TestPlugin.java +++ b/src/main/java/me/neurodock/example/plugin/TestPlugin.java @@ -3,6 +3,7 @@ package me.neurodock.example.plugin; import me.neurodock.plugin.Plugin; import me.neurodock.plugin.PluginMetadata; import me.neurodock.plugin.annotations.PluginEntryPoint; +import me.neurodock.plugin.tool.Tool; import org.jetbrains.annotations.NotNull; @PluginEntryPoint @@ -21,4 +22,12 @@ public class TestPlugin extends Plugin { } }; } + + @Override + public Tool[] getTools() { + return new Tool[]{ + new TestTool(this), + new TestToolAdvance(this) + }; + } } diff --git a/src/main/java/me/neurodock/example/plugin/TestTool.java b/src/main/java/me/neurodock/example/plugin/TestTool.java new file mode 100644 index 0000000..2de7059 --- /dev/null +++ b/src/main/java/me/neurodock/example/plugin/TestTool.java @@ -0,0 +1,35 @@ +package me.neurodock.example.plugin; + +import me.neurodock.plugin.Plugin; +import me.neurodock.plugin.exceptions.ToolRuntimeException; +import me.neurodock.plugin.tool.Tool; +import me.neurodock.plugin.tool.ToolArguments; +import me.neurodock.plugin.tool.ToolParameters; +import me.neurodock.plugin.tool.ToolResponse; +import org.jetbrains.annotations.NotNull; + +public class TestTool extends Tool { + /** + * A base contructor, as the {@link Plugin} is used within this class + * + * @param plugin The plugin that owns this tool + */ + public TestTool(Plugin plugin) { + super(plugin); + } + + @Override + public @NotNull String name() { + return "test_tool"; + } + + @Override + public @NotNull ToolParameters parameters() { + return ToolParameters.empty(); + } + + @Override + public ToolResponse callTool(ToolArguments arguments) throws ToolRuntimeException { + return new ToolResponse(name(), "This is a test tool."); + } +} diff --git a/src/main/java/me/neurodock/example/plugin/TestToolAdvance.java b/src/main/java/me/neurodock/example/plugin/TestToolAdvance.java new file mode 100644 index 0000000..7e57a71 --- /dev/null +++ b/src/main/java/me/neurodock/example/plugin/TestToolAdvance.java @@ -0,0 +1,33 @@ +package me.neurodock.example.plugin; + +import me.neurodock.plugin.Plugin; +import me.neurodock.plugin.exceptions.ToolRuntimeException; +import me.neurodock.plugin.tool.Tool; +import me.neurodock.plugin.tool.ToolArguments; +import me.neurodock.plugin.tool.ToolParameters; +import me.neurodock.plugin.tool.ToolResponse; +import org.jetbrains.annotations.NotNull; + +public class TestToolAdvance extends Tool { + public TestToolAdvance(Plugin plugin) { + super(plugin); + } + + @Override + public @NotNull String name() { + return "ping"; + } + + @Override + public @NotNull ToolParameters parameters() { + return ToolParameters.builder() + .addProperty("message", ToolParameters.ToolParametersBuilder.Type.STRING, "the message to ping with", true) + .build(); + } + + @Override + public ToolResponse callTool(ToolArguments toolArguments) throws ToolRuntimeException { + if(!toolArguments.hasArgument("message")) throw new ToolRuntimeException(name(), "Missing message"); + return new ToolResponse(name(), "pong: "+toolArguments.getArgument("message")); + } +} diff --git a/src/main/resources/plugin.json b/src/main/resources/plugin.json index a1b9b55..8456b16 100644 --- a/src/main/resources/plugin.json +++ b/src/main/resources/plugin.json @@ -1,4 +1,4 @@ { - "entryPoint": "me.neurodock.example.plugin", + "entryPoint": "me.neurodock.example.plugin.TestPlugin", "name": "test" } \ No newline at end of file