Extracted Fields
After processor.runSync(tree, file), normalized field metadata is available at file.data.aimdFields.
What Stays As Arrays
These scopes are still simple string[], and each string is an identifier:
varstepcheckref_stepref_varref_figref_mediacite
What Uses Structured Objects
var_definitions[]mirrors simplevarfields withid,type,default,title,description,examples, and raw AIMDkwargsvar_table[]exposes canonicalidplus optional table-leveltitle,description,examples, and raw AIMDkwargsvar_table[].subvars[]exposes canonicalidplus optional column-leveltitle,description, andexamplesclient_assigner[]exposesid,mode,dependent_fields,assigned_fields, andfunction_sourceextracted fromassigner(config, function ...)client blocksworkflow[]exposes workflow definitions from fencedworkflowblocks, includingversion,id,nodes,assigners, transition ids, normalizedfrom/toarrays, transitioninputs, grouped targetassign,logic, anddefault_initial_nodequiz[]already exposesidfig[]exposesid,src,title, andlegendfrom fencedfigblocksmedia[]exposesid,kind,src,mime,provider,poster,title, andlegendfrom fencedmediablocksrefs[]exposes BibTeX entries from fencedrefsblocks withid,entry_type,raw, normalizedfields, and display fields such astitle,author,year,doi, andurlstep_hierarchy[]exposesid,step,parent_id,prev_id,next_id,estimated_duration_ms,timer_mode,has_check, andhas_children
Example
json
{
"var": ["temperature"],
"var_definitions": [
{
"id": "temperature",
"type": "float",
"default": 36.5,
"title": "Temperature",
"description": "Ambient temperature in Celsius",
"examples": [25.0, 37.0],
"kwargs": {
"title": "Temperature",
"description": "Ambient temperature in Celsius",
"examples": [25.0, 37.0],
"gt": 0
}
}
],
"var_table": [
{
"id": "samples",
"scope": "var_table",
"title": "Samples",
"description": "Measured sample rows",
"examples": ["S-001 row"],
"subvars": [
{
"id": "sample_id",
"title": "Sample ID",
"description": "Tube identifier",
"examples": ["S-001"]
},
{
"id": "concentration",
"title": "Concentration",
"examples": [1.0]
}
]
}
],
"client_assigner": [
{
"id": "calculate_total",
"runtime": "client",
"mode": "auto",
"dependent_fields": ["a", "b"],
"assigned_fields": ["total"],
"function_source": "function calculate_total({ a, b }) { return { total: a + b }; }"
}
],
"workflow": [
{
"version": "airalogy.workflow.v1",
"id": "parameter_optimization",
"title": "Parameter Optimization Workflow",
"nodes": [
{
"id": "prep",
"protocol": "./protocols/sample-prep/protocol.aimd",
"title": "Sample Preparation"
},
{
"id": "analysis",
"protocol": "./protocols/analysis/protocol.aimd",
"title": "QC Analysis"
}
],
"assigners": [
{
"id": "optimize_parameters",
"runtime": "python",
"entrypoint": "./assigners/optimize_parameters.py:assign"
}
],
"transitions": [
{
"id": "retry_after_qc_failure",
"from": ["analysis"],
"to": ["prep"],
"when": "${analysis.check.pass_qc.checked} == false",
"run": "optimize_parameters",
"inputs": {
"summary": "${analysis.var.summary}",
"failed_metrics": "${analysis.var.failed_metrics}"
},
"max_iterations": 5,
"assign": {
"prep": {
"var.target_temperature_c": "${retry_after_qc_failure.outputs.recommended_temperature_c}",
"var.target_concentration_m": "${retry_after_qc_failure.outputs.recommended_concentration_m}",
"var.retry_note": "${retry_after_qc_failure.outputs.retry_reason}"
}
}
}
],
"default_initial_node": "prep"
}
],
"refs": [
{
"id": "yang2025airalogyaiempowereduniversaldata",
"entry_type": "misc",
"title": "Airalogy: AI-empowered universal data digitization for research automation",
"author": "Zijie Yang and Qiji Zhou and Fang Guo and Sijie Zhang and Yexun Xi and Jinglei Nie and Yudian Zhu and Liping Huang and Chou Wu and Yonghe Xia and Xiaoyu Ma and Yingming Pu and Panzhong Lu and Junshu Pan and Mingtao Chen and Tiannan Guo and Yanmei Dou and Hongyu Chen and Anping Zeng and Jiaxing Huang and Tian Xu and Yue Zhang",
"year": "2025",
"url": "https://arxiv.org/abs/2506.18586"
}
],
"media": [
{
"id": "lecture_video",
"kind": "video",
"src": "files/videos/lecture.mp4",
"mime": "video/mp4",
"poster": "files/videos/lecture-poster.jpg",
"title": "Lecture Video"
}
],
"step_hierarchy": [
{
"id": "sample_preparation",
"level": 1,
"sequence": 0,
"step": "1",
"next_id": "data_analysis"
}
]
}If you are upgrading older integrations, note that the old name aliases have been removed. Read Migration.