Skip to Content
DocumentationReferenceDocument YAML Schema

Document YAML Schema

Document YAML files define how documents are rendered in the Loopstack Studio interface.

Top-Level Properties

type (optional)

type: document

Identifies this configuration as a document. Default: document.

description (optional)

description: 'Contains structured meeting notes with action items'

tags (optional)

Labels for categorizing and filtering documents:

tags: - meeting-notes - processed

ui

Defines how the document renders in the UI.

UI Widgets

Form Widget

ui: widgets: - widget: form options: order: [date, summary, participants, actionItems] properties: date: title: Date summary: title: Summary widget: textarea participants: title: Participants collapsed: true items: title: Participant actionItems: title: Action Items collapsed: true items: title: Action Item actions: - type: button transition: confirm label: 'Confirm'

Form Field Properties

PropertyTypeDescription
widgetstringWidget type (see below)
labelstringField label
titlestringSection title
descriptionstringField description
placeholderstringPlaceholder text
helpstringHelp text below the field
rowsnumberVisible rows (for textarea)
inlinebooleanDisplay field inline
readonlybooleanMake field read-only
hiddenbooleanHide the field
disabledbooleanDisable interaction
collapsedbooleanCollapse arrays/objects by default
fixedbooleanFixed field
orderstring[]Display order of nested fields
enumOptionsarrayOptions for select/radio widgets
itemsobjectUI config for array items
propertiesobjectUI config for nested object fields

Widget Types

WidgetDescription
textSingle-line text input (default)
textareaMulti-line text area
selectDropdown select
radioRadio button group
checkboxCheckbox
switchToggle switch
sliderNumeric slider
code-viewCode editor with syntax highlighting

enumOptions

For select and radio widgets:

language: title: Language widget: select enumOptions: - label: Python value: python - label: JavaScript value: javascript

Or as simple strings:

enumOptions: - python - javascript - java

Actions

Buttons that trigger wait: true transitions:

actions: - type: button transition: confirm # Must match the method name label: 'Confirm' - type: button transition: reject label: 'Reject'

Meta Properties

Loopstack splits document metadata into two kinds: static meta (declared once on @Document({ meta }) and applied to every instance) and dynamic meta (passed per-call via documentStore.save(…, { meta }) and persisted on that specific document row).

Static Meta — @Document({ meta })

Declared on the decorator. Applies to every instance of this document type.

@Document({ schema: ReportSchema, meta: { hidden: false, mimeType: 'text/markdown', level: 'info' }, }) export class ReportDocument { /* ... */ }
PropertyTypeDescription
hiddenbooleanHide every instance of this document type from the Studio UI by default.
mimeTypestringMIME type hint used by Studio for rendering/downloads (see below for the list).
level'debug' | 'info' | 'warning' | 'error'Severity tag. Studio may style documents based on this.
enableAtPlacesstring[]Only render this document type when the workflow is at one of these places.
hideAtPlacesstring[]Hide this document type when the workflow is at one of these places.

Dynamic Meta — documentStore.save(…, { meta })

Set per call. Persisted on the specific document row.

await this.documentStore.save(MyDocument, content, { id: 'doc-1', meta: { hidden: true, invalidate: false } });
PropertyTypeDescription
invalidatebooleanOpt-out of replacement. Default behavior (omitted/true) invalidates the previous version when reusing the same id. Set to false to keep both.
dataanyArbitrary per-instance metadata bag for user-defined data. Not used by the framework.
streamingbooleanFrontend-managed. Set by Studio during LLM streaming to indicate this document is still being filled in. Not typically set by backend code.
streamReadyForFinalbooleanFrontend-managed. Companion to streaming — marks the stream complete and the final version ready to persist. Not typically set by backend code.

hidden also appears in DocumentSaveOptions.meta and overrides the static hidden value for this single row — handy when most rows should be visible but a specific one should be tucked away.

Supported MIME Types

text/plain, text/html, text/markdown, text/css, text/xml, application/json, application/javascript, application/typescript, application/yaml, application/xml

Complete Example

type: document description: 'Generated code file' tags: - code - generated ui: widgets: - widget: form options: order: [filename, description, code] properties: filename: title: File Name readonly: true description: title: Description readonly: true widget: textarea code: title: Code widget: code-view actions: - type: button transition: confirm label: 'Accept'
Last updated on