Search
Documentation

← Content types

Procedural arts

Procedural arts are Slidura’s replacement for SmartArt: structured data goes in, a native PowerPoint diagram comes out. No AI, no external render service — the geometry engine runs synchronously in pure Python.

How it works

The artdeck engine accepts a layout ID and a data payload, solves the geometry, and emits an SVG built from theme tokens (accent1, neutral, etc.) rather than literal colours. The svgdeck pipeline then converts that SVG into native PowerPoint shapes, picking up the template’s actual palette at build time. The round-trip budget is under 100 ms; failures surface as validation errors, not silently broken slides.

Two input shapes are supported:

Input typeUsed by
list — items with optional title, description, value, status, icon, imagelist, process, cycle, picture, board layouts
table — rows with source, target, value, and meta columnsrelationship, data-flow, and Sankey layouts
tree — recursive nodes (id, title, description, value, collapsed, children)hierarchy, grouped-list, roadmap, org-chart layouts
graph — nodes + edges with optional values and labelsnetwork, chord layouts

Out-of-range data (too many items, depth exceeded, invalid edge references) raises a validation error before any geometry is produced. Capacity limits are configured per deployment (ART_MAX_ITEMS, ART_MAX_NODES, ART_MAX_EDGES, ART_MAX_TREE_DEPTH).

Layout catalog — 35 layouts across 9 categories

List (4): vertical basic, horizontal cards, numbered steps, grouped columns

Process (8): horizontal, vertical, chevron, staircase, zigzag timeline, milestone timeline, CI/CD pipeline (status-aware colouring), value-stream map

Cycle (3): basic, segmented, hub-and-spoke

Hierarchy (4): indented list, org chart, horizontal tree, treemap (squarify)

Relationship (5): opposing, Venn, converging, force-directed network, chord diagram

Matrix (3): quadrant (2 × 2), grid, asymmetric SWOT

Pyramid / funnel (2): basic pyramid, conversion funnel (value-proportional)

Picture (2): accent list, team grid — geometry complete; image-asset wiring is deferred

Data & domain (4): Kanban board, roadmap swimlanes, Sankey (Bézier ribbons), sunburst

The workbench

Open MediaLib → Arts → New (or GET /arts/new) to build an art interactively. The workbench shows a live SVG preview that re-renders on every save. Pick a layout, choose a data input type, fill in the form or paste JSON, and the preview updates. Saved arts persist to your account and can be promoted to library scope.

The gallery at /media/arts/gallery renders all 35 layouts against built-in sample fixtures so you can browse the full catalog before committing to a layout.

Placing an art in a fill

Use the @art:<id> sentinel:

{ "diagram_1": "@art:<id>" }

Agents can also supply an art inline without a stored asset:

{
  "diagram_1": {
    "$art": {
      "layout_id": "process-chevron",
      "structure_type": "list",
      "data": { "items": [{ "title": "Discover" }, { "title": "Define" }, { "title": "Deliver" }] },
      "options": {},
      "theme": "template"
    }
  }
}

Setting "theme": "template" (the default) derives colours from the template’s palette. A stored art’s build_ref field always contains the ready-to-use sentinel.

Stateless geometry solve

POST /api/v1/arts/geometry accepts { layout_id, data, options, canvas } and returns a GeometryDoc without storing anything. Use this to preview geometry programmatically or to drive a custom renderer.

API and MCP surface

SurfaceEndpoints / tools
RESTGET /arts/layouts, GET /arts, POST /arts, GET /arts/{id}, PUT /arts/{id}, DELETE /arts/{id}, GET /arts/{id}/svg?profile=deck|web, GET /arts/{id}/geometry, POST /arts/geometry
MCPlist_art_layouts(), create_art(name, layout_id, data, options?, theme?), get_art(art_id)

create_art validates the data payload by running the solver before persisting — if the data is out of range or structurally invalid the call returns an error with the specific constraint that was violated.

The svg endpoint accepts a profile parameter: deck emits clean presentation-attribute SVG suitable for svgdeck; web adds id, class, data-role attributes and CSS custom properties for interactive display.