Skip to content
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
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -16,3 +16,4 @@ logs/


.flattened-pom.xml
samples/src/main/resources/spn_agent_credentials.json
8 changes: 6 additions & 2 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Changelog

## [Unreleased]
## [0.1.0] — 2026-09-18

- Send SSE heartbeat comments on streaming endpoints (`message:stream`, `tasks/{id}:subscribe`) at a configurable
interval (`a2at.server.heartbeat-interval-seconds`, default 15 seconds, `0` disables). Keeps intermediaries
Expand All @@ -11,6 +11,10 @@
`TaskResult`, `BusinessFailure`, and the message records). Source- and binary-compatible; callers
that mutate the collections returned by these getters now receive `UnsupportedOperationException`
instead of silently corrupting engine-owned snapshots.
- Template the sample OMC agent credentials file: the tracked
`samples/src/main/resources/spn_agent_credentials.json` is replaced by
`spn_agent_credentials.example.json` (real file is now git-ignored; copy the example to run the
demos). Missing credentials now fail with an actionable message instead of a bare NPE.

## [0.0.10] — 2026-09-16

Expand All @@ -35,7 +39,7 @@
carries no taskId. Invalid negotiation metadata on a bare message now fails explicitly instead of being silently
treated as a normal successful response.
- Converge non-functional formatting and javadoc drift between `main` and `dev` so the branches differ only in the
Eastcom platform integration.
instruction-platform integration.

## [0.0.8] — 2026-09-13

Expand Down
21 changes: 15 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -38,20 +38,20 @@ subscription remains open until the host-defined terminal event, explicit cancel

### 1. Add Maven dependency

The current engine release is `0.0.9` on [Maven Central](https://repo.maven.apache.org/maven2/net/openan/workflow/sdk/).
The current engine release is `0.1.0` on [Maven Central](https://repo.maven.apache.org/maven2/net/openan/workflow/sdk/).

A2A-T SDK `1.1.0` is published to Maven Central. Maven resolves it automatically; no SDK source checkout or local SDK
A2A-T SDK `1.1.1` is published to Maven Central. Maven resolves it automatically; no SDK source checkout or local SDK
build is required. The engine depends only on
`a2a-t-core`; host agents using content generation explicitly add `a2a-t-client:1.1.0`. A dispatched-agent service that
validates received extension content adds `a2a-t-server:1.1.0`. See the bilingual
`a2a-t-core`; host agents using content generation explicitly add `a2a-t-client:1.1.1`. A dispatched-agent service that
validates received extension content adds `a2a-t-server:1.1.1`. See the bilingual
[Developer Guide](docs/en/DEVELOPER_GUIDE.md) / [开发者指南](docs/zh/DEVELOPER_GUIDE.md) for dependency and
upgrade guidance.

```xml
<dependency>
<groupId>net.openan.workflow.sdk</groupId>
<artifactId>workflow-engine</artifactId>
<version>0.0.9</version>
<version>0.1.0</version>
</dependency>
```

Expand All @@ -61,10 +61,19 @@ For Spring Boot server-side integration:
<dependency>
<groupId>net.openan.workflow.sdk</groupId>
<artifactId>spring-boot-starter</artifactId>
<version>0.0.9</version>
<version>0.1.0</version>
</dependency>
```

### Agent credentials for the samples

The sample demos read `samples/src/main/resources/spn_agent_credentials.json`, which is
git-ignored. Copy `spn_agent_credentials.example.json` to that name to run against the bundled
demo OMC — the checked-in defaults pair with the demo's embedded OMC server. When targeting a
real OMC, replace the endpoint and user name, and encrypt the password with `CredentialCrypto`
(set `A2AT_CRED_KEY`, then use the `enc:`-prefixed output). Tests use the tracked test resource
and need no setup.

### 2. Execute a workflow

The complete, compiled example is [HostQuickStart.java](samples/src/main/java/dev/openan/workflow/engine/examples/demo/HostQuickStart.java).
Expand Down
15 changes: 2 additions & 13 deletions config/checkstyle/checkstyle-suppressions.xml
Original file line number Diff line number Diff line change
Expand Up @@ -20,18 +20,7 @@
<suppress checks="HideUtilityClassConstructor"
files="SpringWorkbenchApplication\.java"/>

<!-- Cohesive protocol/demo entry methods exceeding the length budget
(EastcomOrderSimulatorServer exists on the dev branch only) -->
<!-- Cohesive protocol/demo entry methods exceeding the length budget -->
<suppress checks="MethodLength"
files="SpringSpnDemo\.java|EastcomOrderSimulatorServer\.java"/>

<!-- Vendor adapter: wire-compatibility parse/fallback complexity is intrinsic
(dev branch only) -->
<suppress checks="CyclomaticComplexity"
files="EastcomOrderSimulatorServer\.java"/>

<!-- Conventional lowercase static-final holders: loggers, mappers, encoding flags
(OrderGatewayClientRuntime exists on the dev branch only) -->
<suppress checks="ConstantName"
files="EastcomOrderSimulatorServer\.java|OrderGatewayClientRuntime\.java"/>
files="SpringSpnDemo\.java"/>
</suppressions>
14 changes: 6 additions & 8 deletions config/spotbugs/spotbugs-exclude.xml
Original file line number Diff line number Diff line change
Expand Up @@ -79,15 +79,13 @@
</Or>
</Match>

<!-- Vendor SDK adapter classes: the vendor API shape is out of our control. -->
<!-- The gateway adapter and protocol simulator packages exist only on the dev
branch: their vendor-driven API shape, catch-and-continue request loops,
token-service login retries, and Spring-style configuration holders are
accepted there. On main the package does not exist and this filter
matches nothing. -->
<Match>
<Or>
<Class name="~.*OrderHttpClientAdapter.*"/>
<Class name="~.*OrderGatewayClientRuntime.*"/>
<Class name="~.*EastcomOrderByteBufWorkaround.*"/>
<Class name="~.*MockGatewayServer.*"/>
<Class name="~.*MockOrderHttpSessionClient.*"/>
</Or>
<Package name="dev.openan.workflow.engine.examples.gateway"/>
</Match>

<!-- Samples/demo code: accepted demo-quality items; review on next touch.
Expand Down
2 changes: 1 addition & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@
</modules>

<properties>
<revision>0.0.10-SNAPSHOT</revision>
<revision>0.1.0-SNAPSHOT</revision>
<maven.compiler.release>17</maven.compiler.release>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<a2a.java.sdk.version>1.2.0.Final</a2a.java.sdk.version>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,16 @@ public static AgentCard cardFromResource(String resourcePath) throws Exception {

/** Path of a classpath resource as an absolute file path (demo credentials lookup). */
public static String resourcePath(String resourcePath) {
return OmcAgentLauncher.class.getClassLoader().getResource(resourcePath).getPath();
var url = OmcAgentLauncher.class.getClassLoader().getResource(resourcePath);
if (url == null) {
throw new IllegalStateException(
"Classpath resource not found: "
+ resourcePath
+ ". If this is the OMC credentials file, copy"
+ " spn_agent_credentials.example.json to spn_agent_credentials.json"
+ " and fill in the target OMC credentials.");
}
return url.getPath();
}

/** Load an agentcard resource, bind to the address declared in its first interface, and start. */
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
"request_fields": {
"grantType": "password",
"userName": "admin",
"value": "enc:mqoWa/ImSwZB8kOr:/thu6iISlnmXbyD0UCXJ8U0F0iOnYMvqdg==",
"value": "Admin@123",
"ipaddr": "*"
},
"token_field": "accessSession",
Expand All @@ -20,7 +20,7 @@
"request_fields": {
"grantType": "password",
"userName": "admin",
"value": "enc:mqoWa/ImSwZB8kOr:/thu6iISlnmXbyD0UCXJ8U0F0iOnYMvqdg==",
"value": "Admin@123",
"ipaddr": "*"
},
"token_field": "accessSession",
Expand Down
Loading