Releases: clawnify/clawflow
Release list
v1.3.1
Agent-node selector fields now mirror the openclaw agent CLI flags 1:1 and are all template-resolvable.
- CLI-aligned naming:
agentId→agent,session→sessionKey. Old names kept as deprecated aliases (still work; non-blocking validator warning). Existing flows run unchanged. - New selectors:
sessionId(--session-id),channel(--channel). - Dynamic targets:
agent/sessionKey/sessionId/channelare interpolated, so a prior node can compute the target (e.g.agent: "{{ route.slug }}") — closes the gap whereagentId/sessionreached the CLI un-interpolated. - Internals: new declarative
NODE_FIELD_MODESregistry (single source of truth for field resolution, compile-time exhaustiveness-checked) read by both the runner and validator.
Full diff: #47
v1.3.0
feat(agent): target sessions via session field on agent nodes
do: agent nodes can now target a specific OpenClaw session with a new session field, mapping to openclaw agent --session-key. Previously only agentId (→ --agent) existed, so a session key placed in agentId couldn't resolve and OpenClaw silently fell back to main.
agentId→--agent(configured agent slug);session→--session-key(session key)- The two compose, faithful to OpenClaw's selector model: a bare key is scoped by
agentId; anagent:-prefixed key is self-scoping. - Validation rejects a session-key-shaped
agentIdwith a hint to usesession.
PR #46.
v1.2.9
flow_edit — steer restructuring to wrap/move (#44)
The flow_edit tool description now includes condition-oriented wrap and move-into-else examples, and the clawflow skill gains an Editing existing flows section. Both steer authors to use wrap/move for restructuring an existing flow (making a group of nodes conditional, nesting in a loop, reparenting) instead of re-sending the whole flow as one large edit — which is slower and can stall mid-generation.
No runtime behavior change: wrap/move into conditions already worked.
v1.2.8 — declare providers/defaultProvider in configSchema
Fixes gateway crash-loop when plugins.clawflow.config carries providers/defaultProvider (added to the type in 1.2.6 but not the configSchema, which is additionalProperties:false). Required for clawnify provider-selection rollout (#828/#833).
v1.2.6 — selectable providers for ai nodes
Adds provider selection for do: ai nodes so flow AI can run on a chosen backend instead of racing env keys.
AiNode.provider+PluginConfig.providers/defaultProvider; built-ins openrouter/anthropic/openai.- A selected provider is the single credential path — a stray
OPENROUTER_API_KEYcan't silently win. - Model tiers map to the provider's model IDs;
baseUrltolerates a trailing/v1. - Fully backwards compatible (no provider → env auto-detect).
Fixes the shared-key BYOK bypass (clawnify #828 / PR #41).
v1.2.5 — rename skill flow→clawflow + template docs
Skill rename: flow → clawflow
Skill names are effectively global identifiers, so the generic flow risked
collision/ambiguity. Renamed to match the plugin id (clawflow):
skills/flow→skills/clawflowopenclaw.plugin.jsonskills path + SKILL.md frontmattername→clawflow
Template docs: whole-payload dumps
Agents were adding a redundant code node (JSON.stringify(state.inputs) →
{{ raw_body }}) to drop a full payload into a task. Added {{ inputs }} /
{{ inputs | json }} examples (bare object refs render as JSON, not
[object Object]) and a "Common mistake" callout against serializing with a
code node.
No engine/runtime changes.
v1.2.4 — fix: plugin not loading at startup (activation.onStartup)
Fix
The manifest had no activation field. Since OpenClaw 2026.5.x, omitting
activation.onStartup no longer implicitly startup-loads a plugin — the gateway
discovers clawflow (status: loaded) but never runs its register(). Result:
zero flow_* tools, no approval hook, and — when config.serve is set — the flow
HTTP server never starts. Every inbound flow entry point (HTTP triggers,
webhook-to-flow dispatch) silently returned 502.
Added activation: { onStartup: true }. ClawFlow registers tools, a hook, and a
long-lived server, all of which must run at gateway startup.
Verified on a live gateway: [clawflow] flow server listening on :<port>/flows/...,
GET /flows/health → {"ok":true,...}. Before the patch the same gateway never
bound the port.
Also aligns the manifest version (was stale at 1.2.2) with the package version.
PR #39.
v1.2.3
v1.2.2
Patch release.
Fixes
flow_run/flow_read/flow_publishfailed with"require is not defined"whenever called with afile:argument. The plugin'sresolveFlowFile/versionsDir/listVersions/readVersionhelpers used inlinerequire("path")/require("fs"), but the package ships as"type": "module"andtsc --module NodeNextemits those calls verbatim — so they blew up under the ESM plugin loader. Inline flows (nofile:) sidestepped the broken path. Replaced with top-levelnode:fs/node:pathimports.
v1.2.1 — README refresh
Patch release: refreshed logo image in README. No source or behavior changes vs v1.2.0.