agent_name | no | string | — | — | The agent’s unique name (read-only from this section — renaming is done via the details save action which writes here after updating the database). |
description | no | string | max len 200000 | — | Short internal description of this agent (not shown to power-users). |
business_name | no | string | — | — | The name of the business or product this agent represents. Shown in legal documents and the public chat page footer copyright (e.g. ”© 2026 Acme Ltd”). NOT the header title — that is display_name. |
display_name | no | string | max len 80 | — | Human-friendly title shown at the top of the public chat page header (the per-instance flavour name the power-user assigns). Free text with spaces and capitalization. When blank, the header falls back to the instance’s link slug (instance_slug), then the raw instance id. |
support_email | no | string | pattern ^(?:[^\s@]+@[^\s@]+\.[^\s@]+)?$ | — | Email address for users to contact for support. Shown in legal docs. May be left blank. |
instructions | no | string | — | — | Additional instructions or notes shown on the agent’s public chat page (e.g. usage tips for power-users). |
theme_id | no | enum | one of default, minimal, bold, classic, vibrant | — | Owner-selected visual theme applied to the agent’s public Description / Instructions rendering. Picking one applies the corresponding built-in theme to the agent. Defaults to ‘default’ when unset. |
response_format | no | enum | one of auto, rich, minimal, text_only | auto | How richly the agent should present chat responses. ‘auto’ = platform default (model decides per the <rich_ui> heuristic). ‘rich’ = prefer json-render specs (cards/tables/stats) whenever a structured display is plausibly clearer. ‘minimal’ = plain markdown, render only genuinely tabular data. ‘text_only’ = never emit renders/artifacts. Compiled into a <response_format> block in the agent’s system prompt. |
presentation_notes | no | string | max len 2000 | — | Free-text nuance for response presentation (e.g. ‘always summarise metrics as KPI stats’), appended to the <response_format> system-prompt block. Optional escape hatch beyond the response_format preset. |
palette | no | object | — | — | Owner brand colours for the chat render nodes (badge/alert/stat/…). Each role carries a light and dark hex value; they become --jr-* CSS variables injected on a .jr-themed wrapper around the render surfaces. Empty/unset roles fall back to the platform defaults in main.css. Never reaches the LLM — the model emits semantic variants and the theme resolves the colour. Item fields below. |
description_rendered | no | string | — | — | Server-rewritten copy of description with widget-action buttons replaced by opaque action_ids. Written automatically by the details save action via extractWidgetActionsFromText. The power-user public surface renders this field, not description; the owner-edit textarea still binds to description. |
instructions_rendered | no | string | — | — | Server-rewritten copy of instructions with widget-action buttons replaced by opaque action_ids. Same rationale as description_rendered. |
page_layout | no | array of object | — | [] | Ordered list of UI blocks rendered on the public chat page (separate from the embeddable widget). Each block has a stable id, a position (‘above_chat’ | ‘below_chat’ | ‘sidebar’), and a type. Supported types: ‘markdown’ (body), ‘links’ (heading + items[{label,url,icon?}]), ‘hero’ (headline + subtitle? + image_url? + image_href? [makes the image clickable] + cta_label? + cta_url?), ‘json_render’ (spec — same shape as lib/json-render RenderSpec emitted at runtime; optional `data_source` binds the block to a live browser-side tool/code fetch that populates the spec's state — see the json_render block docs), 'input_capture' (heading? + intro? + fields[{name,label,type,required?,options?,placeholder?}] + submit_label? + success_message? + behavior:'send_as_message'\|'append_to_input'), 'suggested_prompts' (heading? + prompts[{label,message,icon?}] + behavior?), 'faq' (heading? + qa[{question,answer}]), 'notice' (tone:'info'\|'success'\|'warning'\|'error' + title? + body + dismissible?), 'file_gallery' (heading? + columns? + files[{file_name,label?,description?,thumbnail_url?}] — clickable tiles for the agent's PUBLIC documents; a tile opens the document in an on-page popup, PDFs/images inline), 'embed' (url + height_px?), 'divider'. Order within a position is the array order. The 'above_chat' and 'below_chat' regions are a full-width 12-column grid (with a small side inset): each block may set `col_span` (1–12, default 12 = full row) and `align` ('left'\|'center'\|'right') to control its width and placement, so blocks can sit side by side (e.g. two at col_span 6) or a narrow block can be centered/right-aligned across the page width; they stack on narrow screens. Empty array = no extra blocks; the chat panel renders standalone. Displayed text fields (hero headline/subtitle, headings, FAQ questions+answers, notice title/body, input_capture intro, markdown bodies) may contain simple owner links written as <a href="https://…">text</a> — rendered as real links only when the href is http(s)/site-relative/mailto/tel (see lib/shared/safe-links.ts); any other markup stays inert text. See page_layout block types for the full sub-schema. |
page_images | no | array of object | max 20 items | [] | Freely-positioned decorative images overlaid on the public web chat page (never intercept clicks). Each image stacks by its numeric z against the page tiers — layout blocks paint at z 20, the chat window at z 40 — so an image can sit behind everything (z<0), between the blocks and the chat (e.g. 30), or float over both (e.g. 50); dialogs/menus always stay above. Among images with equal z, array order wins (later = on top). Coordinates/sizes are percentages of the viewport (x/width of its width, y/height of its height) so a design scales to any screen. mode:‘cover’ makes the image a classic full-bleed wallpaper (ignores the position/size fields). Source is either an external URL (src) or an owner-uploaded file (file, max 5 MB, common image formats incl. SVG) served from /agent/{agent_name}/page-image/{file}. Edited on the dashboard Web page (‘Page images’ card); shape is normalized by $lib/shared/page-images.ts. Item fields below. |