Capabilities
The accepts enum and the normalized shape the runtime guarantees for each capability.
Capabilities
accepts declares what kind of normalized data the parser expects — not a file extension.
A .csv, a .xlsx, and a database export could all normalize to table.
Full enum (V1)
text document markdown html table tree graph timeseries
image binary structured key-value filesystem code log
dataset geo audio video customMinimum viable normalizers
An implementation does not need to support every capability to be spec-conformant — but for the capabilities it does support, the normalized shape below is required so parsers are portable across runtimes.
table
For CSV, spreadsheets, and other tabular sources.
{
columns: string[],
rows: Record<string, string>[]
}text
For plain text, logs, source code, or Markdown treated as raw text.
{
text: string
}markdown
{
raw: string,
headings: Array<{ level: number; text: string }>
}tree / structured
For JSON, XML, YAML.
{
value: unknown
}Choosing capabilities
| Source type | accepts |
|---|---|
| CSV / XLSX / any tabular data | ["table"] |
| Markdown | ["markdown", "document"] |
| JSON / YAML / XML | ["tree", "structured"] |
| Logs | ["log", "text"] |
| Source code | ["code", "text"] |
Capabilities beyond the minimum set
graph, timeseries, image, geo, audio, video, dataset, key-value, filesystem,
binary, html, document, and custom are reserved in the enum for V1 so manifests can
declare intent even where a given runtime doesn't yet ship a normalizer for them. A runtime that
receives an accepts value it can't normalize should fail clearly at load time rather than
silently passing through unnormalized data — see Security Model and
Versioning for how new normalizers get added without breaking existing
manifests.