Release v2.3.0
@axonflow/openclaw v2.3.0
Installation
npm install @axonflow/openclawOr via OpenClaw plugin manager:
openclaw plugins install @axonflow/openclawCompanion plugin release to AxonFlow agent v7.7.0. Surfaces the V1
Plugin Pro structured upgrade envelope to the operator on Community
SaaS rate-limit hits, and adds 5 new agent-callable Pro tools so
OpenClaw agents reach the same V1 Pro toolset that the
axonflow-claude-plugin / axonflow-cursor-plugin /
axonflow-codex-plugin plugins auto-discover from the AxonFlow agent's
MCP server. Total agent-callable tools: 5 → 10.
Added
-
V1 Plugin Pro upgrade-prompt envelope handling in
src/upgrade-prompt.ts— sourced intoaxonflow-client.tsso every
4xx response frommcpCheckInput/mcpCheckOutputruns through
envelope detection. When the agent returns a 429 (daily-quota) or
403 (graduated / Pro-only) with the structured envelope shape:- Parses
upgrade.wording+upgrade.buy_urland forwards it to the
host plugin logger (api.logger.info) at most once per UTC day.
Surfaced to OpenClaw operators via the standard plugin log channel. - Honours
Retry-After/resets_atby stamping a back-off file at
${AXONFLOW_CACHE_DIR or platform default}/throttle-until.
governance.tschecks the gate before each governed call and
short-circuits during the back-off window (no thundering-herd
retries against the agent). - Handles both bare and JSON-RPC-wrapped envelope shapes (the latter
is what the new V1 Pro MCP tools deliver viawriteMCPGateError).
- Parses
-
axonflow_get_tenant_idagent-callable tool — returns the
install's tenant_id, current tier (Free / Pro / pro_expired),
endpoint, and the locked V1 upgrade URLs. The other three plugin
hosts (claude / cursor / codex) get this tool from the agent's MCP
server via auto-discovery; OpenClaw doesn't proxy that MCP server,
so we register a local equivalent built from the same status surface
recover.sh statusexposes. Keeps cross-plugin behaviour consistent
for the "what's my tenant ID?" question. -
Four V1 Plugin Pro proxy tools registered locally so OpenClaw
agents reach the same V1 Pro toolset thataxonflow-claude-plugin/
axonflow-cursor-plugin/axonflow-codex-pluginauto-discover from
the agent's MCP server. OpenClaw doesn't proxy
/api/v1/mcp-servertools/list, so these are registered as
code-definedAgentToolDefs whoseexecute()forwards to the agent
via a single newAxonFlowClient.callMCPTool(name, args)helper:axonflow_request_approval— Free 1/7d rolling, Pro unlimited.axonflow_create_tenant_policy— Free 2 active max, Pro unlimited.axonflow_get_cost_estimate— Pro-only; Free callers get the
locked V1feature_pro_onlyenvelope.axonflow_list_pro_features— Free + Pro, locked feature list
(5 differentiators + $9.99 / 90-day pricing).
Total agent-callable tools: 5 → 10 (combining
axonflow_get_tenant_id
above with these four). -
clawhub/2.3.0/SKILL.md— frozen per-version skill record for the
v2.3.0 release. Documents the new agent-callable tools alongside the
existing 5 governance tools.
Fixed
AxonFlowClient.handleEnvelope— pre-filter on
status === 429 || status === 403was dropping JSON-RPC-wrapped
envelope responses that come back over HTTP 200 with
result.isError = true(the path the agent's
mcp_v1_pro_tools.go writeMCPGateErroruses). Removed the
pre-filter;handleV1Envelopealready encodes the full
status-vs-shape decision and now sees all three envelope-bearing
paths (429 daily-quota, 403 graduated / Pro-only, 200 + JSON-RPC
gate). The 4 new proxy tools depend on the 200 path; without this
fix, Free callers got the envelope content as a generickind=ok
result instead of a cleankind=envelopewith the upgrade prompt
surfaced.
Internal
tests/upgrade-prompt.test.ts— 26 unit assertions across
detectEnvelope,retryAfterMs,resolveDeadlineMs,
isThrottleActive,shouldShowPromptToday, the fullhandleEnvelope
state machine, and theV1_LIMIT_TYPESlocked enumeration.runtime-e2e/v1_pro_envelope_surface/— drives the compiled
dist/upgrade-prompt.jsagainst a live 429 envelope captured from
a Free-tier tenant ontry.getaxonflow.compast the 200/day cap.runtime-e2e/v1_pro_proxy_tools/— drives the compiled
dist/agent-tools.js+dist/axonflow-client.jsagainst a real
registered tenant onhttps://try.getaxonflow.com. Asserts
end-to-end that all 5 V1 Pro agent-callable tools dispatch
correctly:axonflow_list_pro_featuresreturns the locked
5-differentiators shape;axonflow_get_cost_estimateon a Free
tenant lands thefeature_pro_onlyenvelope with the locked buy
URL + logger wording + stamped throttle file (and the subsequent
agent-toolexecute()honours the throttle gate);
axonflow_request_approvalandaxonflow_create_tenant_policy
return non-emptyapproval_id/policy_idon first Free call,
with top-levelsuccess: truealongsidesubmitted: true/
created: trueon the response body.tests/agent-tools.test.ts+tests/registration.test.ts—
updated for the new tool count (5 → 10).
Versions touched
package.json: 2.2.0 → 2.3.0package-lock.json: 2.2.0 → 2.3.0src/version.ts(VERSIONconstant — Jest asserts parity): 2.2.0 → 2.3.0- This CHANGELOG entry