Skip to main content

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 .xlsx run 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.xlsx path now fails with a clear error. Use eigenpal workflow push to upload the file, or set templateId to a tmpl_… 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 workspace tmpl_... 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. templateId must be a workspace tmpl_... 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/models is 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 --file now resolves local template: paths the same way as workflow push, and workflow templates smoke --data help documents the JSON fixture file path.
  • eigenpal workflow push keeps 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 shared tmpl_… 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 templates uploads, inspects, replaces, and deletes workspace DOCX/XLSX templates, and can smoke-fill a local file or a tmpl_… id with a JSON fixture. workflow validate --online checks live template metadata, and workflow push uploads source-controlled template: ./file.xlsx paths without writing environment-specific ids back into YAML.
  • The workflow step catalog now includes transform.json-to-xlsx, so eigenpal workflow step-type and the bundled skill reference document how to write JSON rows to an Excel workbook.
  • eigenpal models list shows the text, vision, and OCR models your current environment can use. --json is 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 and tmpl_... IDs — not \{\{placeholder}} in the file and not file IDs.
  • eigenpal runs artifacts inspect returns structured JSON for XLSX run outputs (sheet names, headers, typed rows) with safe size limits, and eigenpal runs compare now 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.templates for 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-xlsx now 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 current tmpl_… content.
  • Workflow YAML template: paths on transform.template stay inside the workflow project on CLI push unless you opt in to files outside that directory.
  • Workflow YAML can point transform.template at a source-controlled Office file such as ./templates/roster.xlsx instead of a tmpl_… id. The CLI uploads that file on push; the source YAML keeps the path.