Skip to content
This repository was archived by the owner on Aug 24, 2026. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 28 additions & 0 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
name: Build

on:
push:
branches: [ main ]
pull_request:
branches: [ main ]

jobs:
build:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
java: [ '21', '25' ]
name: JDK ${{ matrix.java }}
steps:
- uses: actions/checkout@v4

- name: Set up JDK ${{ matrix.java }}
uses: actions/setup-java@v4
with:
distribution: temurin
java-version: ${{ matrix.java }}
cache: maven

- name: Build with Maven
run: mvn -B compile -ntp -Dmaven.compiler.source=${{ matrix.java }} -Dmaven.compiler.target=${{ matrix.java }}
2 changes: 1 addition & 1 deletion COMMANDS_EXAMPLE.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ Reference commands for running the ACP Java Client with each supported agent and
- **Build the uber-jar** first with `mvn clean install`
- Load the environment variables with `dotenv -x .env` or `export KEY=VAR` or `set -x KEY VAR` using the appropriate mechanism of your shell.
- Have an ACP compatible client installed: pi, opencode, claude, etc. See [Agents and providers](README.md#agents-and-providers)
- Install the JBang Java `acp-client`: `jbang app install --name acp io.quarkiverse.ai:acp-java-client:0.1.0-SNAPSHOT:runner`
- Install the JBang Java `acp-client`: `jbang app install --name acp io.smallrye.ai:acp-java-client:0.1.0-SNAPSHOT:runner`

## OpenCode

Expand Down
14 changes: 7 additions & 7 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -86,36 +86,36 @@ By default, generated classes are written to `target/generated-sources` under th
The existing (reviewed and manually amended) schema classes live in:

```
schema/src/main/java/io/quarkiverse/agentclientprotocol/sdk/spec/schema/v1/
schema/src/main/java/io/smallrye/agentclientprotocol/sdk/spec/schema/v1/
```

The package name `io.quarkiverse.agentclientprotocol.sdk.spec.schema.v1` corresponds to the `v1` schema directory. When a `v2` spec is released, classes would be generated into `.schema.v2`.
The package name `io.smallrye.agentclientprotocol.sdk.spec.schema.v1` corresponds to the `v1` schema directory. When a `v2` spec is released, classes would be generated into `.schema.v2`.

### How to regenerate

To regenerate the Java classes after updating the schema file, run `JSonSchemaGenerator` from the `schema` module:

```shell
mvn compile exec:java -Dexec.mainClass=io.quarkiverse.acp.schema.JSonSchemaGenerator -pl schema
mvn compile exec:java -Dexec.mainClass=io.smallrye.acp.schema.JSonSchemaGenerator -pl schema
```

Generated files will be written to `schema/target/generated-sources/`. Review them and copy into `schema/src/main/java/` when ready.

To generate directly into the source tree (overwriting existing classes):

```shell
mvn compile exec:java -Dexec.mainClass=io.quarkiverse.acp.schema.JSonSchemaGenerator -pl schema \
mvn compile exec:java -Dexec.mainClass=io.smallrye.acp.schema.JSonSchemaGenerator -pl schema \
-DoutputDir=src/main/java
```

The version segment (e.g. `v1`) is automatically derived from the schema path and appended to the base package. For the default path `/schema/acp/v1/schema.json`, it generates classes in the `io.quarkiverse.agentclientprotocol.sdk.spec.schema.v1` package.
The version segment (e.g. `v1`) is automatically derived from the schema path and appended to the base package. For the default path `/schema/acp/v1/schema.json`, it generates classes in the `io.smallrye.agentclientprotocol.sdk.spec.schema.v1` package.

### Generator parameters

| System property | Description | Default |
|------------------|------------------------------------------------------------|----------------------------------------------------------|
| `-DschemaPath` | Classpath resource path to the JSON schema | `/schema/acp/v1/schema.json` |
| `-DbasePackage` | Base Java package; version is appended from the schema path| `io.quarkiverse.agentclientprotocol.sdk.spec.schema` |
| `-DbasePackage` | Base Java package; version is appended from the schema path| `io.smallrye.agentclientprotocol.sdk.spec.schema` |
| `-DoutputDir` | Output root directory for generated files | `target/generated-sources` |

### What it generates
Expand All @@ -134,7 +134,7 @@ The version segment (e.g. `v1`) is automatically derived from the schema path an
2. Place it under `schema/src/main/resources/schema/acp/<version>/schema.json` (e.g. `v2`)
3. Regenerate the classes by pointing to the new schema path:
```shell
mvn compile exec:java -Dexec.mainClass=io.quarkiverse.acp.schema.JSonSchemaGenerator -pl schema \
mvn compile exec:java -Dexec.mainClass=io.smallrye.acp.schema.JSonSchemaGenerator -pl schema \
-DschemaPath=/schema/acp/v2/schema.json
```
This automatically generates classes into `schema/target/generated-sources/` under the `.schema.v2` package.
Expand Down
6 changes: 3 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ jbang acp --prompt "What is 6+6?"

If you plan to use the tool outside of this project, then install it using the maven GAV
```shell
jbang app install --name acp io.quarkiverse.ai:acp-java-client:0.1.0-SNAPSHOT:runner
jbang app install --name acp io.smallrye.ai:acp-java-client:0.1.0-SNAPSHOT:runner

cd /java/project/to/code/using/ai
acp --prompt "Say hello"
Expand Down Expand Up @@ -245,12 +245,12 @@ Log levels are configured in `client/src/main/resources/application.properties`.

```shell
# Enable debug logging
java -Dquarkus.log.category.\"io.quarkiverse\".level=DEBUG \
java -Dquarkus.log.category.\"io.smallrye\".level=DEBUG \
-jar client/target/acp-java-client-0.1.0-SNAPSHOT-runner.jar \
--prompt "Say Hello"

# Enable trace logging (raw JSON-RPC messages)
java -Dquarkus.log.category.\"io.quarkiverse\".level=TRACE \
java -Dquarkus.log.category.\"io.smallrye\".level=TRACE \
-jar client/target/acp-java-client-0.1.0-SNAPSHOT-runner.jar \
--prompt "Say Hello"
```
Expand Down
6 changes: 3 additions & 3 deletions client/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
<modelVersion>4.0.0</modelVersion>

<parent>
<groupId>io.quarkiverse.ai</groupId>
<groupId>io.smallrye.ai</groupId>
<artifactId>acp-java-parent</artifactId>
<version>0.1.0-SNAPSHOT</version>
</parent>
Expand Down Expand Up @@ -33,14 +33,14 @@

<!-- Core module (Acp Client, transport) -->
<dependency>
<groupId>io.quarkiverse.ai</groupId>
<groupId>io.smallrye.ai</groupId>
<artifactId>acp-java-core</artifactId>
<version>0.1.0-SNAPSHOT</version>
</dependency>

<!-- Schema module (v1 types used directly in AcpClientCommand) -->
<dependency>
<groupId>io.quarkiverse.ai</groupId>
<groupId>io.smallrye.ai</groupId>
<artifactId>acp-java-schema</artifactId>
<version>0.1.0-SNAPSHOT</version>
</dependency>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
package io.quarkiverse.acp;

import io.quarkiverse.acp.toolbox.GitUtil;
import io.quarkiverse.acp.toolbox.ProjectUtil;
import io.quarkiverse.acp.registry.AcpRegistryManager;
import io.quarkiverse.acp.registry.RegistryCommand;
import io.quarkiverse.agentclientprotocol.sdk.client.AcpClient;
import io.quarkiverse.agentclientprotocol.sdk.client.AcpSyncClient;
import io.quarkiverse.agentclientprotocol.sdk.client.transport.AgentParameters;
import io.quarkiverse.agentclientprotocol.sdk.client.transport.StdioAcpClientTransport;
import io.quarkiverse.agentclientprotocol.sdk.spec.schema.v1.*;
package io.smallrye.acp;

import io.smallrye.acp.toolbox.GitUtil;
import io.smallrye.acp.toolbox.ProjectUtil;
import io.smallrye.acp.registry.AcpRegistryManager;
import io.smallrye.acp.registry.RegistryCommand;
import io.smallrye.agentclientprotocol.sdk.client.AcpClient;
import io.smallrye.agentclientprotocol.sdk.client.AcpSyncClient;
import io.smallrye.agentclientprotocol.sdk.client.transport.AgentParameters;
import io.smallrye.agentclientprotocol.sdk.client.transport.StdioAcpClientTransport;
import io.smallrye.agentclientprotocol.sdk.spec.schema.v1.*;
import org.aesh.command.CommandDefinition;
import org.jboss.logging.Logger;

Expand Down Expand Up @@ -141,9 +141,9 @@ public CommandResult execute(CommandInvocation invocation) {
logLevel = ProjectUtil.resolveValueWithPrecedence(logLevel, "ACP_LOG_LEVEL", null);
if (logLevel != null && !logLevel.isEmpty()) {
Level level = Level.parse(logLevel.toUpperCase());
java.util.logging.Logger.getLogger("io.quarkiverse").setLevel(level);
java.util.logging.Logger.getLogger("io.quarkiverse.acp").setLevel(level);
java.util.logging.Logger.getLogger("io.quarkiverse.agentclientprotocol").setLevel(level);
java.util.logging.Logger.getLogger("io.smallrye").setLevel(level);
java.util.logging.Logger.getLogger("io.smallrye.acp").setLevel(level);
java.util.logging.Logger.getLogger("io.smallrye.agentclientprotocol").setLevel(level);
java.util.logging.Logger rootLogger = java.util.logging.Logger.getLogger("");
if (rootLogger.getLevel().intValue() > level.intValue()) {
rootLogger.setLevel(level);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package io.quarkiverse.acp;
package io.smallrye.acp;

import io.quarkus.runtime.QuarkusApplication;
import io.quarkus.runtime.annotations.QuarkusMain;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package io.quarkiverse.acp.registry;
package io.smallrye.acp.registry;

import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonProperty;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package io.quarkiverse.acp.registry;
package io.smallrye.acp.registry;

import org.aesh.command.Command;
import org.aesh.command.CommandDefinition;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package io.quarkiverse.acp.registry;
package io.smallrye.acp.registry;

import org.aesh.command.Command;
import org.aesh.command.CommandDefinition;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package io.quarkiverse.acp.registry;
package io.smallrye.acp.registry;

import org.aesh.command.Command;
import org.aesh.command.CommandDefinition;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package io.quarkiverse.acp.registry;
package io.smallrye.acp.registry;

import org.aesh.command.Command;
import org.aesh.command.CommandDefinition;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package io.quarkiverse.acp.toolbox;
package io.smallrye.acp.toolbox;

import org.jboss.logging.Logger;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package io.quarkiverse.acp.toolbox;
package io.smallrye.acp.toolbox;

import org.jboss.logging.Logger;

Expand Down
4 changes: 2 additions & 2 deletions client/src/main/resources/application.properties
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,6 @@ quarkus.banner.enabled=false

# Logging configuration
quarkus.log.level=INFO
quarkus.log.category."io.quarkiverse.acp".level=INFO
quarkus.log.category."io.quarkiverse.agentclientprotocol".level=INFO
quarkus.log.category."io.smallrye.acp".level=INFO
quarkus.log.category."io.smallrye.agentclientprotocol".level=INFO
quarkus.log.console.format=%d{HH:mm:ss,SSS} %-5p [%c{1}] %s%e%n
4 changes: 2 additions & 2 deletions client/src/main/resources/logging.properties
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ formatter.COLOR.pattern=%d{HH:mm:ss,SSS} %-5p [%c{1}] %s%e%n
logger.handlers=CONSOLE

# Application logger
logger.io.quarkiverse.acp.level=INFO
logger.io.smallrye.acp.level=INFO

# ACP client logger
logger.io.quarkiverse.agentclientprotocol.level=INFO
logger.io.smallrye.agentclientprotocol.level=INFO
4 changes: 2 additions & 2 deletions core/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
<modelVersion>4.0.0</modelVersion>

<parent>
<groupId>io.quarkiverse.ai</groupId>
<groupId>io.smallrye.ai</groupId>
<artifactId>acp-java-parent</artifactId>
<version>0.1.0-SNAPSHOT</version>
</parent>
Expand All @@ -17,7 +17,7 @@
<dependencies>
<!-- Schema module (versioned schema classes) -->
<dependency>
<groupId>io.quarkiverse.ai</groupId>
<groupId>io.smallrye.ai</groupId>
<artifactId>acp-java-schema</artifactId>
<version>0.1.0-SNAPSHOT</version>
</dependency>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
package io.quarkiverse.agentclientprotocol.sdk.client;
package io.smallrye.agentclientprotocol.sdk.client;

import io.quarkiverse.agentclientprotocol.sdk.client.transport.StdioAcpClientTransport;
import io.quarkiverse.agentclientprotocol.sdk.spec.schema.v1.*;
import io.quarkiverse.agentclientprotocol.sdk.spec.schema.v1.Error;
import io.smallrye.agentclientprotocol.sdk.client.transport.StdioAcpClientTransport;
import io.smallrye.agentclientprotocol.sdk.spec.schema.v1.*;
import io.smallrye.agentclientprotocol.sdk.spec.schema.v1.Error;

import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
package io.quarkiverse.agentclientprotocol.sdk.client;
package io.smallrye.agentclientprotocol.sdk.client;

import io.quarkiverse.agentclientprotocol.sdk.client.transport.StdioAcpClientTransport;
import io.quarkiverse.agentclientprotocol.sdk.spec.schema.v1.RequestPermissionRequest;
import io.quarkiverse.agentclientprotocol.sdk.spec.schema.v1.RequestPermissionResponse;
import io.quarkiverse.agentclientprotocol.sdk.spec.schema.v1.SessionNotification;
import io.smallrye.agentclientprotocol.sdk.client.transport.StdioAcpClientTransport;
import io.smallrye.agentclientprotocol.sdk.spec.schema.v1.RequestPermissionRequest;
import io.smallrye.agentclientprotocol.sdk.spec.schema.v1.RequestPermissionResponse;
import io.smallrye.agentclientprotocol.sdk.spec.schema.v1.SessionNotification;

import java.time.Duration;
import java.util.function.Consumer;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package io.quarkiverse.agentclientprotocol.sdk.client;
package io.smallrye.agentclientprotocol.sdk.client;

import io.quarkiverse.agentclientprotocol.sdk.spec.schema.v1.*;
import io.smallrye.agentclientprotocol.sdk.spec.schema.v1.*;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package io.quarkiverse.agentclientprotocol.sdk.client.transport;
package io.smallrye.agentclientprotocol.sdk.client.transport;

import java.util.ArrayList;
import java.util.Arrays;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package io.quarkiverse.agentclientprotocol.sdk.client.transport;
package io.smallrye.agentclientprotocol.sdk.client.transport;

import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.core.JsonGenerator;
Expand All @@ -8,7 +8,7 @@
import com.fasterxml.jackson.databind.SerializerProvider;
import com.fasterxml.jackson.databind.module.SimpleModule;
import com.fasterxml.jackson.databind.ser.std.StdSerializer;
import io.quarkiverse.agentclientprotocol.sdk.spec.schema.v1.TextContent;
import io.smallrye.agentclientprotocol.sdk.spec.schema.v1.TextContent;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

Expand Down
6 changes: 3 additions & 3 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>

<groupId>io.quarkiverse.ai</groupId>
<groupId>io.smallrye.ai</groupId>
<artifactId>acp-java-parent</artifactId>
<version>0.1.0-SNAPSHOT</version>
<packaging>pom</packaging>
Expand Down Expand Up @@ -71,12 +71,12 @@

<!-- Project modules -->
<dependency>
<groupId>io.quarkiverse.ai</groupId>
<groupId>io.smallrye.ai</groupId>
<artifactId>acp-client-schema</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>io.quarkiverse.ai</groupId>
<groupId>io.smallrye.ai</groupId>
<artifactId>acp-client-core</artifactId>
<version>${project.version}</version>
</dependency>
Expand Down
2 changes: 1 addition & 1 deletion schema/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
<modelVersion>4.0.0</modelVersion>

<parent>
<groupId>io.quarkiverse.ai</groupId>
<groupId>io.smallrye.ai</groupId>
<artifactId>acp-java-parent</artifactId>
<version>0.1.0-SNAPSHOT</version>
</parent>
Expand Down
Loading
Loading