Platform (Studio)
- Workflows can turn JSON rows into a downloadable Excel workbook with a new JSON to XLSX step. Pick ordered columns, map an array of objects, and get a
.xlsxrun output — including multi-sheet workbooks — without filling a template. - Studio now uses the shared theme provider, so system / light / dark stays aligned with OpenParser instead of drifting independently.
- Publishing a workflow that still has a local
template: ./file.xlsxpath now fails with a clear error. Useeigenpal workflow pushto upload the file, or settemplateIdto atmpl_…id first. - Studio template uploads and replacements now create immutable, checksum-backed revisions and discover tokens consistently across DOCX and XLSX files. Deleting a logical template preserves revision content used by pinned workflows.
- Fill Template (
transform.template) now documents workspacetmpl_...templates separately from Git agent templates, and Studio copy covers DOCX and XLSX. XLSX files use\{placeholder}and\{table:array.prop}in the spreadsheet;\{\{placeholder}}in an uploaded sheet warns on upload and fails at fill instead of leaving leftover braces.templateIdmust be a workspacetmpl_...ID, not a file ID. Filled values that look like formulas stay text; formulas already in the template stay formulas. - Studio now blocks crafted HTML from retaining executable content during sanitization.
Public API
- Workflow push can fully remove a template it uploaded if publishing then fails. Deleting a template that workflows already pin still keeps those revisions runnable.
- The public API now lists the text, vision, and OCR models configured for your environment.
GET /v1/modelsis a cheap catalog inventory for the current tenant: it reports whether each model is configured and which capability it is the default for, without probing live providers or exposing secrets. - The public API now supports the full lifecycle for tenant-scoped DOCX and XLSX templates: upload, inspect, list, download, replace, and delete, with direct-upload support for larger files. Every replacement creates a checksum-backed immutable revision; deleting the logical
tmpl_…resource preserves revisions already pinned by workflows.
CLI
workflow versions create --filenow resolves localtemplate:paths the same way asworkflow push, andworkflow templates smoke --datahelp documents the JSON fixture file path.eigenpal workflow pushkeeps local Office templates inside the workflow project, including when a path uses../or a symlink. Files outside that directory need--allow-external-templates. Push validates the workflow and version before uploading, creates new template resources instead of moving sharedtmpl_…pointers, and fully removes those unpublished uploads if publish does not succeed.- When resolving a workflow by
wf_…id, connection failures, auth errors, and server outages now surface their normal CLI messages instead of being misreported as “workflow not found.” eigenpal workflow templatesuploads, inspects, replaces, and deletes workspace DOCX/XLSX templates, and can smoke-fill a local file or atmpl_…id with a JSON fixture.workflow validate --onlinechecks live template metadata, andworkflow pushuploads source-controlledtemplate: ./file.xlsxpaths without writing environment-specific ids back into YAML.- The workflow step catalog now includes
transform.json-to-xlsx, soeigenpal workflow step-typeand the bundled skill reference document how to write JSON rows to an Excel workbook. eigenpal models listshows the text, vision, and OCR models your current environment can use.--jsonis the scripting path. Online workflow validation now rejects selected models that are not configured for the tenant, without treating that as a live provider outage.- CLI skill and step guidance now distinguish workspace
tmpl_...templates from Git agent templates, document the Git-backed template authoring workflow, and cover DOCX and XLSX filling for YAML workflows. XLSX examples use\{placeholder}/\{table:array.prop}in the spreadsheet andtmpl_...IDs — not\{\{placeholder}}in the file and not file IDs. eigenpal runs artifacts inspectreturns structured JSON for XLSX run outputs (sheet names, headers, typed rows) with safe size limits, andeigenpal runs comparenow diffs spreadsheet artifacts by workbook content instead of ZIP bytes.
SDK
- The TypeScript and Python SDKs now include
client.models.list()so you can discover configured text, vision, and OCR models for the current environment from the public API catalog. - The TypeScript SDK now handles generated request parameters without exposing prototype-chain properties.
- TypeScript and Python clients now expose
client.templatesfor uploading, listing, inspecting, downloading, replacing, and deleting document templates. Uploads negotiate direct storage transfer when needed, existing reusable file IDs can be used without another upload, and downloads can target immutable revision IDs.
Infrastructure & processing
- Workflows can write JSON rows to Excel workbooks. Numbers and booleans stay typed, blank cells stay blank, and strings that look like formulas are stored as text so exported spreadsheets cannot execute unexpected formulas.
transform.json-to-xlsxnow enforces configurable workload limits for sheets, rows, columns, total cells, and output file size so large exports fail fast instead of consuming unbounded worker memory.- Agent sandboxes now prevent crafted session links from executing browser code and protect stored credentials from concurrent writes.
- Document processing now rejects malformed image metadata without hanging a worker.
- Template steps can pin an immutable
tmpr_…revision for reproducible document generation. Steps without a revision continue following the currenttmpl_…content. - Workflow YAML
template:paths ontransform.templatestay inside the workflow project on CLI push unless you opt in to files outside that directory. - Workflow YAML can point
transform.templateat a source-controlled Office file such as./templates/roster.xlsxinstead of atmpl_…id. The CLI uploads that file on push; the source YAML keeps the path.