diff --git a/a2a/README.md b/a2a/google-adk-a2a-core/README.md
similarity index 99%
rename from a2a/README.md
rename to a2a/google-adk-a2a-core/README.md
index a5ae45008..82f1a13ae 100644
--- a/a2a/README.md
+++ b/a2a/google-adk-a2a-core/README.md
@@ -177,7 +177,7 @@ curl -X POST http://localhost:8081/a2a/remote/v1/message:send \
"kind": "message",
"contextId": "cli-demo-context",
"messageId": "cli-check-2",
- "role": "USER",
+ "role": "user",
"parts": [
{ "kind": "text", "text": "Is 2 prime?" }
]
diff --git a/a2a/google-adk-a2a-core/pom.xml b/a2a/google-adk-a2a-core/pom.xml
new file mode 100644
index 000000000..1ad23c111
--- /dev/null
+++ b/a2a/google-adk-a2a-core/pom.xml
@@ -0,0 +1,117 @@
+
+
+ 4.0.0
+
+
+ com.google.adk
+ google-adk-a2a
+ 0.3.1-SNAPSHOT
+
+
+ google-adk-a2a-core
+ jar
+
+ Google ADK A2A Integration
+
+
+ 17
+ ${java.version}
+ 0.3.0.Beta1
+ ${project.version}
+ 33.0.0-jre
+ 2.19.0
+ 3.1.5
+ 1.0.0
+ 2.0.17
+ 2.38.0
+ 1.4.4
+ 4.13.2
+
+
+
+
+ com.google.adk
+ google-adk
+ ${google.adk.version}
+
+
+ com.google.guava
+ guava
+ ${guava.version}
+
+
+ com.google.errorprone
+ error_prone_annotations
+ ${errorprone.version}
+
+
+ com.fasterxml.jackson.core
+ jackson-annotations
+ ${jackson.version}
+
+
+ com.fasterxml.jackson.core
+ jackson-databind
+ ${jackson.version}
+
+
+ com.fasterxml.jackson.module
+ jackson-module-parameter-names
+ ${jackson.version}
+
+
+ io.reactivex.rxjava3
+ rxjava
+ ${rxjava.version}
+
+
+ org.jspecify
+ jspecify
+ ${jspecify.version}
+
+
+ org.slf4j
+ slf4j-api
+ ${slf4j.version}
+
+
+ io.github.a2asdk
+ a2a-java-sdk-spec
+ ${a2a.sdk.version}
+
+
+ io.github.a2asdk
+ a2a-java-sdk-transport-rest
+ ${a2a.sdk.version}
+
+
+ io.github.a2asdk
+ a2a-java-sdk-http-client
+ ${a2a.sdk.version}
+
+
+ junit
+ junit
+ ${junit4.version}
+ test
+
+
+ com.google.truth
+ truth
+ ${truth.version}
+ test
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+ 3.13.0
+
+ ${java.version}
+
+
+
+
+
diff --git a/a2a/src/main/java/com/google/adk/a2a/A2AClient.java b/a2a/google-adk-a2a-core/src/main/java/com/google/adk/a2a/A2AClient.java
similarity index 100%
rename from a2a/src/main/java/com/google/adk/a2a/A2AClient.java
rename to a2a/google-adk-a2a-core/src/main/java/com/google/adk/a2a/A2AClient.java
diff --git a/a2a/src/main/java/com/google/adk/a2a/A2ASendMessageExecutor.java b/a2a/google-adk-a2a-core/src/main/java/com/google/adk/a2a/A2ASendMessageExecutor.java
similarity index 92%
rename from a2a/src/main/java/com/google/adk/a2a/A2ASendMessageExecutor.java
rename to a2a/google-adk-a2a-core/src/main/java/com/google/adk/a2a/A2ASendMessageExecutor.java
index 4beef8432..68828df94 100644
--- a/a2a/src/main/java/com/google/adk/a2a/A2ASendMessageExecutor.java
+++ b/a2a/google-adk-a2a-core/src/main/java/com/google/adk/a2a/A2ASendMessageExecutor.java
@@ -3,16 +3,21 @@
import static com.google.common.base.Strings.isNullOrEmpty;
import static java.util.concurrent.TimeUnit.MILLISECONDS;
+import com.google.adk.a2a.converters.ConversationPreprocessor;
+import com.google.adk.a2a.converters.RequestConverter;
+import com.google.adk.a2a.converters.ResponseConverter;
import com.google.adk.agents.BaseAgent;
import com.google.adk.agents.RunConfig;
import com.google.adk.artifacts.InMemoryArtifactService;
import com.google.adk.events.Event;
import com.google.adk.memory.InMemoryMemoryService;
import com.google.adk.runner.Runner;
+import com.google.adk.sessions.BaseSessionService;
import com.google.adk.sessions.InMemorySessionService;
import com.google.adk.sessions.Session;
import com.google.common.collect.ImmutableList;
import com.google.genai.types.Content;
+import io.a2a.spec.AgentCard;
import io.a2a.spec.Message;
import io.a2a.spec.TextPart;
import io.reactivex.rxjava3.core.Completable;
@@ -43,12 +48,13 @@ Single> execute(
String invocationId);
}
- private final InMemorySessionService sessionService;
+ private final BaseSessionService sessionService;
private final String appName;
@Nullable private final Runner runner;
@Nullable private final Duration agentTimeout;
private static final RunConfig DEFAULT_RUN_CONFIG =
RunConfig.builder().setStreamingMode(RunConfig.StreamingMode.NONE).setMaxLlmCalls(20).build();
+ private AgentCard agentCard;
public A2ASendMessageExecutor(InMemorySessionService sessionService, String appName) {
this.sessionService = sessionService;
@@ -57,7 +63,16 @@ public A2ASendMessageExecutor(InMemorySessionService sessionService, String appN
this.agentTimeout = null;
}
- public A2ASendMessageExecutor(BaseAgent agent, String appName, Duration agentTimeout) {
+ public A2ASendMessageExecutor(Runner runner, Duration agentTimeout, AgentCard agentCard) {
+ this.sessionService = runner.sessionService();
+ this.appName = runner.appName();
+ this.runner = runner;
+ this.agentTimeout = agentTimeout;
+ this.agentCard = agentCard;
+ }
+
+ public A2ASendMessageExecutor(
+ BaseAgent agent, String appName, Duration agentTimeout, AgentCard agentCard) {
InMemorySessionService sessionService = new InMemorySessionService();
Runner runnerInstance =
new Runner(
@@ -70,6 +85,7 @@ public A2ASendMessageExecutor(BaseAgent agent, String appName, Duration agentTim
this.appName = appName;
this.runner = runnerInstance;
this.agentTimeout = agentTimeout;
+ this.agentCard = agentCard;
}
public Single execute(
@@ -296,4 +312,8 @@ private static boolean isTimeout(@Nullable Throwable throwable) {
}
return false;
}
+
+ public AgentCard getAgentCard() {
+ return agentCard;
+ }
}
diff --git a/a2a/src/main/java/com/google/adk/a2a/RemoteA2AAgent.java b/a2a/google-adk-a2a-core/src/main/java/com/google/adk/a2a/RemoteA2AAgent.java
similarity index 99%
rename from a2a/src/main/java/com/google/adk/a2a/RemoteA2AAgent.java
rename to a2a/google-adk-a2a-core/src/main/java/com/google/adk/a2a/RemoteA2AAgent.java
index 3fd4fa552..55ada25e4 100644
--- a/a2a/src/main/java/com/google/adk/a2a/RemoteA2AAgent.java
+++ b/a2a/google-adk-a2a-core/src/main/java/com/google/adk/a2a/RemoteA2AAgent.java
@@ -4,6 +4,8 @@
import static com.google.common.base.Strings.nullToEmpty;
import com.fasterxml.jackson.databind.ObjectMapper;
+import com.google.adk.a2a.converters.EventConverter;
+import com.google.adk.a2a.converters.ResponseConverter;
import com.google.adk.agents.BaseAgent;
import com.google.adk.agents.Callbacks;
import com.google.adk.agents.InvocationContext;
diff --git a/a2a/src/main/java/com/google/adk/a2a/converters/ConversationPreprocessor.java b/a2a/google-adk-a2a-core/src/main/java/com/google/adk/a2a/converters/ConversationPreprocessor.java
similarity index 98%
rename from a2a/src/main/java/com/google/adk/a2a/converters/ConversationPreprocessor.java
rename to a2a/google-adk-a2a-core/src/main/java/com/google/adk/a2a/converters/ConversationPreprocessor.java
index 91b9237ac..d54e67a18 100644
--- a/a2a/src/main/java/com/google/adk/a2a/converters/ConversationPreprocessor.java
+++ b/a2a/google-adk-a2a-core/src/main/java/com/google/adk/a2a/converters/ConversationPreprocessor.java
@@ -1,4 +1,4 @@
-package com.google.adk.a2a;
+package com.google.adk.a2a.converters;
import com.google.adk.events.Event;
import com.google.common.collect.ImmutableList;
diff --git a/a2a/src/main/java/com/google/adk/a2a/converters/EventConverter.java b/a2a/google-adk-a2a-core/src/main/java/com/google/adk/a2a/converters/EventConverter.java
similarity index 99%
rename from a2a/src/main/java/com/google/adk/a2a/converters/EventConverter.java
rename to a2a/google-adk-a2a-core/src/main/java/com/google/adk/a2a/converters/EventConverter.java
index 19d7d5ca9..848f5264f 100644
--- a/a2a/src/main/java/com/google/adk/a2a/converters/EventConverter.java
+++ b/a2a/google-adk-a2a-core/src/main/java/com/google/adk/a2a/converters/EventConverter.java
@@ -1,4 +1,4 @@
-package com.google.adk.a2a;
+package com.google.adk.a2a.converters;
import com.google.adk.agents.InvocationContext;
import com.google.adk.events.Event;
diff --git a/a2a/src/main/java/com/google/adk/a2a/converters/PartConverter.java b/a2a/google-adk-a2a-core/src/main/java/com/google/adk/a2a/converters/PartConverter.java
similarity index 99%
rename from a2a/src/main/java/com/google/adk/a2a/converters/PartConverter.java
rename to a2a/google-adk-a2a-core/src/main/java/com/google/adk/a2a/converters/PartConverter.java
index 38d0e7910..0ac1cefb5 100644
--- a/a2a/src/main/java/com/google/adk/a2a/converters/PartConverter.java
+++ b/a2a/google-adk-a2a-core/src/main/java/com/google/adk/a2a/converters/PartConverter.java
@@ -1,4 +1,4 @@
-package com.google.adk.a2a;
+package com.google.adk.a2a.converters;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
diff --git a/a2a/src/main/java/com/google/adk/a2a/converters/RequestConverter.java b/a2a/google-adk-a2a-core/src/main/java/com/google/adk/a2a/converters/RequestConverter.java
similarity index 99%
rename from a2a/src/main/java/com/google/adk/a2a/converters/RequestConverter.java
rename to a2a/google-adk-a2a-core/src/main/java/com/google/adk/a2a/converters/RequestConverter.java
index 5936f64c2..c7d9deea4 100644
--- a/a2a/src/main/java/com/google/adk/a2a/converters/RequestConverter.java
+++ b/a2a/google-adk-a2a-core/src/main/java/com/google/adk/a2a/converters/RequestConverter.java
@@ -1,4 +1,4 @@
-package com.google.adk.a2a;
+package com.google.adk.a2a.converters;
import com.google.adk.events.Event;
import com.google.common.collect.ImmutableList;
diff --git a/a2a/src/main/java/com/google/adk/a2a/converters/ResponseConverter.java b/a2a/google-adk-a2a-core/src/main/java/com/google/adk/a2a/converters/ResponseConverter.java
similarity index 99%
rename from a2a/src/main/java/com/google/adk/a2a/converters/ResponseConverter.java
rename to a2a/google-adk-a2a-core/src/main/java/com/google/adk/a2a/converters/ResponseConverter.java
index 516a61bc0..61c61ebd4 100644
--- a/a2a/src/main/java/com/google/adk/a2a/converters/ResponseConverter.java
+++ b/a2a/google-adk-a2a-core/src/main/java/com/google/adk/a2a/converters/ResponseConverter.java
@@ -1,4 +1,4 @@
-package com.google.adk.a2a;
+package com.google.adk.a2a.converters;
import com.google.adk.events.Event;
import com.google.genai.types.Content;
diff --git a/a2a/src/test/java/com/google/adk/a2a/EventConverterTest.java b/a2a/google-adk-a2a-core/src/test/java/com/google/adk/a2a/EventConverterTest.java
similarity index 97%
rename from a2a/src/test/java/com/google/adk/a2a/EventConverterTest.java
rename to a2a/google-adk-a2a-core/src/test/java/com/google/adk/a2a/EventConverterTest.java
index 0593120fd..3cff47899 100644
--- a/a2a/src/test/java/com/google/adk/a2a/EventConverterTest.java
+++ b/a2a/google-adk-a2a-core/src/test/java/com/google/adk/a2a/EventConverterTest.java
@@ -2,6 +2,8 @@
import static com.google.common.truth.Truth.assertThat;
+import com.google.adk.a2a.converters.EventConverter;
+import com.google.adk.a2a.converters.PartConverter;
import com.google.adk.agents.BaseAgent;
import com.google.adk.agents.InvocationContext;
import com.google.adk.agents.RunConfig;
diff --git a/a2a/webservice/pom.xml b/a2a/google-adk-a2a-webservice/pom.xml
similarity index 88%
rename from a2a/webservice/pom.xml
rename to a2a/google-adk-a2a-webservice/pom.xml
index dd723aa7e..87893da42 100644
--- a/a2a/webservice/pom.xml
+++ b/a2a/google-adk-a2a-webservice/pom.xml
@@ -6,8 +6,8 @@
com.google.adk
- google-adk-parent
- 0.3.1-SNAPSHOT
+ google-adk-a2a
+ 0.3.1-SNAPSHOT
google-adk-a2a-webservice
@@ -23,8 +23,8 @@
com.google.adk
- google-adk-a2a
- ${project.version}
+ google-adk-a2a-core
+ 0.3.1-SNAPSHOT
org.springframework.boot
diff --git a/a2a/webservice/src/main/java/com/google/adk/webservice/A2ARemoteApplication.java b/a2a/google-adk-a2a-webservice/src/main/java/com/google/adk/webservice/A2ARemoteApplication.java
similarity index 100%
rename from a2a/webservice/src/main/java/com/google/adk/webservice/A2ARemoteApplication.java
rename to a2a/google-adk-a2a-webservice/src/main/java/com/google/adk/webservice/A2ARemoteApplication.java
diff --git a/a2a/webservice/src/main/java/com/google/adk/webservice/A2ARemoteConfiguration.java b/a2a/google-adk-a2a-webservice/src/main/java/com/google/adk/webservice/A2ARemoteConfiguration.java
similarity index 70%
rename from a2a/webservice/src/main/java/com/google/adk/webservice/A2ARemoteConfiguration.java
rename to a2a/google-adk-a2a-webservice/src/main/java/com/google/adk/webservice/A2ARemoteConfiguration.java
index 3c911bad9..b1cd4cb17 100644
--- a/a2a/webservice/src/main/java/com/google/adk/webservice/A2ARemoteConfiguration.java
+++ b/a2a/google-adk-a2a-webservice/src/main/java/com/google/adk/webservice/A2ARemoteConfiguration.java
@@ -2,9 +2,12 @@
import com.google.adk.a2a.A2ASendMessageExecutor;
import com.google.adk.agents.BaseAgent;
+import com.google.adk.runner.Runner;
+import io.a2a.spec.AgentCard;
import java.time.Duration;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
@@ -34,13 +37,21 @@ public class A2ARemoteConfiguration {
@Bean
public A2ASendMessageExecutor a2aSendMessageExecutor(
- BaseAgent agent,
+ @Autowired(required = false) BaseAgent agent,
+ @Autowired(required = false) Runner runner,
@Value("${a2a.remote.appName:" + DEFAULT_APP_NAME + "}") String appName,
- @Value("${a2a.remote.timeoutSeconds:" + DEFAULT_TIMEOUT_SECONDS + "}") long timeoutSeconds) {
+ @Value("${a2a.remote.timeoutSeconds:" + DEFAULT_TIMEOUT_SECONDS + "}") long timeoutSeconds,
+ AgentCard agentCard) {
logger.info(
"Initializing A2A send message executor for appName {} with timeout {}s",
appName,
timeoutSeconds);
- return new A2ASendMessageExecutor(agent, appName, Duration.ofSeconds(timeoutSeconds));
+ if (agent != null) {
+ return new A2ASendMessageExecutor(
+ agent, appName, Duration.ofSeconds(timeoutSeconds), agentCard);
+ } else if (runner != null) {
+ return new A2ASendMessageExecutor(runner, Duration.ofSeconds(timeoutSeconds), agentCard);
+ }
+ throw new IllegalStateException("Neither BaseAgent nor Runner is available!");
}
}
diff --git a/a2a/webservice/src/main/java/com/google/adk/webservice/A2ARemoteController.java b/a2a/google-adk-a2a-webservice/src/main/java/com/google/adk/webservice/A2ARemoteController.java
similarity index 77%
rename from a2a/webservice/src/main/java/com/google/adk/webservice/A2ARemoteController.java
rename to a2a/google-adk-a2a-webservice/src/main/java/com/google/adk/webservice/A2ARemoteController.java
index fbb7cf108..45991a82c 100644
--- a/a2a/webservice/src/main/java/com/google/adk/webservice/A2ARemoteController.java
+++ b/a2a/google-adk-a2a-webservice/src/main/java/com/google/adk/webservice/A2ARemoteController.java
@@ -1,9 +1,12 @@
package com.google.adk.webservice;
+import io.a2a.spec.AgentCard;
import io.a2a.spec.SendMessageRequest;
import io.a2a.spec.SendMessageResponse;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
@@ -32,4 +35,10 @@ public SendMessageResponse sendMessage(@RequestBody SendMessageRequest request)
logger.debug("Responding with remote A2A payload: {}", response);
return response;
}
+
+ /** Get agent card information */
+ @GetMapping(path = "/v1/.well-known/agent-card.json", produces = "application/json")
+ public ResponseEntity getAgentCard() {
+ return ResponseEntity.ok(service.getAgentCard());
+ }
}
diff --git a/a2a/webservice/src/main/java/com/google/adk/webservice/A2ARemoteService.java b/a2a/google-adk-a2a-webservice/src/main/java/com/google/adk/webservice/A2ARemoteService.java
similarity index 95%
rename from a2a/webservice/src/main/java/com/google/adk/webservice/A2ARemoteService.java
rename to a2a/google-adk-a2a-webservice/src/main/java/com/google/adk/webservice/A2ARemoteService.java
index 6f4613bfe..71aad0a04 100644
--- a/a2a/webservice/src/main/java/com/google/adk/webservice/A2ARemoteService.java
+++ b/a2a/google-adk-a2a-webservice/src/main/java/com/google/adk/webservice/A2ARemoteService.java
@@ -1,7 +1,8 @@
package com.google.adk.webservice;
import com.google.adk.a2a.A2ASendMessageExecutor;
-import com.google.adk.a2a.ResponseConverter;
+import com.google.adk.a2a.converters.ResponseConverter;
+import io.a2a.spec.AgentCard;
import io.a2a.spec.JSONRPCError;
import io.a2a.spec.Message;
import io.a2a.spec.MessageSendParams;
@@ -85,4 +86,8 @@ private static SendMessageResponse errorResponse(SendMessageRequest request, Thr
JSONRPCError jsonrpcError = new JSONRPCError(ERROR_CODE_INTERNAL_ERROR, message, null);
return new SendMessageResponse(request != null ? request.getId() : null, jsonrpcError);
}
+
+ public AgentCard getAgentCard() {
+ return executor.getAgentCard();
+ }
}
diff --git a/a2a/pom.xml b/a2a/pom.xml
index 35b0651bc..3fd67bc29 100644
--- a/a2a/pom.xml
+++ b/a2a/pom.xml
@@ -1,117 +1,21 @@
-
-
- 4.0.0
-
+
+ 4.0.0
+
com.google.adk
google-adk-parent
0.3.1-SNAPSHOT
- google-adk-a2a
- jar
- Google ADK A2A Integration
+ google-adk-a2a
+ google-adk-a2a
+ pom
-
- 17
- ${java.version}
- 0.3.0.Beta1
- ${project.version}
- 33.0.0-jre
- 2.19.0
- 3.1.5
- 1.0.0
- 2.0.17
- 2.38.0
- 1.4.4
- 4.13.2
-
+
+ google-adk-a2a-core
+ google-adk-a2a-webservice
+
-
-
- com.google.adk
- google-adk
- ${google.adk.version}
-
-
- com.google.guava
- guava
- ${guava.version}
-
-
- com.google.errorprone
- error_prone_annotations
- ${errorprone.version}
-
-
- com.fasterxml.jackson.core
- jackson-annotations
- ${jackson.version}
-
-
- com.fasterxml.jackson.core
- jackson-databind
- ${jackson.version}
-
-
- com.fasterxml.jackson.module
- jackson-module-parameter-names
- ${jackson.version}
-
-
- io.reactivex.rxjava3
- rxjava
- ${rxjava.version}
-
-
- org.jspecify
- jspecify
- ${jspecify.version}
-
-
- org.slf4j
- slf4j-api
- ${slf4j.version}
-
-
- io.github.a2asdk
- a2a-java-sdk-spec
- ${a2a.sdk.version}
-
-
- io.github.a2asdk
- a2a-java-sdk-transport-rest
- ${a2a.sdk.version}
-
-
- io.github.a2asdk
- a2a-java-sdk-http-client
- ${a2a.sdk.version}
-
-
- junit
- junit
- ${junit4.version}
- test
-
-
- com.google.truth
- truth
- ${truth.version}
- test
-
-
-
-
-
- org.apache.maven.plugins
- maven-compiler-plugin
- 3.13.0
-
- ${java.version}
-
-
-
-
+
diff --git a/contrib/samples/a2a_basic/pom.xml b/contrib/samples/a2a_basic/pom.xml
index 59e10c375..61214b2e6 100644
--- a/contrib/samples/a2a_basic/pom.xml
+++ b/contrib/samples/a2a_basic/pom.xml
@@ -33,7 +33,7 @@
com.google.adk
- google-adk-a2a
+ google-adk-a2a-core
${google-adk-a2a.version}
@@ -55,25 +55,7 @@
true
-
- org.codehaus.mojo
- build-helper-maven-plugin
- 3.6.0
-
-
- add-source
- generate-sources
-
- add-source
-
-
-
- .
-
-
-
-
-
+
org.apache.maven.plugins
maven-source-plugin
diff --git a/contrib/samples/a2a_basic/A2AAgent.java b/contrib/samples/a2a_basic/src/main/java/com/example/a2a_basic/A2AAgent.java
similarity index 100%
rename from contrib/samples/a2a_basic/A2AAgent.java
rename to contrib/samples/a2a_basic/src/main/java/com/example/a2a_basic/A2AAgent.java
diff --git a/contrib/samples/a2a_basic/A2AAgentRun.java b/contrib/samples/a2a_basic/src/main/java/com/example/a2a_basic/A2AAgentRun.java
similarity index 99%
rename from contrib/samples/a2a_basic/A2AAgentRun.java
rename to contrib/samples/a2a_basic/src/main/java/com/example/a2a_basic/A2AAgentRun.java
index 406a8dcbc..428817dfe 100644
--- a/contrib/samples/a2a_basic/A2AAgentRun.java
+++ b/contrib/samples/a2a_basic/src/main/java/com/example/a2a_basic/A2AAgentRun.java
@@ -78,7 +78,7 @@ private List processRunRequest(Content inputContent) {
}
public static void main(String[] args) {
- String primeAgentUrl = args.length > 0 ? args[0] : "http://localhost:9876/a2a/prime_agent";
+ String primeAgentUrl = args.length > 0 ? args[0] : "http://localhost:8080/a2a/remote";
LlmAgent agent = A2AAgent.createRootAgent(primeAgentUrl);
A2AAgentRun a2aRun = new A2AAgentRun(agent);
diff --git a/contrib/samples/a2a_remote/pom.xml b/contrib/samples/a2a_remote/pom.xml
index ee65bddec..36c7b2b3c 100644
--- a/contrib/samples/a2a_remote/pom.xml
+++ b/contrib/samples/a2a_remote/pom.xml
@@ -9,7 +9,7 @@
google-adk-parent
0.3.1-SNAPSHOT
-
+
google-adk-sample-a2a-remote
Google ADK - Sample - A2A Remote Prime Service
Spring Boot service that exposes the remote prime-check agent over the A2A REST interface.
@@ -48,14 +48,14 @@
com.google.adk
- google-adk-a2a
- ${project.version}
+ google-adk-a2a-core
+ 0.3.1-SNAPSHOT
com.google.adk
google-adk-a2a-webservice
- ${project.version}
+ 0.3.1-SNAPSHOT
@@ -95,35 +95,6 @@
spring-boot-maven-plugin
${spring-boot.version}
-
- org.codehaus.mojo
- build-helper-maven-plugin
- 3.6.0
-
-
- add-source
- generate-sources
-
- add-source
-
-
-
- .
-
-
-
-
-
-
- org.apache.maven.plugins
- maven-source-plugin
-
-
- **/*.jar
- target/**
-
-
-
org.codehaus.mojo
exec-maven-plugin
diff --git a/contrib/samples/a2a_remote/src/main/java/com/google/adk/samples/a2a_remote/RemoteA2AApplication.java b/contrib/samples/a2a_remote/src/main/java/com/google/adk/samples/a2a_remote/RemoteA2AApplication.java
index 53be8d1d0..8f7c89562 100644
--- a/contrib/samples/a2a_remote/src/main/java/com/google/adk/samples/a2a_remote/RemoteA2AApplication.java
+++ b/contrib/samples/a2a_remote/src/main/java/com/google/adk/samples/a2a_remote/RemoteA2AApplication.java
@@ -3,6 +3,10 @@
import com.google.adk.agents.BaseAgent;
import com.google.adk.samples.a2a_remote.remote_prime_agent.Agent;
import com.google.adk.webservice.A2ARemoteConfiguration;
+import io.a2a.spec.AgentCapabilities;
+import io.a2a.spec.AgentCard;
+import io.a2a.spec.AgentSkill;
+import java.util.List;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;
@@ -21,4 +25,30 @@ public static void main(String[] args) {
public BaseAgent primeAgent() {
return Agent.ROOT_AGENT;
}
+
+ @Bean
+ public AgentCard agentCard() {
+ return new AgentCard.Builder()
+ .name("check_prime_agent")
+ .capabilities(new AgentCapabilities(false, false, false, List.of()))
+ .description(
+ "An agent specialized in checking whether numbers are prime. It can efficiently determine the primality of individual numbers or lists of numbers.")
+ .url("http://localhost:8080/a2a/remote/v1/message:send")
+ .version("1.0.0")
+ .defaultInputModes(List.of("text/plain"))
+ .defaultOutputModes(List.of("application/json"))
+ .skills(
+ List.of(
+ new AgentSkill(
+ "prime_checking",
+ "Prime Number Checking",
+ "Check if numbers in a list are prime using efficient mathematical algorithms",
+ List.of("mathematical", "computation", "prime", "numbers"),
+ List.of(),
+ List.of(),
+ List.of(),
+ List.of())))
+ .security(List.of())
+ .build();
+ }
}
diff --git a/contrib/samples/a2a_remote/remote_prime_agent/Agent.java b/contrib/samples/a2a_remote/src/main/java/com/google/adk/samples/a2a_remote/remote_prime_agent/Agent.java
similarity index 100%
rename from contrib/samples/a2a_remote/remote_prime_agent/Agent.java
rename to contrib/samples/a2a_remote/src/main/java/com/google/adk/samples/a2a_remote/remote_prime_agent/Agent.java
diff --git a/contrib/samples/a2a_remote/remote_prime_agent/agent.json b/contrib/samples/a2a_remote/src/main/java/com/google/adk/samples/a2a_remote/remote_prime_agent/agent.json
similarity index 100%
rename from contrib/samples/a2a_remote/remote_prime_agent/agent.json
rename to contrib/samples/a2a_remote/src/main/java/com/google/adk/samples/a2a_remote/remote_prime_agent/agent.json
diff --git a/pom.xml b/pom.xml
index d174f6ad8..0f52647c7 100644
--- a/pom.xml
+++ b/pom.xml
@@ -28,11 +28,10 @@
core
dev
maven_plugin
+ a2a
contrib/langchain4j
contrib/samples
tutorials/city-time-weather
- a2a
- a2a/webservice