Skip to Content
This documentation is provided with the HEAT environment and is relevant for this HEAT instance only.
RunnersSystem Utilssystem-protobuf-extract

system-protobuf-extract (platform, system-utils)

Platform reserved. Decodes HEAT capture DataPacket / DataPacketBundle trees from a parent input-node and emits scoped JSON records. Subset of hydrate-protobuf-v2 targets without requiring core-utils.

Parent: single input-node.

Configuration

PropertyRequiredDefaultDescription
extractionTargetYesEntityDataEvent, EntityState, or SimulationFrame
outputFormatNojsonOnly json supported
lineDelimitedJsonNofalseOne record per line; forced true when incrementalHydration is on
incrementalHydrationNofalseAppend new parent outputs using watermark
enableUploadDeduplicationNofalseSkip upload when md5 matches prior output
readWindowBytesNo8388608Bounded read per parent blob
batchSizeNo100Max parent outputs per run
timeBudgetSecondsNo300Cooperative time budget
filterOriginUuidNoEmit only records from this origin_uuid
filterOriginIndexNoEmit only records for captureIdentity.origins[index]
filterEntityIdNoEmit only records for this simulation entity id
filterEntityIndexNoEmit only records for captureIdentity.entities[index] (lane)
filterEntityNameNoExact entity name match (case-sensitive)
updateSessionCaptureIdentityNosmart defaultMerge observed origins/entities into session captureIdentity. Default true without index filters; default false when filterOriginIndex or filterEntityIndex is set

Output shape

Wrapped JSON (default):

{ "records": [ { "parent_output_id": 1, "origin_uuid": "…", "origin_index": 0, "entity_id": 42, "entity_name": "Pilot-1", "entity_index": 0, "extraction_target": "EntityDataEvent" } ] }

NDJSON when lineDelimitedJson: true (required for incremental append).

Capture identity and lanes

For multi-user SIM templates, use one registry extract node plus parallel lane nodes. See Capture identity lanes.

{ "extractionTarget": "EntityDataEvent", "filterEntityIndex": 0, "updateSessionCaptureIdentity": false, "lineDelimitedJson": true, "incrementalHydration": true }

Authoring guidance

  • Prefer EntityDataEvent over SimulationFrame when possible.
  • Run parallel branches per target or per lane instead of one deep hydrate chain.
  • Pair with system-arbex-js and heat-system-next-dimension for dashboards.

When core-utils is available, hydrate-protobuf-v2 remains an alternative with CSV output and merge ecosystem.

Shipped preset

heat-capture-mainline-scoped: discovery leaf, identity registry, two entity-index lanes, and scoped mainline. See Capture session templates.