ObjectStackObjectStack

Node Executor

Node Executor protocol schemas

@module automation/node-executor

Node Executor Plugin Protocol — Wait Node Pause/Resume

Defines the specification for node executor plugins, with a focus on

the wait node executor that supports flow pause and external-event

resume (signal, manual, webhook, condition).

The protocol covers:

  • WaitResumePayload: The payload delivered when a paused flow is resumed

  • WaitExecutorConfig: Configuration for the wait executor plugin

  • NodeExecutorDescriptor: Generic node executor plugin descriptor

Source: packages/spec/src/automation/node-executor.zod.ts

TypeScript Usage

import { NodeExecutorDescriptor, WaitEventType, WaitExecutorConfig, WaitResumePayload, WaitTimeoutBehavior } from '@objectstack/spec/automation';
import type { NodeExecutorDescriptor, WaitEventType, WaitExecutorConfig, WaitResumePayload, WaitTimeoutBehavior } from '@objectstack/spec/automation';

// Validate data
const result = NodeExecutorDescriptor.parse(data);

NodeExecutorDescriptor

Node executor plugin descriptor

Properties

PropertyTypeRequiredDescription
idstringUnique executor plugin identifier
namestringDisplay name
nodeTypesstring[]FlowNodeAction types this executor handles
versionstringPlugin version (semver)
descriptionstringoptionalExecutor description
supportsPausebooleanWhether the executor supports async pause/resume
supportsCancellationbooleanWhether the executor supports mid-execution cancellation
supportsRetrybooleanWhether the executor supports retry on failure
configSchemaRefstringoptionalJSON Schema $ref for executor-specific config

WaitEventType

Wait event type determining how a paused flow is resumed

Allowed Values

  • timer
  • signal
  • webhook
  • manual
  • condition

WaitExecutorConfig

Wait node executor plugin configuration

Properties

PropertyTypeRequiredDescription
defaultTimeoutMsintegerDefault timeout in ms (default: 24 hours)
defaultTimeoutBehaviorEnum<'fail' | 'continue' | 'fallback'>Default behavior when wait timeout is exceeded
conditionPollIntervalMsintegerPolling interval for condition waits in ms (default: 30s)
conditionMaxPollsintegerMax polling attempts for condition waits (0 = unlimited)
webhookUrlPatternstringURL pattern for webhook resume endpoints
persistCheckpointsbooleanPersist wait checkpoints to durable storage
maxPausedExecutionsintegerMax concurrent paused executions (0 = unlimited)

WaitResumePayload

Payload for resuming a paused wait node

Properties

PropertyTypeRequiredDescription
executionIdstringExecution ID of the paused flow
checkpointIdstringCheckpoint ID to resume from
nodeIdstringWait node ID being resumed
eventTypeEnum<'timer' | 'signal' | 'webhook' | 'manual' | 'condition'>Event type that triggered resume
signalNamestringoptionalSignal name (when eventType is signal)
webhookPayloadRecord<string, any>optionalWebhook request payload (when eventType is webhook)
resumedBystringoptionalUser ID or system identifier that triggered resume
resumedAtstringISO 8601 timestamp of the resume event
variablesRecord<string, any>optionalVariables to merge into flow context upon resume

WaitTimeoutBehavior

Behavior when a wait node exceeds its timeout

Allowed Values

  • fail
  • continue
  • fallback

On this page