Skip to content

Releases: clawnify/clawflow

v1.3.1

Choose a tag to compare

@pallaoro pallaoro released this 08 Jul 12:57
8cfc3c1

Agent-node selector fields now mirror the openclaw agent CLI flags 1:1 and are all template-resolvable.

  • CLI-aligned naming: agentIdagent, sessionsessionKey. 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/channel are interpolated, so a prior node can compute the target (e.g. agent: "{{ route.slug }}") — closes the gap where agentId/session reached the CLI un-interpolated.
  • Internals: new declarative NODE_FIELD_MODES registry (single source of truth for field resolution, compile-time exhaustiveness-checked) read by both the runner and validator.

Full diff: #47

v1.3.0

Choose a tag to compare

@pallaoro pallaoro released this 08 Jul 07:15
fb9f266

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; an agent:-prefixed key is self-scoping.
  • Validation rejects a session-key-shaped agentId with a hint to use session.

PR #46.

v1.2.9

Choose a tag to compare

@pallaoro pallaoro released this 07 Jul 18:30
bdb56f6

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

Choose a tag to compare

@pallaoro pallaoro released this 07 Jul 13:02
54ae91f

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

Choose a tag to compare

@pallaoro pallaoro released this 07 Jul 08:55
d9b2a49

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_KEY can't silently win.
  • Model tiers map to the provider's model IDs; baseUrl tolerates 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

Choose a tag to compare

@pallaoro pallaoro released this 26 Jun 20:34
b5f3931

Skill rename: flowclawflow

Skill names are effectively global identifiers, so the generic flow risked
collision/ambiguity. Renamed to match the plugin id (clawflow):

  • skills/flowskills/clawflow
  • openclaw.plugin.json skills path + SKILL.md frontmatter nameclawflow

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)

Choose a tag to compare

@pallaoro pallaoro released this 26 Jun 18:49
14bfe5b

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

Choose a tag to compare

@pallaoro pallaoro released this 27 May 08:17
cd063a0
  • Send OpenRouter app attribution headers (HTTP-Referer: https://clawnify.com, X-OpenRouter-Title: Clawnify) on AI step inference calls so usage shows up on Clawnify's OpenRouter app page.

v1.2.2

Choose a tag to compare

@pallaoro pallaoro released this 20 May 08:34
423dc7d

Patch release.

Fixes

  • flow_run / flow_read / flow_publish failed with "require is not defined" whenever called with a file: argument. The plugin's resolveFlowFile / versionsDir / listVersions / readVersion helpers used inline require("path") / require("fs"), but the package ships as "type": "module" and tsc --module NodeNext emits those calls verbatim — so they blew up under the ESM plugin loader. Inline flows (no file:) sidestepped the broken path. Replaced with top-level node:fs / node:path imports.

v1.2.1 — README refresh

Choose a tag to compare

@pallaoro pallaoro released this 19 May 11:36
6dab623

Patch release: refreshed logo image in README. No source or behavior changes vs v1.2.0.