Releases: getaxonflow/axonflow-sdk-java
Releases · getaxonflow/axonflow-sdk-java
Release 5.7.0
AxonFlow Java SDK v5.7.0
Installation
Maven:
<dependency>
<groupId>com.getaxonflow</groupId>
<artifactId>axonflow-sdk</artifactId>
<version>5.7.0</version>
</dependency>Gradle:
implementation 'com.getaxonflow:axonflow-sdk:5.7.0'Added
- Rich
ApproveStepResponse/RejectStepResponse— both classes now carry
the same shape as the step-gate response:decisionresolves to"allow"or
"block",retryContextmirrors the gate response retry state,approvedBy
/approvedAt/rejectedBy/rejectedAtcarry reviewer identity,
approvalIdis the deterministic HITL queue UUID,policiesMatched
reconstructs the governance trail. The legacyworkflowId/stepId/
statusfields remain for back-compat. planIdon approve/reject responses — populated when the response comes
from the MAP plan-scoped endpoint; empty on WCP plane responses. Same types
work across both endpoints.- Back-compat 3-arg constructors —
new ApproveStepResponse(workflowId, stepId, status)
andnew RejectStepResponse(workflowId, stepId, status)still compile, so
existing test fixtures and SDK consumers keep working without changes. getPendingPlanApprovals/getPendingPlanApprovalsAsync— new client
methods that list MAP-plane pending approvals
(GET /api/v1/plans/approvals/pending), the counterpart of
getPendingApprovalsfor the WCP plane. The two-arg form accepts an
optionalplanIdfilter so reviewer tools can scope the listing to one
plan. Available on Evaluation+ licenses (same tier gate as the MAP step
approve/reject endpoints).PendingApproval.planId— populated on MAP-plane entries, null on
WCP-plane entries. Mirrors the approve/reject asymmetry.PendingApproval
also gainsstepIndex,decision,decisionReason, andapprovalStatus
so reviewer tools can render the full approval context without a second
request. The existing 6-arg back-compat constructor still works; new
fields default to null / 0 for callers that don't pass them.
Fixed
approveStep/rejectStep/getPendingApprovalsendpoint URLs —
all three previously targeted non-existent paths under
/api/v1/workflow-control/and would fail against a real AxonFlow server.
Corrected to the canonical/api/v1/workflows/{id}/steps/{step_id}/(approve|reject)
and/api/v1/workflows/approvals/pendingroutes. Customers using these
methods against a live deployment were receiving 404s; this release makes
them work.PendingApprovalsResponsegetters and JSON field names aligned with the
wire shape — the class previously declaredgetApprovals()/getTotal()
over a JSON body with keysapprovals/total, which never matched the
server (pending_approvals/count). Getters renamed to
getPendingApprovals()/getCount()with the correct JSON bindings.
Callers that readresponse.getApprovals()orresponse.getTotal()need
to update to the new getter names.
Deprecated
DO_NOT_TRACK=1as an AxonFlow telemetry opt-out — scheduled for removal after 2026-05-05 in the next major release. UseAXONFLOW_TELEMETRY=offinstead. The SDK emits a one-line migration warning whenDO_NOT_TRACK=1is the active control andAXONFLOW_TELEMETRY=offis not also set.
Unchanged
approveStep(workflowId, stepId)/rejectStep(workflowId, stepId, reason)
method signatures onAxonFloware unchanged — only the response fields grew.
Release 5.6.0
AxonFlow Java SDK v5.6.0
Installation
Maven:
<dependency>
<groupId>com.getaxonflow</groupId>
<artifactId>axonflow-sdk</artifactId>
<version>5.6.0</version>
</dependency>Gradle:
implementation 'com.getaxonflow:axonflow-sdk:5.6.0'Added
retry_contextandidempotency_keysupport on the step gate —
StepGateResponsenow carries aRetryContextobject on every gate call with the
true(workflow_id, step_id)lifecycle:gateCount,completionCount,
priorCompletionStatus(PriorCompletionStatusenum —
NONE/COMPLETED/GATED_NOT_COMPLETED),priorOutputAvailable,
priorOutput,priorCompletionAt,firstAttemptAt,lastAttemptAt,
lastDecision, andidempotencyKey. Prefer these to the legacycached/
decisionSourcefields.stepGate(workflowId, stepId, request, options)overload — new 4-arg overload
takingStepGateOptions. UseStepGateOptions.includePriorOutput()to send
?include_prior_output=truesoretryContext.priorOutputis populated when a prior
/completehas landed. Existing 3-arg overload keeps its signature and delegates
withStepGateOptions.defaults().StepGateRequest.idempotencyKey— caller-supplied opaque business-level key
(max 255 chars; validated at construction). Immutable once recorded on the first gate
call for a(workflow, step); subsequent gate/complete calls must pass the same key.MarkStepCompletedRequest.idempotencyKey— must match the key set on the
corresponding gate call, if any. Mismatch (including missing-vs-set on either side)
surfaces as a typedIdempotencyKeyMismatchException.IdempotencyKeyMismatchException— new typed exception in
com.getaxonflow.sdk.exceptions. Thrown bystepGateandmarkStepCompletedwhen
the platform returns HTTP 409 witherror.code == "IDEMPOTENCY_KEY_MISMATCH".
SurfacesworkflowId,stepId,expectedIdempotencyKey,receivedIdempotencyKey,
plus inheritedstatusCode=409anderrorCode="IDEMPOTENCY_KEY_MISMATCH".RetryContext,PriorCompletionStatus,StepGateOptions— exported in
WorkflowTypes.
Fixed
- 409 dispatch on step gate/complete — previously all 409 responses on
markStepCompletedfell through to a genericAxonFlowException(..., 409, "VERSION_CONFLICT"), conflating step idempotency conflicts with plan version
conflicts. The step gate/complete call sites now inspect the 409 body and dispatch
toIdempotencyKeyMismatchExceptionwhenerror.codematches, falling back to a
genericAxonFlowExceptionotherwise. Plan update paths (which also use 409) are
untouched.
Deprecated
StepGateResponse.isCached()andStepGateResponse.getDecisionSource()—
marked@Deprecated. UsegetRetryContext().getGateCount() > 1and
getRetryContext().getPriorCompletionStatus()instead. Planned for removal in a
future major version.
Compatibility
Companion to the platform change that introduces retry_context on
POST /api/v1/workflows/{workflow_id}/steps/{step_id}/gate. Additive only — existing
callers that never set idempotencyKey or pass StepGateOptions see no behavior
change. Binary-compatibility preserved: old StepGateRequest, StepGateResponse, and
MarkStepCompletedRequest constructors kept alongside new ones.
Release 5.5.0
AxonFlow Java SDK v5.5.0
Installation
Maven:
<dependency>
<groupId>com.getaxonflow</groupId>
<artifactId>axonflow-sdk</artifactId>
<version>5.5.0</version>
</dependency>Gradle:
implementation 'com.getaxonflow:axonflow-sdk:5.5.0'Added
mapTimeoutfield onAxonFlowConfig— brings Java to parity with
the TypeScript, Python, and Go SDKs (all three already had a separate
MAP timeout). The sharedtimeout(default 60s) only covered single-
request endpoints; MAP plans routinely take 60-120s because they
chain multiple LLM calls end-to-end, and the global timeout was
cutting them off. New constantDEFAULT_MAP_TIMEOUT = 120s, new
builder methodAxonFlowConfig.builder().mapTimeout(Duration.ofSeconds(300)),
and new environment variableAXONFLOW_MAP_TIMEOUT_SECONDS. All
plan-lifecycle methods (generatePlan,executePlan,getPlanStatus,
updatePlan,cancelPlan,resumePlan,rollbackPlan,
getPlanVersions) now use a plan-specificOkHttpClientclone with
callTimeout/readTimeout/writeTimeoutset tomapTimeout.
Shares connection pool + interceptors + dispatcher with the main
client; only the timeout attributes differ. KeepmapTimeout≤
serverAXONFLOW_MAP_MAX_TIMEOUT_SECONDS(default 300s) ≤
front-door ALBidle_timeout.timeout_seconds(default 300s), or the
connection is killed mid-stream.
Release 5.4.0
AxonFlow Java SDK v5.4.0
Installation
Maven:
<dependency>
<groupId>com.getaxonflow</groupId>
<artifactId>axonflow-sdk</artifactId>
<version>5.4.0</version>
</dependency>Gradle:
implementation 'com.getaxonflow:axonflow-sdk:5.4.0'Changes
See CHANGELOG.md for details.
Release 5.3.0
AxonFlow Java SDK v5.3.0
Installation
Maven:
<dependency>
<groupId>com.getaxonflow</groupId>
<artifactId>axonflow-sdk</artifactId>
<version>5.3.0</version>
</dependency>Gradle:
implementation 'com.getaxonflow:axonflow-sdk:5.3.0'Changes
See CHANGELOG.md for details.
Release 5.2.0
AxonFlow Java SDK v5.2.0
Installation
Maven:
<dependency>
<groupId>com.getaxonflow</groupId>
<artifactId>axonflow-sdk</artifactId>
<version>5.2.0</version>
</dependency>Gradle:
implementation 'com.getaxonflow:axonflow-sdk:5.2.0'Changes
See CHANGELOG.md for details.
Release 5.1.0
AxonFlow Java SDK v5.1.0
Installation
Maven:
<dependency>
<groupId>com.getaxonflow</groupId>
<artifactId>axonflow-sdk</artifactId>
<version>5.1.0</version>
</dependency>Gradle:
implementation 'com.getaxonflow:axonflow-sdk:5.1.0'Changes
See CHANGELOG.md for details.
Release 5.0.0
AxonFlow Java SDK v5.0.0
Installation
Maven:
<dependency>
<groupId>com.getaxonflow</groupId>
<artifactId>axonflow-sdk</artifactId>
<version>5.0.0</version>
</dependency>Gradle:
implementation 'com.getaxonflow:axonflow-sdk:5.0.0'Changes
See CHANGELOG.md for details.
Release 4.3.0
AxonFlow Java SDK v4.3.0
Installation
Maven:
<dependency>
<groupId>com.getaxonflow</groupId>
<artifactId>axonflow-sdk</artifactId>
<version>4.3.0</version>
</dependency>Gradle:
implementation 'com.getaxonflow:axonflow-sdk:4.3.0'Changes
See CHANGELOG.md for details.
Release 4.2.0
AxonFlow Java SDK v4.2.0
Installation
Maven:
<dependency>
<groupId>com.getaxonflow</groupId>
<artifactId>axonflow-sdk</artifactId>
<version>4.2.0</version>
</dependency>Gradle:
implementation 'com.getaxonflow:axonflow-sdk:4.2.0'Changes
See CHANGELOG.md for details.