Skip to main content
View as Markdown

Code Actions

The code family runs custom TypeScript as an automation step for logic that the declarative actions don't cover. One operator, runTypescript. The source is a named execute(context) function whose body is type-checked at server startup.

Prop Description
code TypeScript source for a named execute(context) function. In TS configs, wrap with String(function execute(context: CodeContext) { … }) for IDE autocompletion. Required.
inputData Template-resolved key-value pairs passed as context.inputData.
input Template-resolved key-value pairs passed as context.input (same resolution rules as inputData).
packages npm package specifiers with optional version pins (e.g. lodash, date-fns@3.6.0, @scope/pkg@1.2.3). Resolved/installed at app start or via sovrium install.
timeout Execution timeout in ms (1000–300000, default 30000).

Code Context

The execute function receives a context object:

Member Description
context.trigger The trigger payload.
context.steps Outputs of prior steps, keyed by step name.
context.inputData Template-resolved inputs from the inputData prop.
context.input Template-resolved inputs from the input prop.
context.env Environment variables (sensitive values redacted in logs).
context.actions Invoke native actions or reusable templates from within the code.
context.packages The declared npm packages, accessed by name.
context.log Structured logging: info, warn, error.
- name: enrich-lead
  type: code
  operator: runTypescript
  props:
    packages: [date-fns]
    inputData: { url: '{{trigger.data.profile_url}}' }
    code: |
      async function execute(context) {
        const res = await context.actions.http.get({ url: context.inputData.url })
        context.log.info('fetched', res.status)
        return { score: res.body.score, fetchedAt: new Date().toISOString() }
      }