sendHttpRequest output change. Trace destination changes affect workflow result payloads returned by @outputai/core, the API workflow result endpoints, and CLI JSON output.
What changed
Trace destinations are now sparse. When a trace destination is unavailable, Output.ai omits that key instead of returning it asnull.
Before, workflow results always included both local and remote destination keys:
@outputai/coreworkflow result envelopesPOST /workflow/runGET /workflow/{id}/resultGET /workflow/{id}/runs/{rid}/resultoutput workflow run ... --jsonoutput workflow result <workflow-id> --json
Migration steps
Opt into sendHttpRequest response headers and body
Breaking change: sendHttpRequest no longer returns response headers or body by default. The default response now includes only url, status, statusText, and ok.
If your workflow reads response.headers or response.body, pass responseOptions.
Before
After
includeHeaders: true are redacted by header name. Response bodies are returned as-is, so only opt into includeBody when the body is safe to store in workflow history and trace files.
Stop checking for null destinations
If your code checks for null, switch to checking whether a destination key exists or has a truthy value.
Before
After
Treat an empty destination object as “no trace destination”
If your UI or automation previously expected{ local: null, remote: null }, update it to treat {} the same way.
Before
After
Update API and CLI JSON consumers
Scripts that parse API responses or CLI JSON output should not assume thatlocal and remote are always present.
jq filters to handle missing keys:
// empty filter works with both old null values and new omitted keys. If your script checks for exact object equality, update that assertion to accept {}.
Other trace behavior changes
When a workflow hasdisableTrace: true, Output.ai no longer invokes the internal getTraceDestinations activity. The result still includes trace.destinations: {}, but avoids scheduling work that cannot produce a trace destination.
Trace files can now include internal activities such as getTraceDestinations and sendHttpRequest. These activities are visible in Temporal and can affect workflow behavior, so they are now represented in trace output.
Checklist
- Add
responseOptions.includeBodyand/orresponseOptions.includeHeadersanywhere workflow code readssendHttpRequestresponse body or headers. - Replace
destination === nullchecks with truthy or key-existence checks. - Treat
trace.destinations: {}as “no trace destination available.” - Update API response assertions that expected both
localandremotekeys. - Update CLI
--jsonparsing scripts that assumedtrace.destinations.localandtrace.destinations.remotealways existed. - If you inspect trace files directly, expect internal activities to appear.