Skip to content

v2026.5.22

Choose a tag to compare

@steipete steipete released this 22 May 12:15
57a9967

Changes

  • Memoize Ajv schema compilation for repeated validation paths to avoid retained SchemaEnv/closure growth in long-running processes. Thanks to @KrasimirKralev (PR #98) and @cmi525 (Issue #96).
  • Improve workflow resume compatibility for stateKey naming by accepting both workflow_resume_ and workflow-resume_ prefixes, including cleanup against the resolved on-disk key. Thanks to @brownetw-ai (PR #4).
  • Add per-step workflow retry policies (max, backoff, delay_ms, max_delay_ms, jitter) with retry-aware stderr logs and dry-run visibility. Thanks to @scottgl9 (PR #84).
  • Add optional approval identity constraints for workflow gates (approval.initiated_by, approval.required_approver, approval.require_different_approver) with resume-time enforcement via LOBSTER_APPROVAL_APPROVED_BY and envelope metadata for integrations. Thanks to @coolmanns (Issue #44).
  • Clarify pipeline: vs run: usage for llm.invoke / llm_task.invoke in workflow files, and add regression coverage to ensure stdin: $step.stdout is forwarded as LLM artifacts for llm_task.invoke pipeline steps. Thanks to @RatkoJ (Issue #41).
  • Add lobster graph workflow visualization with mermaid (default), dot, and ascii outputs, including step-type nodes, stdin data-flow edges, conditional dependency labels (when/condition), approval-gate diamond shapes, and --args-json label resolution support. Thanks to @vignesh07 (Issue #53).
  • Add workflow composition via workflow: + workflow_args, including recursive sub-workflow execution, cycle detection, and dry-run visibility for workflow steps. Sub-workflow approval/input halts are rejected with resume-state cleanup. Thanks to @scottgl9 (PR #73).
  • Add per-step on_error workflow policies (stop|continue|skip_rest) for partial-failure recovery, with structured step error fields (error, errorMessage) for condition-based branching. Thanks to @scottgl9 (PR #72).
  • Add per-step workflow timeout_ms handling, including timeout-triggered aborts, SIGKILL for timed shell steps, and dry-run annotations. Thanks to @scottgl9 (PR #74).
  • Add workflow condition comparison operators <, <=, >, and >= with strict numeric semantics (booleans/null do not coerce), including mixed boolean-expression support with &&/||. Thanks to @scottgl9 (PR #71).
  • Add workflow-level LLM cost tracking with _meta.cost summaries, per-step usage attribution, and optional cost_limit controls with warn/stop actions (plus custom pricing via LOBSTER_LLM_PRICING_JSON). Thanks to @scottgl9 (PR #70).
  • Add parallel workflow steps with branch fan-out, wait: all|any, block-level timeout support, and branch result references in downstream steps. Thanks to @scottgl9 (PR #69).
  • Add for_each workflow steps for per-item sub-step execution over arrays, including loop-scoped vars (item_var/index_var), optional batch_size + pause_ms, and collected iteration outputs for downstream steps. Thanks to @scottgl9 (PR #68).
  • Add pipe-based template filters (for example upper, length, join, default, date) for the template command with quote-aware filter parsing and chain evaluation. Thanks to @scottgl9 (PR #67).

npm

Proof

  • pnpm test: 234/234 passing
  • pnpm lint: passed with 6 existing warnings
  • npm pack --dry-run --json: package contents checked before publish
  • npm view @clawdbot/lobster@2026.5.22 version dist-tags dist.tarball dist.integrity time --json: verified version, latest dist-tag, tarball, integrity, publish time