austere-axi 0.2.0 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +168 -102
- package/dist/austere.js +128 -153
- package/dist/catalog.json +1 -0
- package/dist/chrome/chrome.css +1 -1
- package/dist/chrome/chrome.js +5 -4
- package/dist/cli.mjs +2402 -335
- package/dist/pack-kit.mjs +284 -0
- package/dist/packs/mermaid/catalog.json +53 -0
- package/dist/packs/mermaid/pack.js +25 -0
- package/dist/packs/shadcn/catalog.json +429 -0
- package/dist/packs/shadcn/pack.js +69 -0
- package/dist/prompt.md +8 -20
- package/dist/spec.json +1 -1
- package/package.json +20 -4
- package/skills/austere-setup/SKILL.md +82 -0
- package/types/catalog.d.ts +82 -0
- package/types/pack-kit.d.ts +46 -0
- package/types/pack.d.ts +104 -0
package/dist/prompt.md
CHANGED
|
@@ -19,14 +19,14 @@ Props marked `$binding<type>` accept a `$variable` reference for two-way binding
|
|
|
19
19
|
|
|
20
20
|
### Layout
|
|
21
21
|
Stack(children: any[], direction?: "row" | "column", gap?: "none" | "xs" | "s" | "m" | "l" | "xl" | "2xl", align?: "start" | "center" | "end" | "stretch" | "baseline", justify?: "start" | "center" | "end" | "between" | "around" | "evenly", wrap?: boolean) — Flex container. direction: "row"|"column" (default "column"). gap: "none"|"xs"|"s"|"m"|"l"|"xl"|"2xl" (default "m"). align: "start"|"center"|"end"|"stretch"|"baseline". justify: "start"|"center"|"end"|"between"|"around"|"evenly".
|
|
22
|
-
Card(children: (TextContent | MarkDownRenderer | CardHeader | Callout | CodeBlock | Image | Separator | HorizontalBarChart | PieChart | ScatterChart | AreaChart | BarChart | LineChart | Table | TagBlock | Form | Buttons | Steps | InlineHeader | EntityList | EditableTable | OverviewCardBlock | Tabs | Stack | Architecture | Diff | FileTree | Mermaid)[], variant?: "card" | "sunk" | "clear", direction?: "row" | "column", gap?: "none" | "xs" | "s" | "m" | "l" | "xl" | "2xl", align?: "start" | "center" | "end" | "stretch" | "baseline", justify?: "start" | "center" | "end" | "between" | "around" | "evenly", wrap?: boolean) — Styled container. variant: "card" (default, elevated) | "sunk" (recessed) | "clear" (transparent). Always full width. Accepts all Stack flex params (default: direction "column"). Cards flex to share space in row/wrap layouts.
|
|
22
|
+
Card(children: (TextContent | MarkDownRenderer | CardHeader | Callout | CodeBlock | Image | Separator | HorizontalBarChart | PieChart | ScatterChart | AreaChart | BarChart | LineChart | Table | TagBlock | Form | Buttons | Steps | InlineHeader | EntityList | EditableTable | OverviewCardBlock | Tabs | Stack | Architecture | Diff | FileTree | Mermaid | Progress | Avatar | AvatarGroup | Tooltip | HoverCard | Breadcrumb | Kbd | Skeleton | Calendar | Timeline)[], variant?: "card" | "sunk" | "clear", direction?: "row" | "column", gap?: "none" | "xs" | "s" | "m" | "l" | "xl" | "2xl", align?: "start" | "center" | "end" | "stretch" | "baseline", justify?: "start" | "center" | "end" | "between" | "around" | "evenly", wrap?: boolean) — Styled container. variant: "card" (default, elevated) | "sunk" (recessed) | "clear" (transparent). Always full width. Accepts all Stack flex params (default: direction "column"). Cards flex to share space in row/wrap layouts.
|
|
23
23
|
CardHeader(title?: string, subtitle?: string) — Header with optional title and subtitle
|
|
24
24
|
InlineHeader(heading: string, description?: string) — Compact section heading with an optional one-line description, for use inside cards.
|
|
25
25
|
Separator(orientation?: "horizontal" | "vertical", decorative?: boolean) — Visual divider between content sections
|
|
26
26
|
Tabs(items: TabItem[]) — Tabbed container
|
|
27
|
-
TabItem(value: string, trigger: string, content: (TextContent | MarkDownRenderer | CardHeader | Callout | CodeBlock | Image | Separator | HorizontalBarChart | PieChart | ScatterChart | AreaChart | BarChart | LineChart | Table | TagBlock | Form | Buttons | Steps | InlineHeader | EntityList | EditableTable | OverviewCardBlock | Architecture | Diff | FileTree | Mermaid)[]) — value is unique id, trigger is tab label, content is array of components
|
|
27
|
+
TabItem(value: string, trigger: string, content: (TextContent | MarkDownRenderer | CardHeader | Callout | CodeBlock | Image | Separator | HorizontalBarChart | PieChart | ScatterChart | AreaChart | BarChart | LineChart | Table | TagBlock | Form | Buttons | Steps | InlineHeader | EntityList | EditableTable | OverviewCardBlock | Architecture | Diff | FileTree | Mermaid | Progress | Avatar | AvatarGroup | Tooltip | HoverCard | Breadcrumb | Kbd | Skeleton | Calendar | Timeline)[]) — value is unique id, trigger is tab label, content is array of components
|
|
28
28
|
Accordion(items: AccordionItem[]) — Collapsible sections
|
|
29
|
-
AccordionItem(value: string, trigger: string, content: (TextContent | MarkDownRenderer | CardHeader | Callout | CodeBlock | Image | Separator | HorizontalBarChart | PieChart | ScatterChart | AreaChart | BarChart | LineChart | Table | TagBlock | Form | Buttons | Steps | InlineHeader | EntityList | EditableTable | OverviewCardBlock | Architecture | Diff | FileTree | Mermaid)[]) — value is unique id, trigger is section title
|
|
29
|
+
AccordionItem(value: string, trigger: string, content: (TextContent | MarkDownRenderer | CardHeader | Callout | CodeBlock | Image | Separator | HorizontalBarChart | PieChart | ScatterChart | AreaChart | BarChart | LineChart | Table | TagBlock | Form | Buttons | Steps | InlineHeader | EntityList | EditableTable | OverviewCardBlock | Architecture | Diff | FileTree | Mermaid | Progress | Avatar | AvatarGroup | Tooltip | HoverCard | Breadcrumb | Kbd | Skeleton | Calendar | Timeline)[]) — value is unique id, trigger is section title
|
|
30
30
|
Steps(items: StepsItem[]) — Step-by-step guide
|
|
31
31
|
StepsItem(title: string, details: string) — title and details text for one step
|
|
32
32
|
- A page is root = Stack([...sections], "column", "l"). Each section is a Card([CardHeader(title, subtitle), ...content]).
|
|
@@ -53,63 +53,50 @@ Mermaid(source: string, caption?: string) — Diagram from Mermaid source (flowc
|
|
|
53
53
|
- lanes: for systems split by owner, repo or tier. Groups are the columns, left to right as listed; put every node in one, in reading order (plain groups for a heading without a frame). About 4 columns fit a laptop; wider ones scroll (check warns). Phones get the lanes stacked as bands. Pin row only to put boxes side by side or line them up.
|
|
54
54
|
- Diff for code changes: show the hunks that matter, not whole files. Hunk counts are recomputed, so only start lines matter.
|
|
55
55
|
- Mermaid for sequences, state machines, ER, gantt and quick flowcharts.
|
|
56
|
+
- Also in Content (`austere-axi components show <Name>` for the signature): Tooltip, HoverCard, Breadcrumb, BreadcrumbItem, Kbd, Skeleton, Timeline, TimelineItem.
|
|
56
57
|
|
|
57
58
|
### Data
|
|
58
59
|
Table(columns: Col[]) — Data table — column-oriented. Each Col holds its own data array.
|
|
59
60
|
Col(label: string, data: any, type?: "string" | "number" | "action") — Column definition — holds label + data array
|
|
60
|
-
EditableTable(name?: string, columns?: {type: "text" | "number" | "date-single" | "select" | "url", key?: string, header?: string, width?: number, options?: {value: string, label: string}[]}[], data?: {id: string, values: (string | number)[]}[]) — Spreadsheet-like table whose cells the user can edit inline (text, number, url, date, select columns); edits are saved back as a form field
|
|
61
61
|
EntityList(rows?: {left: string, right: string, rightVariant?: "text" | "number"}[], size?: "small" | "default", header?: {left: string, right: string, rightVariant?: "text" | "number"}, footer?: {left: string, right: string, rightVariant?: "text" | "number"}) — Two-column key/value rows (left label, right value). size 'default' supports optional header and footer rows; rightVariant 'number' uses tabular numbers.
|
|
62
62
|
Tag(text: string, icon?: Icon, size?: "sm" | "md" | "lg", variant?: "neutral" | "info" | "success" | "warning" | "danger") — Styled tag/badge with optional Icon and variant
|
|
63
|
-
TagBlock(tags: string[], size?: "sm" | "md" | "lg") — tags is an array of strings; optional size sm | md | lg
|
|
64
63
|
Icon(name: string, category?: string) — A lucide icon by kebab-case name (e.g. 'circle-check'). Optional category picks a topical fallback when the name doesn't resolve.
|
|
65
64
|
OverviewCardBlock(items: OverviewCardItem[], layout?: "grid" | "carousel", responsive?: boolean, action?: ActionExpression, gap?: number | string) — A grid or horizontal carousel of compact overview cards, each with a heading (icon/image/text) on top and an inline metric below; optionally clickable with a shared action.
|
|
66
65
|
OverviewCardItem(id?: string, top: IconText | Text, bottom?: MetricIndicatorInline) — One overview card: a heading slot at the top (IconText, ImageText or Text) and an optional MetricIndicatorInline at the bottom.
|
|
67
|
-
IconText(icon: Icon, iconVariant?: "neutral" | "info" | "success" | "warning" | "danger" | "inverted" | "filled" | "soft", iconSize?: "xs" | "s" | "m" | "l" | "xl" | "sm" | "md" | "lg", title: string, subtitle?: string, bold?: boolean, layout?: "horizontal" | "vertical") — An icon badge with a title and optional subtitle, laid out horizontally or vertically. iconVariant sets the badge color.
|
|
68
66
|
Text(variant?: "text" | "number", value: string, subtext?: string, subtextVariant?: "text" | "number" | "metric", size?: "xs" | "sm" | "md" | "lg") — Plain text line with optional subtext. variant 'number' uses tabular number styling; subtextVariant 'metric' colors a leading +/- subtext green/red.
|
|
69
|
-
BoldText(variant?: "text" | "number", value: string, subtext?: string, subtextVariant?: "text" | "number" | "metric", size?: "xs" | "sm" | "md" | "lg") — Emphasized (bold) text line with optional subtext. variant 'number' uses tabular number styling; subtextVariant 'metric' colors a leading +/- subtext green/red.
|
|
70
67
|
MetricIndicatorInline(value: string, subtext?: string, trend?: {direction: "up" | "down", value: number}) — Headline metric value with an optional +/- percentage trend and subtext, all on one line.
|
|
71
68
|
FileTree(entries: string[]) — File tree, one path per entry, optionally prefixed with a git status code (A new, M modified, D deleted, R old -> new) and suffixed with " # note". Folders are inferred. Clicked files and folders reach the agent by path.
|
|
72
69
|
- Table is COLUMN-oriented: Table([Col("Option", names), Col("Effort", efforts), Col("Risk", risks)]). Col data may mix strings and components, e.g. ["n/a", Tag("high", null, "sm", "danger")]. Cells are plain text (no markdown) and wrap; Col type "number" for figures.
|
|
73
70
|
- EntityList for key/value facts; OverviewCardBlock + OverviewCardItem + MetricIndicatorInline for a KPI row.
|
|
74
71
|
- EditableTable when the reviewer should correct or fill in values; edits arrive with the next @ToAssistant from its Form.
|
|
75
72
|
- Icon names are lucide kebab-case (circle-check, triangle-alert, git-branch).
|
|
73
|
+
- Also in Data (`austere-axi components show <Name>` for the signature): EditableTable, TagBlock, IconText, BoldText, Progress, Avatar, AvatarGroup, Calendar.
|
|
76
74
|
|
|
77
75
|
### Charts
|
|
78
76
|
BarChart(labels: string[], series: Series[], variant?: "grouped" | "stacked", xLabel?: string, yLabel?: string, height?: number) — Vertical bars; use for comparing values across categories with one or more series
|
|
79
77
|
LineChart(labels: string[], series: Series[], variant?: "linear" | "natural" | "step", xLabel?: string, yLabel?: string, height?: number) — Lines over categories; use for trends and continuous data over time
|
|
80
|
-
AreaChart(labels: string[], series: Series[], variant?: "linear" | "natural" | "step", xLabel?: string, yLabel?: string, height?: number) — Filled area under lines; use for cumulative totals or volume trends over time
|
|
81
|
-
HorizontalBarChart(labels: string[], series: Series[], variant?: "grouped" | "stacked", xLabel?: string, yLabel?: string) — Horizontal bars; prefer when category labels are long or for ranked lists
|
|
82
78
|
Series(category: string, values: number[]) — One data series
|
|
83
79
|
PieChart(labels: string[], values: number[], variant?: "pie" | "donut", appearance?: "circular" | "semiCircular") — Circular slices; use plucked arrays: PieChart(data.categories, data.values)
|
|
84
|
-
ScatterChart(datasets: ScatterSeries[], xLabel?: string, yLabel?: string) — X/Y scatter plot; use for correlations, distributions, and clustering
|
|
85
|
-
ScatterSeries(name: string, points: Point[]) — Named dataset
|
|
86
|
-
Point(x: number, y: number, z?: number) — Data point with numeric coordinates
|
|
87
80
|
- Charts take column arrays: BarChart(labels, [Series("p50", [..]), Series("p99", [..])], "grouped", "Week", "ms").
|
|
88
81
|
- PieChart(labels, values) with plain number arrays.
|
|
82
|
+
- Also in Charts (`austere-axi components show <Name>` for the signature): AreaChart, HorizontalBarChart, ScatterChart, ScatterSeries, Point.
|
|
89
83
|
|
|
90
84
|
### Forms
|
|
91
85
|
Form(name: string, buttons: Buttons, fields?: FormControl[]) — Form container with fields and explicit action buttons
|
|
92
86
|
FormControl(label: string, input: Input | TextArea | Select | Slider | CheckBoxGroup | RadioGroup | Chips | OptionCards, hint?: string) — Field with label, input component, and optional hint text
|
|
93
|
-
Label(text: string) — Text label
|
|
94
87
|
Input(name: string, placeholder?: string, type?: "text" | "email" | "password" | "number" | "url", rules?: {required?: boolean, email?: boolean, url?: boolean, numeric?: boolean, min?: number, max?: number, minLength?: number, maxLength?: number, pattern?: string}, value?: $binding<string>)
|
|
95
88
|
TextArea(name: string, placeholder?: string, rows?: number, rules?: {required?: boolean, email?: boolean, url?: boolean, numeric?: boolean, min?: number, max?: number, minLength?: number, maxLength?: number, pattern?: string}, value?: $binding<string>)
|
|
96
89
|
Select(name: string, items: SelectItem[], placeholder?: string, rules?: {required?: boolean, email?: boolean, url?: boolean, numeric?: boolean, min?: number, max?: number, minLength?: number, maxLength?: number, pattern?: string}, value?: $binding<string>, size?: "small" | "medium" | "large")
|
|
97
90
|
SelectItem(value: string, label: string) — Option for Select
|
|
98
|
-
Slider(name: string, variant: "continuous" | "discrete", min: number, max: number, step?: number, defaultValue?: number[], label?: string, rules?: {required?: boolean, email?: boolean, url?: boolean, numeric?: boolean, min?: number, max?: number, minLength?: number, maxLength?: number, pattern?: string}, value?: $binding<number[]>) — Numeric slider input; supports continuous and discrete (stepped) variants
|
|
99
|
-
CheckBoxGroup(name: string, items: CheckBoxItem[], rules?: {required?: boolean, email?: boolean, url?: boolean, numeric?: boolean, min?: number, max?: number, minLength?: number, maxLength?: number, pattern?: string}, value?: $binding<Record<string, boolean>>)
|
|
100
|
-
CheckBoxItem(label: string, description: string, name: string, defaultChecked?: boolean)
|
|
101
91
|
RadioGroup(name: string, items: RadioItem[], defaultValue?: string, rules?: {required?: boolean, email?: boolean, url?: boolean, numeric?: boolean, min?: number, max?: number, minLength?: number, maxLength?: number, pattern?: string}, value?: $binding<string>)
|
|
102
92
|
RadioItem(label: string, description: string, value: string)
|
|
103
|
-
SwitchGroup(name: string, items: SwitchItem[], variant?: "clear" | "card" | "sunk", value?: $binding<Record<string, boolean>>) — Group of switch toggles
|
|
104
|
-
SwitchItem(label?: string, description?: string, name: string, defaultChecked?: boolean) — Individual switch toggle
|
|
105
|
-
Chips(name: string, type?: "single" | "multiple", items?: ChipItem[], rules?: {required?: boolean, email?: boolean, url?: boolean, numeric?: boolean, min?: number, max?: number, minLength?: number, maxLength?: number, pattern?: string}, defaultValue?: string | string[]) — A form field of compact selectable chips for choosing one or many short options; the selection is stored under `name`.
|
|
106
|
-
ChipItem(value: string, label: string, icon?: Icon, disabled?: boolean) — A single selectable chip inside a Chips group, with a value, label and optional icon.
|
|
107
93
|
OptionCards(name: string, type?: "single" | "multiple", items?: OptionCard[], rules?: {required?: boolean, email?: boolean, url?: boolean, numeric?: boolean, min?: number, max?: number, minLength?: number, maxLength?: number, pattern?: string}, defaultValue?: string | string[]) — A form field of selectable cards (title, optional subtitle, optional icon or image) laid out in a responsive grid for choosing one or many options; the selection is stored under `name`.
|
|
108
94
|
OptionCard(value: string, title: string, subtitle?: string, topContent?: Icon | Image, disabled?: boolean) — A single selectable card inside an OptionCards group, with a value, title, optional subtitle and an optional Icon or Image on top.
|
|
109
95
|
- Form(name, buttons, fields). Define each FormControl as its own statement. Never nest a Form in a Form.
|
|
110
96
|
- To ask the reviewer to decide: OptionCards or RadioGroup inside a Form whose button is Button("Send decision", @ToAssistant("Decision: rollout strategy"), "primary"). The values arrive with that message as form: {<formName>: {<fieldName>: value}}; no context needed. Reviewers can always annotate and message, so add a notes field only when it belongs with the decision.
|
|
111
97
|
- OptionCards("pick", "single", [OptionCard("a", "Option A", "why", Icon("zap")), OptionCard("b", "Option B")], {required: true}, "a") — the last argument pre-selects.
|
|
112
98
|
- rules: {required: true, minLength: 10, ...}; the renderer shows the messages.
|
|
99
|
+
- Also in Forms (`austere-axi components show <Name>` for the signature): Label, Slider, CheckBoxGroup, CheckBoxItem, SwitchGroup, SwitchItem, Chips, ChipItem.
|
|
113
100
|
|
|
114
101
|
### Buttons
|
|
115
102
|
Button(label: string, action?: ActionExpression, variant?: "primary" | "secondary" | "tertiary", type?: "normal" | "destructive", size?: "extra-small" | "small" | "medium" | "large") — Clickable button
|
|
@@ -202,4 +189,5 @@ Before finishing, walk your output and verify:
|
|
|
202
189
|
- Pass null to skip an optional argument before one you set: Tag("high", null, "sm", "danger").
|
|
203
190
|
- Strings may span lines (use that for Mermaid, Diff, CodeBlock and long markdown) and accept \n escapes; $ inside strings is literal. Escape " inside double-quoted strings, or use single quotes. Never write </script> inside the program.
|
|
204
191
|
- Artifacts are static: no Query, Mutation or tools, and you never need $variables (omit $binding props).
|
|
192
|
+
- Need something not listed? `austere-axi components search <words>` covers every component, including installed packs.
|
|
205
193
|
- Size: one idea per section, 3-7 sections, tables up to ~12 rows with phrase-length cells. A page that could have been a paragraph should have been a paragraph.
|
package/dist/spec.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"Card":{"$ref":"#/$defs/Card"},"CardHeader":{"$ref":"#/$defs/CardHeader"},"TextContent":{"$ref":"#/$defs/TextContent"},"MarkDownRenderer":{"$ref":"#/$defs/MarkDownRenderer"},"Callout":{"$ref":"#/$defs/Callout"},"Image":{"$ref":"#/$defs/Image"},"CodeBlock":{"$ref":"#/$defs/CodeBlock"},"InlineHeader":{"$ref":"#/$defs/InlineHeader"},"Table":{"$ref":"#/$defs/Table"},"Col":{"$ref":"#/$defs/Col"},"EditableTable":{"$ref":"#/$defs/EditableTable"},"BarChart":{"$ref":"#/$defs/BarChart"},"LineChart":{"$ref":"#/$defs/LineChart"},"AreaChart":{"$ref":"#/$defs/AreaChart"},"HorizontalBarChart":{"$ref":"#/$defs/HorizontalBarChart"},"Series":{"$ref":"#/$defs/Series"},"PieChart":{"$ref":"#/$defs/PieChart"},"ScatterChart":{"$ref":"#/$defs/ScatterChart"},"ScatterSeries":{"$ref":"#/$defs/ScatterSeries"},"Point":{"$ref":"#/$defs/Point"},"Form":{"$ref":"#/$defs/Form"},"FormControl":{"$ref":"#/$defs/FormControl"},"Label":{"$ref":"#/$defs/Label"},"Input":{"$ref":"#/$defs/Input"},"TextArea":{"$ref":"#/$defs/TextArea"},"Select":{"$ref":"#/$defs/Select"},"SelectItem":{"$ref":"#/$defs/SelectItem"},"Slider":{"$ref":"#/$defs/Slider"},"CheckBoxGroup":{"$ref":"#/$defs/CheckBoxGroup"},"CheckBoxItem":{"$ref":"#/$defs/CheckBoxItem"},"RadioGroup":{"$ref":"#/$defs/RadioGroup"},"RadioItem":{"$ref":"#/$defs/RadioItem"},"SwitchGroup":{"$ref":"#/$defs/SwitchGroup"},"SwitchItem":{"$ref":"#/$defs/SwitchItem"},"ChipItem":{"$ref":"#/$defs/ChipItem"},"Chips":{"$ref":"#/$defs/Chips"},"OptionCard":{"$ref":"#/$defs/OptionCard"},"OptionCards":{"$ref":"#/$defs/OptionCards"},"Button":{"$ref":"#/$defs/Button"},"Buttons":{"$ref":"#/$defs/Buttons"},"Stack":{"$ref":"#/$defs/Stack"},"Tabs":{"$ref":"#/$defs/Tabs"},"TabItem":{"$ref":"#/$defs/TabItem"},"Accordion":{"$ref":"#/$defs/Accordion"},"AccordionItem":{"$ref":"#/$defs/AccordionItem"},"Steps":{"$ref":"#/$defs/Steps"},"StepsItem":{"$ref":"#/$defs/StepsItem"},"Separator":{"$ref":"#/$defs/Separator"},"TagBlock":{"$ref":"#/$defs/TagBlock"},"Tag":{"$ref":"#/$defs/Tag"},"Icon":{"$ref":"#/$defs/Icon"},"EntityList":{"$ref":"#/$defs/EntityList"},"Text":{"$ref":"#/$defs/Text"},"BoldText":{"$ref":"#/$defs/BoldText"},"IconText":{"$ref":"#/$defs/IconText"},"MetricIndicatorInline":{"$ref":"#/$defs/MetricIndicatorInline"},"OverviewCardItem":{"$ref":"#/$defs/OverviewCardItem"},"OverviewCardBlock":{"$ref":"#/$defs/OverviewCardBlock"},"Architecture":{"$ref":"#/$defs/Architecture"},"Node":{"$ref":"#/$defs/Node"},"Edge":{"$ref":"#/$defs/Edge"},"Group":{"$ref":"#/$defs/Group"},"Diff":{"$ref":"#/$defs/Diff"},"FileTree":{"$ref":"#/$defs/FileTree"},"Mermaid":{"$ref":"#/$defs/Mermaid"}},"required":["Card","CardHeader","TextContent","MarkDownRenderer","Callout","Image","CodeBlock","InlineHeader","Table","Col","EditableTable","BarChart","LineChart","AreaChart","HorizontalBarChart","Series","PieChart","ScatterChart","ScatterSeries","Point","Form","FormControl","Label","Input","TextArea","Select","SelectItem","Slider","CheckBoxGroup","CheckBoxItem","RadioGroup","RadioItem","SwitchGroup","SwitchItem","ChipItem","Chips","OptionCard","OptionCards","Button","Buttons","Stack","Tabs","TabItem","Accordion","AccordionItem","Steps","StepsItem","Separator","TagBlock","Tag","Icon","EntityList","Text","BoldText","IconText","MetricIndicatorInline","OverviewCardItem","OverviewCardBlock","Architecture","Node","Edge","Group","Diff","FileTree","Mermaid"],"additionalProperties":false,"$defs":{"Card":{"type":"object","properties":{"children":{"type":"array","items":{"anyOf":[{"$ref":"#/$defs/TextContent"},{"$ref":"#/$defs/MarkDownRenderer"},{"$ref":"#/$defs/CardHeader"},{"$ref":"#/$defs/Callout"},{"$ref":"#/$defs/CodeBlock"},{"$ref":"#/$defs/Image"},{"$ref":"#/$defs/Separator"},{"$ref":"#/$defs/HorizontalBarChart"},{"$ref":"#/$defs/PieChart"},{"$ref":"#/$defs/ScatterChart"},{"$ref":"#/$defs/AreaChart"},{"$ref":"#/$defs/BarChart"},{"$ref":"#/$defs/LineChart"},{"$ref":"#/$defs/Table"},{"$ref":"#/$defs/TagBlock"},{"$ref":"#/$defs/Form"},{"$ref":"#/$defs/Buttons"},{"$ref":"#/$defs/Steps"},{"$ref":"#/$defs/InlineHeader"},{"$ref":"#/$defs/EntityList"},{"$ref":"#/$defs/EditableTable"},{"$ref":"#/$defs/OverviewCardBlock"},{"$ref":"#/$defs/Tabs"},{"$ref":"#/$defs/Stack"},{"$ref":"#/$defs/Architecture"},{"$ref":"#/$defs/Diff"},{"$ref":"#/$defs/FileTree"},{"$ref":"#/$defs/Mermaid"}]}},"variant":{"type":"string","enum":["card","sunk","clear"]},"direction":{"type":"string","enum":["row","column"]},"gap":{"type":"string","enum":["none","xs","s","m","l","xl","2xl"]},"align":{"type":"string","enum":["start","center","end","stretch","baseline"]},"justify":{"type":"string","enum":["start","center","end","between","around","evenly"]},"wrap":{"type":"boolean"}},"required":["children"],"additionalProperties":false,"description":"Styled container. variant: \"card\" (default, elevated) | \"sunk\" (recessed) | \"clear\" (transparent). Always full width. Accepts all Stack flex params (default: direction \"column\"). Cards flex to share space in row/wrap layouts."},"TextContent":{"type":"object","properties":{"text":{"type":"string"},"size":{"type":"string","enum":["small","default","large","small-heavy","large-heavy"]}},"required":["text"],"additionalProperties":false,"description":"Text block. Supports markdown. Optional size: \"small\" | \"default\" | \"large\" | \"small-heavy\" | \"large-heavy\"."},"MarkDownRenderer":{"type":"object","properties":{"textMarkdown":{"type":"string"},"variant":{"type":"string","enum":["clear","card","sunk"]}},"required":["textMarkdown"],"additionalProperties":false,"description":"Renders markdown text with optional container variant"},"CardHeader":{"type":"object","properties":{"title":{"type":"string"},"subtitle":{"type":"string"}},"additionalProperties":false,"description":"Header with optional title and subtitle"},"Callout":{"type":"object","properties":{"variant":{"type":"string","enum":["info","warning","error","success","neutral"]},"title":{"type":"string"},"description":{"type":"string"},"visible":{"type":"boolean"}},"required":["variant","title","description"],"additionalProperties":false,"description":"Callout banner. Optional visible is a reactive $boolean — auto-dismisses after 3s by setting $visible to false."},"CodeBlock":{"type":"object","properties":{"language":{"type":"string"},"codeString":{"type":"string"}},"required":["language","codeString"],"additionalProperties":false,"description":"Syntax-highlighted code block"},"Image":{"type":"object","properties":{"alt":{"type":"string"},"src":{"type":"string"}},"required":["alt"],"additionalProperties":false,"description":"Image with alt text and optional URL"},"Separator":{"type":"object","properties":{"orientation":{"type":"string","enum":["horizontal","vertical"]},"decorative":{"type":"boolean"}},"additionalProperties":false,"description":"Visual divider between content sections"},"HorizontalBarChart":{"type":"object","properties":{"labels":{"type":"array","items":{"type":"string"}},"series":{"type":"array","items":{"$ref":"#/$defs/Series"}},"variant":{"type":"string","enum":["grouped","stacked"]},"xLabel":{"type":"string"},"yLabel":{"type":"string"}},"required":["labels","series"],"additionalProperties":false,"description":"Horizontal bars; prefer when category labels are long or for ranked lists"},"Series":{"type":"object","properties":{"category":{"type":"string"},"values":{"type":"array","items":{"type":"number"}}},"required":["category","values"],"additionalProperties":false,"description":"One data series"},"PieChart":{"type":"object","properties":{"labels":{"type":"array","items":{"type":"string"}},"values":{"type":"array","items":{"type":"number"}},"variant":{"type":"string","enum":["pie","donut"]},"appearance":{"type":"string","enum":["circular","semiCircular"]}},"required":["labels","values"],"additionalProperties":false,"description":"Circular slices; use plucked arrays: PieChart(data.categories, data.values)"},"ScatterChart":{"type":"object","properties":{"datasets":{"type":"array","items":{"$ref":"#/$defs/ScatterSeries"}},"xLabel":{"type":"string"},"yLabel":{"type":"string"}},"required":["datasets"],"additionalProperties":false,"description":"X/Y scatter plot; use for correlations, distributions, and clustering"},"ScatterSeries":{"type":"object","properties":{"name":{"type":"string"},"points":{"type":"array","items":{"$ref":"#/$defs/Point"}}},"required":["name","points"],"additionalProperties":false,"description":"Named dataset"},"Point":{"type":"object","properties":{"x":{"type":"number"},"y":{"type":"number"},"z":{"type":"number"}},"required":["x","y"],"additionalProperties":false,"description":"Data point with numeric coordinates"},"AreaChart":{"type":"object","properties":{"labels":{"type":"array","items":{"type":"string"}},"series":{"type":"array","items":{"$ref":"#/$defs/Series"}},"variant":{"type":"string","enum":["linear","natural","step"]},"xLabel":{"type":"string"},"yLabel":{"type":"string"},"height":{"type":"number"}},"required":["labels","series"],"additionalProperties":false,"description":"Filled area under lines; use for cumulative totals or volume trends over time"},"BarChart":{"type":"object","properties":{"labels":{"type":"array","items":{"type":"string"}},"series":{"type":"array","items":{"$ref":"#/$defs/Series"}},"variant":{"type":"string","enum":["grouped","stacked"]},"xLabel":{"type":"string"},"yLabel":{"type":"string"},"height":{"type":"number"}},"required":["labels","series"],"additionalProperties":false,"description":"Vertical bars; use for comparing values across categories with one or more series"},"LineChart":{"type":"object","properties":{"labels":{"type":"array","items":{"type":"string"}},"series":{"type":"array","items":{"$ref":"#/$defs/Series"}},"variant":{"type":"string","enum":["linear","natural","step"]},"xLabel":{"type":"string"},"yLabel":{"type":"string"},"height":{"type":"number"}},"required":["labels","series"],"additionalProperties":false,"description":"Lines over categories; use for trends and continuous data over time"},"Table":{"type":"object","properties":{"columns":{"type":"array","items":{"$ref":"#/$defs/Col"}}},"required":["columns"],"additionalProperties":false,"description":"Data table — column-oriented. Each Col holds its own data array."},"Col":{"type":"object","properties":{"label":{"type":"string"},"data":{},"type":{"type":"string","enum":["string","number","action"]}},"required":["label","data"],"additionalProperties":false,"description":"Column definition — holds label + data array"},"TagBlock":{"type":"object","properties":{"tags":{"type":"array","items":{"type":"string"}},"size":{"type":"string","enum":["sm","md","lg"]}},"required":["tags"],"additionalProperties":false,"description":"tags is an array of strings; optional size sm | md | lg"},"Form":{"type":"object","properties":{"name":{"type":"string"},"buttons":{"$ref":"#/$defs/Buttons"},"fields":{"default":[],"type":"array","items":{"$ref":"#/$defs/FormControl"}}},"required":["name","buttons","fields"],"additionalProperties":false,"description":"Form container with fields and explicit action buttons"},"Buttons":{"type":"object","properties":{"buttons":{"type":"array","items":{"$ref":"#/$defs/Button"}},"direction":{"type":"string","enum":["row","column"]}},"required":["buttons"],"additionalProperties":false,"description":"Group of Button components. direction: \"row\" (default) | \"column\"."},"Button":{"type":"object","properties":{"label":{"type":"string"},"action":{"$ref":"#/$defs/ActionExpression"},"variant":{"type":"string","enum":["primary","secondary","tertiary"]},"type":{"type":"string","enum":["normal","destructive"]},"size":{"type":"string","enum":["extra-small","small","medium","large"]}},"required":["label"],"additionalProperties":false,"description":"Clickable button"},"ActionExpression":{"anyOf":[{"type":"object","properties":{"type":{"type":"string","const":"open_url"},"url":{"type":"string"}},"required":["type","url"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"continue_conversation"},"context":{"type":"string"}},"required":["type"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string"},"params":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["type"],"additionalProperties":false}]},"FormControl":{"type":"object","properties":{"label":{"type":"string"},"input":{"anyOf":[{"$ref":"#/$defs/Input"},{"$ref":"#/$defs/TextArea"},{"$ref":"#/$defs/Select"},{"$ref":"#/$defs/Slider"},{"$ref":"#/$defs/CheckBoxGroup"},{"$ref":"#/$defs/RadioGroup"},{"$ref":"#/$defs/Chips"},{"$ref":"#/$defs/OptionCards"}]},"hint":{"type":"string"}},"required":["label","input"],"additionalProperties":false,"description":"Field with label, input component, and optional hint text"},"Input":{"type":"object","properties":{"name":{"type":"string"},"placeholder":{"type":"string"},"type":{"type":"string","enum":["text","email","password","number","url"]},"rules":{"type":"object","properties":{"required":{"type":"boolean"},"email":{"type":"boolean"},"url":{"type":"boolean"},"numeric":{"type":"boolean"},"min":{"type":"number"},"max":{"type":"number"},"minLength":{"type":"number"},"maxLength":{"type":"number"},"pattern":{"type":"string"}},"additionalProperties":false},"value":{"type":"string"}},"required":["name"],"additionalProperties":false},"TextArea":{"type":"object","properties":{"name":{"type":"string"},"placeholder":{"type":"string"},"rows":{"type":"number"},"rules":{"type":"object","properties":{"required":{"type":"boolean"},"email":{"type":"boolean"},"url":{"type":"boolean"},"numeric":{"type":"boolean"},"min":{"type":"number"},"max":{"type":"number"},"minLength":{"type":"number"},"maxLength":{"type":"number"},"pattern":{"type":"string"}},"additionalProperties":false},"value":{"type":"string"}},"required":["name"],"additionalProperties":false},"Select":{"type":"object","properties":{"name":{"type":"string"},"items":{"type":"array","items":{"$ref":"#/$defs/SelectItem"}},"placeholder":{"type":"string"},"rules":{"type":"object","properties":{"required":{"type":"boolean"},"email":{"type":"boolean"},"url":{"type":"boolean"},"numeric":{"type":"boolean"},"min":{"type":"number"},"max":{"type":"number"},"minLength":{"type":"number"},"maxLength":{"type":"number"},"pattern":{"type":"string"}},"additionalProperties":false},"value":{"type":"string"},"size":{"type":"string","enum":["small","medium","large"]}},"required":["name","items"],"additionalProperties":false},"SelectItem":{"type":"object","properties":{"value":{"type":"string"},"label":{"type":"string"}},"required":["value","label"],"additionalProperties":false,"description":"Option for Select"},"Slider":{"type":"object","properties":{"name":{"type":"string"},"variant":{"type":"string","enum":["continuous","discrete"]},"min":{"type":"number"},"max":{"type":"number"},"step":{"type":"number"},"defaultValue":{"type":"array","items":{"type":"number"}},"label":{"type":"string"},"rules":{"type":"object","properties":{"required":{"type":"boolean"},"email":{"type":"boolean"},"url":{"type":"boolean"},"numeric":{"type":"boolean"},"min":{"type":"number"},"max":{"type":"number"},"minLength":{"type":"number"},"maxLength":{"type":"number"},"pattern":{"type":"string"}},"additionalProperties":false},"value":{"type":"array","items":{"type":"number"}}},"required":["name","variant","min","max"],"additionalProperties":false,"description":"Numeric slider input; supports continuous and discrete (stepped) variants"},"CheckBoxGroup":{"type":"object","properties":{"name":{"type":"string"},"items":{"type":"array","items":{"$ref":"#/$defs/CheckBoxItem"}},"rules":{"type":"object","properties":{"required":{"type":"boolean"},"email":{"type":"boolean"},"url":{"type":"boolean"},"numeric":{"type":"boolean"},"min":{"type":"number"},"max":{"type":"number"},"minLength":{"type":"number"},"maxLength":{"type":"number"},"pattern":{"type":"string"}},"additionalProperties":false},"value":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"boolean"}}},"required":["name","items"],"additionalProperties":false},"CheckBoxItem":{"type":"object","properties":{"label":{"type":"string"},"description":{"type":"string"},"name":{"type":"string"},"defaultChecked":{"type":"boolean"}},"required":["label","description","name"],"additionalProperties":false},"RadioGroup":{"type":"object","properties":{"name":{"type":"string"},"items":{"type":"array","items":{"$ref":"#/$defs/RadioItem"}},"defaultValue":{"type":"string"},"rules":{"type":"object","properties":{"required":{"type":"boolean"},"email":{"type":"boolean"},"url":{"type":"boolean"},"numeric":{"type":"boolean"},"min":{"type":"number"},"max":{"type":"number"},"minLength":{"type":"number"},"maxLength":{"type":"number"},"pattern":{"type":"string"}},"additionalProperties":false},"value":{"type":"string"}},"required":["name","items"],"additionalProperties":false},"RadioItem":{"type":"object","properties":{"label":{"type":"string"},"description":{"type":"string"},"value":{"type":"string"}},"required":["label","description","value"],"additionalProperties":false},"Chips":{"type":"object","properties":{"name":{"type":"string"},"type":{"default":"multiple","type":"string","enum":["single","multiple"]},"items":{"default":[],"type":"array","items":{"$ref":"#/$defs/ChipItem"}},"rules":{"type":"object","properties":{"required":{"type":"boolean"},"email":{"type":"boolean"},"url":{"type":"boolean"},"numeric":{"type":"boolean"},"min":{"type":"number"},"max":{"type":"number"},"minLength":{"type":"number"},"maxLength":{"type":"number"},"pattern":{"type":"string"}},"additionalProperties":false},"defaultValue":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}},"required":["name","type","items"],"additionalProperties":false,"description":"A form field of compact selectable chips for choosing one or many short options; the selection is stored under `name`."},"ChipItem":{"type":"object","properties":{"value":{"type":"string"},"label":{"type":"string"},"icon":{"$ref":"#/$defs/Icon"},"disabled":{"type":"boolean"}},"required":["value","label"],"additionalProperties":false,"description":"A single selectable chip inside a Chips group, with a value, label and optional icon."},"Icon":{"type":"object","properties":{"name":{"type":"string"},"category":{"type":"string"}},"required":["name"],"additionalProperties":false,"description":"A lucide icon by kebab-case name (e.g. 'circle-check'). Optional category picks a topical fallback when the name doesn't resolve."},"OptionCards":{"type":"object","properties":{"name":{"type":"string"},"type":{"default":"single","type":"string","enum":["single","multiple"]},"items":{"default":[],"type":"array","items":{"$ref":"#/$defs/OptionCard"}},"rules":{"type":"object","properties":{"required":{"type":"boolean"},"email":{"type":"boolean"},"url":{"type":"boolean"},"numeric":{"type":"boolean"},"min":{"type":"number"},"max":{"type":"number"},"minLength":{"type":"number"},"maxLength":{"type":"number"},"pattern":{"type":"string"}},"additionalProperties":false},"defaultValue":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}},"required":["name","type","items"],"additionalProperties":false,"description":"A form field of selectable cards (title, optional subtitle, optional icon or image) laid out in a responsive grid for choosing one or many options; the selection is stored under `name`."},"OptionCard":{"type":"object","properties":{"value":{"type":"string"},"title":{"type":"string"},"subtitle":{"type":"string"},"topContent":{"anyOf":[{"$ref":"#/$defs/Icon"},{"$ref":"#/$defs/Image"}]},"disabled":{"type":"boolean"}},"required":["value","title"],"additionalProperties":false,"description":"A single selectable card inside an OptionCards group, with a value, title, optional subtitle and an optional Icon or Image on top."},"Steps":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/$defs/StepsItem"}}},"required":["items"],"additionalProperties":false,"description":"Step-by-step guide"},"StepsItem":{"type":"object","properties":{"title":{"type":"string"},"details":{"type":"string"}},"required":["title","details"],"additionalProperties":false,"description":"title and details text for one step"},"InlineHeader":{"type":"object","properties":{"heading":{"type":"string"},"description":{"type":"string"}},"required":["heading"],"additionalProperties":false,"description":"Compact section heading with an optional one-line description, for use inside cards."},"EntityList":{"type":"object","properties":{"rows":{"default":[],"type":"array","items":{"type":"object","properties":{"left":{"type":"string"},"right":{"type":"string"},"rightVariant":{"default":"text","type":"string","enum":["text","number"]}},"required":["left","right","rightVariant"],"additionalProperties":false}},"size":{"default":"default","type":"string","enum":["small","default"]},"header":{"type":"object","properties":{"left":{"type":"string"},"right":{"type":"string"},"rightVariant":{"default":"text","type":"string","enum":["text","number"]}},"required":["left","right","rightVariant"],"additionalProperties":false},"footer":{"type":"object","properties":{"left":{"type":"string"},"right":{"type":"string"},"rightVariant":{"default":"text","type":"string","enum":["text","number"]}},"required":["left","right","rightVariant"],"additionalProperties":false}},"required":["rows","size"],"additionalProperties":false,"description":"Two-column key/value rows (left label, right value). size 'default' supports optional header and footer rows; rightVariant 'number' uses tabular numbers."},"EditableTable":{"type":"object","properties":{"name":{"default":"","type":"string"},"columns":{"default":[],"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text","number","date-single","select","url"]},"key":{"default":"default","type":"string"},"header":{"default":"","type":"string"},"width":{"type":"number"},"options":{"type":"array","items":{"type":"object","properties":{"value":{"type":"string"},"label":{"type":"string"}},"required":["value","label"],"additionalProperties":false}}},"required":["type","key","header"],"additionalProperties":false}},"data":{"default":[],"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"values":{"type":"array","items":{"type":["string","number"]}}},"required":["id","values"],"additionalProperties":false}}},"required":["name","columns","data"],"additionalProperties":false,"description":"Spreadsheet-like table whose cells the user can edit inline (text, number, url, date, select columns); edits are saved back as a form field"},"OverviewCardBlock":{"type":"object","properties":{"items":{"minItems":2,"type":"array","items":{"$ref":"#/$defs/OverviewCardItem"}},"layout":{"default":"grid","type":"string","enum":["grid","carousel"]},"responsive":{"default":true,"type":"boolean"},"action":{"$ref":"#/$defs/ActionExpression"},"gap":{"type":["number","string"]}},"required":["items","layout","responsive"],"additionalProperties":false,"description":"A grid or horizontal carousel of compact overview cards, each with a heading (icon/image/text) on top and an inline metric below; optionally clickable with a shared action."},"OverviewCardItem":{"type":"object","properties":{"id":{"type":"string"},"top":{"anyOf":[{"$ref":"#/$defs/IconText"},{"$ref":"#/$defs/Text"}]},"bottom":{"$ref":"#/$defs/MetricIndicatorInline"}},"required":["top"],"additionalProperties":false,"description":"One overview card: a heading slot at the top (IconText, ImageText or Text) and an optional MetricIndicatorInline at the bottom."},"IconText":{"type":"object","properties":{"icon":{"$ref":"#/$defs/Icon"},"iconVariant":{"default":"neutral","type":"string","enum":["neutral","info","success","warning","danger","inverted","filled","soft"]},"iconSize":{"default":"m","type":"string","enum":["xs","s","m","l","xl","sm","md","lg"]},"title":{"type":"string"},"subtitle":{"type":"string"},"bold":{"default":false,"type":"boolean"},"layout":{"default":"horizontal","type":"string","enum":["horizontal","vertical"]}},"required":["icon","iconVariant","iconSize","title","bold","layout"],"additionalProperties":false,"description":"An icon badge with a title and optional subtitle, laid out horizontally or vertically. iconVariant sets the badge color."},"Text":{"type":"object","properties":{"variant":{"default":"text","type":"string","enum":["text","number"]},"value":{"type":"string"},"subtext":{"type":"string"},"subtextVariant":{"default":"text","type":"string","enum":["text","number","metric"]},"size":{"default":"sm","type":"string","enum":["xs","sm","md","lg"]}},"required":["variant","value","subtextVariant","size"],"additionalProperties":false,"description":"Plain text line with optional subtext. variant 'number' uses tabular number styling; subtextVariant 'metric' colors a leading +/- subtext green/red."},"MetricIndicatorInline":{"type":"object","properties":{"value":{"type":"string"},"subtext":{"type":"string"},"trend":{"type":"object","properties":{"direction":{"type":"string","enum":["up","down"]},"value":{"type":"number"}},"required":["direction","value"],"additionalProperties":false}},"required":["value"],"additionalProperties":false,"description":"Headline metric value with an optional +/- percentage trend and subtext, all on one line."},"Tabs":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/$defs/TabItem"}}},"required":["items"],"additionalProperties":false,"description":"Tabbed container"},"TabItem":{"type":"object","properties":{"value":{"type":"string"},"trigger":{"type":"string"},"content":{"type":"array","items":{"anyOf":[{"$ref":"#/$defs/TextContent"},{"$ref":"#/$defs/MarkDownRenderer"},{"$ref":"#/$defs/CardHeader"},{"$ref":"#/$defs/Callout"},{"$ref":"#/$defs/CodeBlock"},{"$ref":"#/$defs/Image"},{"$ref":"#/$defs/Separator"},{"$ref":"#/$defs/HorizontalBarChart"},{"$ref":"#/$defs/PieChart"},{"$ref":"#/$defs/ScatterChart"},{"$ref":"#/$defs/AreaChart"},{"$ref":"#/$defs/BarChart"},{"$ref":"#/$defs/LineChart"},{"$ref":"#/$defs/Table"},{"$ref":"#/$defs/TagBlock"},{"$ref":"#/$defs/Form"},{"$ref":"#/$defs/Buttons"},{"$ref":"#/$defs/Steps"},{"$ref":"#/$defs/InlineHeader"},{"$ref":"#/$defs/EntityList"},{"$ref":"#/$defs/EditableTable"},{"$ref":"#/$defs/OverviewCardBlock"},{"$ref":"#/$defs/Architecture"},{"$ref":"#/$defs/Diff"},{"$ref":"#/$defs/FileTree"},{"$ref":"#/$defs/Mermaid"}]}}},"required":["value","trigger","content"],"additionalProperties":false,"description":"value is unique id, trigger is tab label, content is array of components"},"Architecture":{"type":"object","properties":{"nodes":{"type":"array","items":{"$ref":"#/$defs/Node"}},"edges":{"type":"array","items":{"$ref":"#/$defs/Edge"}},"groups":{"type":"array","items":{"$ref":"#/$defs/Group"}},"direction":{"type":"string","enum":["auto","right","down","lanes"]}},"required":["nodes","edges"],"additionalProperties":false,"description":"System diagram laid out automatically: write no coordinates. Every Node, Edge and Group is its own statement and click target. direction auto (default) runs right when that fits the page legibly, else down; lanes makes each top-level Group a column."},"Node":{"type":"object","properties":{"label":{"type":"string"},"kind":{"type":"string","enum":["frontend","backend","database","messagebus","cloud","security","external"]},"detail":{"type":"string"},"tag":{"type":"string"},"tone":{"type":"string","enum":["info","success","warning","danger","strong"]},"row":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["label"],"additionalProperties":false,"description":"A box in an Architecture. kind sets icon and color (default backend); detail is monospace, up to 2 lines (\\n breaks); tag is a small chip such as \"new\"; tone tints it (danger = risk, strong = where it ends); row pins it to a row (1, 2, ...) in lanes."},"Edge":{"type":"object","properties":{"from":{"$ref":"#/$defs/Node"},"to":{"$ref":"#/$defs/Node"},"label":{"type":"string"},"style":{"type":"string","enum":["solid","dashed","emphasis","security"]},"tone":{"type":"string","enum":["info","success","warning","danger"]}},"required":["from","to"],"additionalProperties":false,"description":"An arrow between two Node statements (pass their names, not strings). style: dashed for async, emphasis for the main path, security for auth or trust flows. tone colors it, e.g. danger for a risky write, success for a read."},"Group":{"type":"object","properties":{"label":{"type":"string"},"members":{"type":"array","items":{"$ref":"#/$defs/Node"}},"kind":{"type":"string","enum":["region","security","plain"]}},"required":["label","members"],"additionalProperties":false,"description":"A boundary around Node statements (a VPC, a cluster, a trust zone); members still sit where their edges put them. A group whose members are a subset of another's is drawn inside it; kind security draws it red, plain draws only its name."},"Diff":{"type":"object","properties":{"patch":{"type":"string"},"title":{"type":"string"}},"required":["patch"],"additionalProperties":false,"description":"Unified diff (git diff output, one or more files) with line numbers. patch is a raw multi-line string. Clicked lines reach the agent as file:+line."},"FileTree":{"type":"object","properties":{"entries":{"type":"array","items":{"type":"string"}}},"required":["entries"],"additionalProperties":false,"description":"File tree, one path per entry, optionally prefixed with a git status code (A new, M modified, D deleted, R old -> new) and suffixed with \" # note\". Folders are inferred. Clicked files and folders reach the agent by path."},"Mermaid":{"type":"object","properties":{"source":{"type":"string"},"caption":{"type":"string"}},"required":["source"],"additionalProperties":false,"description":"Diagram from Mermaid source (flowchart, sequence, state, class, ER, gantt). source is a raw multi-line string. Keep node labels to a few words; clicked nodes reach the agent by label."},"Stack":{"type":"object","properties":{"children":{"type":"array","items":{}},"direction":{"type":"string","enum":["row","column"]},"gap":{"type":"string","enum":["none","xs","s","m","l","xl","2xl"]},"align":{"type":"string","enum":["start","center","end","stretch","baseline"]},"justify":{"type":"string","enum":["start","center","end","between","around","evenly"]},"wrap":{"type":"boolean"}},"required":["children"],"additionalProperties":false,"description":"Flex container. direction: \"row\"|\"column\" (default \"column\"). gap: \"none\"|\"xs\"|\"s\"|\"m\"|\"l\"|\"xl\"|\"2xl\" (default \"m\"). align: \"start\"|\"center\"|\"end\"|\"stretch\"|\"baseline\". justify: \"start\"|\"center\"|\"end\"|\"between\"|\"around\"|\"evenly\"."},"Label":{"type":"object","properties":{"text":{"type":"string"}},"required":["text"],"additionalProperties":false,"description":"Text label"},"SwitchGroup":{"type":"object","properties":{"name":{"type":"string"},"items":{"type":"array","items":{"$ref":"#/$defs/SwitchItem"}},"variant":{"type":"string","enum":["clear","card","sunk"]},"value":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"boolean"}}},"required":["name","items"],"additionalProperties":false,"description":"Group of switch toggles"},"SwitchItem":{"type":"object","properties":{"label":{"type":"string"},"description":{"type":"string"},"name":{"type":"string"},"defaultChecked":{"type":"boolean"}},"required":["name"],"additionalProperties":false,"description":"Individual switch toggle"},"Accordion":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/$defs/AccordionItem"}}},"required":["items"],"additionalProperties":false,"description":"Collapsible sections"},"AccordionItem":{"type":"object","properties":{"value":{"type":"string"},"trigger":{"type":"string"},"content":{"type":"array","items":{"anyOf":[{"$ref":"#/$defs/TextContent"},{"$ref":"#/$defs/MarkDownRenderer"},{"$ref":"#/$defs/CardHeader"},{"$ref":"#/$defs/Callout"},{"$ref":"#/$defs/CodeBlock"},{"$ref":"#/$defs/Image"},{"$ref":"#/$defs/Separator"},{"$ref":"#/$defs/HorizontalBarChart"},{"$ref":"#/$defs/PieChart"},{"$ref":"#/$defs/ScatterChart"},{"$ref":"#/$defs/AreaChart"},{"$ref":"#/$defs/BarChart"},{"$ref":"#/$defs/LineChart"},{"$ref":"#/$defs/Table"},{"$ref":"#/$defs/TagBlock"},{"$ref":"#/$defs/Form"},{"$ref":"#/$defs/Buttons"},{"$ref":"#/$defs/Steps"},{"$ref":"#/$defs/InlineHeader"},{"$ref":"#/$defs/EntityList"},{"$ref":"#/$defs/EditableTable"},{"$ref":"#/$defs/OverviewCardBlock"},{"$ref":"#/$defs/Architecture"},{"$ref":"#/$defs/Diff"},{"$ref":"#/$defs/FileTree"},{"$ref":"#/$defs/Mermaid"}]}}},"required":["value","trigger","content"],"additionalProperties":false,"description":"value is unique id, trigger is section title"},"Tag":{"type":"object","properties":{"text":{"type":"string"},"icon":{"$ref":"#/$defs/Icon"},"size":{"type":"string","enum":["sm","md","lg"]},"variant":{"type":"string","enum":["neutral","info","success","warning","danger"]}},"required":["text"],"additionalProperties":false,"description":"Styled tag/badge with optional Icon and variant"},"BoldText":{"type":"object","properties":{"variant":{"default":"text","type":"string","enum":["text","number"]},"value":{"type":"string"},"subtext":{"type":"string"},"subtextVariant":{"default":"text","type":"string","enum":["text","number","metric"]},"size":{"default":"sm","type":"string","enum":["xs","sm","md","lg"]}},"required":["variant","value","subtextVariant","size"],"additionalProperties":false,"description":"Emphasized (bold) text line with optional subtext. variant 'number' uses tabular number styling; subtextVariant 'metric' colors a leading +/- subtext green/red."}},"root":"Stack"}
|
|
1
|
+
{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"Card":{"$ref":"#/$defs/Card"},"CardHeader":{"$ref":"#/$defs/CardHeader"},"TextContent":{"$ref":"#/$defs/TextContent"},"MarkDownRenderer":{"$ref":"#/$defs/MarkDownRenderer"},"Callout":{"$ref":"#/$defs/Callout"},"Image":{"$ref":"#/$defs/Image"},"CodeBlock":{"$ref":"#/$defs/CodeBlock"},"InlineHeader":{"$ref":"#/$defs/InlineHeader"},"Table":{"$ref":"#/$defs/Table"},"Col":{"$ref":"#/$defs/Col"},"EditableTable":{"$ref":"#/$defs/EditableTable"},"BarChart":{"$ref":"#/$defs/BarChart"},"LineChart":{"$ref":"#/$defs/LineChart"},"AreaChart":{"$ref":"#/$defs/AreaChart"},"HorizontalBarChart":{"$ref":"#/$defs/HorizontalBarChart"},"Series":{"$ref":"#/$defs/Series"},"PieChart":{"$ref":"#/$defs/PieChart"},"ScatterChart":{"$ref":"#/$defs/ScatterChart"},"ScatterSeries":{"$ref":"#/$defs/ScatterSeries"},"Point":{"$ref":"#/$defs/Point"},"Form":{"$ref":"#/$defs/Form"},"FormControl":{"$ref":"#/$defs/FormControl"},"Label":{"$ref":"#/$defs/Label"},"Input":{"$ref":"#/$defs/Input"},"TextArea":{"$ref":"#/$defs/TextArea"},"Select":{"$ref":"#/$defs/Select"},"SelectItem":{"$ref":"#/$defs/SelectItem"},"Slider":{"$ref":"#/$defs/Slider"},"CheckBoxGroup":{"$ref":"#/$defs/CheckBoxGroup"},"CheckBoxItem":{"$ref":"#/$defs/CheckBoxItem"},"RadioGroup":{"$ref":"#/$defs/RadioGroup"},"RadioItem":{"$ref":"#/$defs/RadioItem"},"SwitchGroup":{"$ref":"#/$defs/SwitchGroup"},"SwitchItem":{"$ref":"#/$defs/SwitchItem"},"ChipItem":{"$ref":"#/$defs/ChipItem"},"Chips":{"$ref":"#/$defs/Chips"},"OptionCard":{"$ref":"#/$defs/OptionCard"},"OptionCards":{"$ref":"#/$defs/OptionCards"},"Button":{"$ref":"#/$defs/Button"},"Buttons":{"$ref":"#/$defs/Buttons"},"Stack":{"$ref":"#/$defs/Stack"},"Tabs":{"$ref":"#/$defs/Tabs"},"TabItem":{"$ref":"#/$defs/TabItem"},"Accordion":{"$ref":"#/$defs/Accordion"},"AccordionItem":{"$ref":"#/$defs/AccordionItem"},"Steps":{"$ref":"#/$defs/Steps"},"StepsItem":{"$ref":"#/$defs/StepsItem"},"Separator":{"$ref":"#/$defs/Separator"},"TagBlock":{"$ref":"#/$defs/TagBlock"},"Tag":{"$ref":"#/$defs/Tag"},"Icon":{"$ref":"#/$defs/Icon"},"EntityList":{"$ref":"#/$defs/EntityList"},"Text":{"$ref":"#/$defs/Text"},"BoldText":{"$ref":"#/$defs/BoldText"},"IconText":{"$ref":"#/$defs/IconText"},"MetricIndicatorInline":{"$ref":"#/$defs/MetricIndicatorInline"},"OverviewCardItem":{"$ref":"#/$defs/OverviewCardItem"},"OverviewCardBlock":{"$ref":"#/$defs/OverviewCardBlock"},"Architecture":{"$ref":"#/$defs/Architecture"},"Node":{"$ref":"#/$defs/Node"},"Edge":{"$ref":"#/$defs/Edge"},"Group":{"$ref":"#/$defs/Group"},"Diff":{"$ref":"#/$defs/Diff"},"FileTree":{"$ref":"#/$defs/FileTree"},"Mermaid":{"$ref":"#/$defs/Mermaid"},"Progress":{"$ref":"#/$defs/Progress"},"Avatar":{"$ref":"#/$defs/Avatar"},"AvatarGroup":{"$ref":"#/$defs/AvatarGroup"},"Tooltip":{"$ref":"#/$defs/Tooltip"},"HoverCard":{"$ref":"#/$defs/HoverCard"},"Breadcrumb":{"$ref":"#/$defs/Breadcrumb"},"BreadcrumbItem":{"$ref":"#/$defs/BreadcrumbItem"},"Kbd":{"$ref":"#/$defs/Kbd"},"Skeleton":{"$ref":"#/$defs/Skeleton"},"Calendar":{"$ref":"#/$defs/Calendar"},"Timeline":{"$ref":"#/$defs/Timeline"},"TimelineItem":{"$ref":"#/$defs/TimelineItem"}},"required":["Card","CardHeader","TextContent","MarkDownRenderer","Callout","Image","CodeBlock","InlineHeader","Table","Col","EditableTable","BarChart","LineChart","AreaChart","HorizontalBarChart","Series","PieChart","ScatterChart","ScatterSeries","Point","Form","FormControl","Label","Input","TextArea","Select","SelectItem","Slider","CheckBoxGroup","CheckBoxItem","RadioGroup","RadioItem","SwitchGroup","SwitchItem","ChipItem","Chips","OptionCard","OptionCards","Button","Buttons","Stack","Tabs","TabItem","Accordion","AccordionItem","Steps","StepsItem","Separator","TagBlock","Tag","Icon","EntityList","Text","BoldText","IconText","MetricIndicatorInline","OverviewCardItem","OverviewCardBlock","Architecture","Node","Edge","Group","Diff","FileTree","Mermaid","Progress","Avatar","AvatarGroup","Tooltip","HoverCard","Breadcrumb","BreadcrumbItem","Kbd","Skeleton","Calendar","Timeline","TimelineItem"],"additionalProperties":false,"$defs":{"Card":{"type":"object","properties":{"children":{"type":"array","items":{"anyOf":[{"$ref":"#/$defs/TextContent"},{"$ref":"#/$defs/MarkDownRenderer"},{"$ref":"#/$defs/CardHeader"},{"$ref":"#/$defs/Callout"},{"$ref":"#/$defs/CodeBlock"},{"$ref":"#/$defs/Image"},{"$ref":"#/$defs/Separator"},{"$ref":"#/$defs/HorizontalBarChart"},{"$ref":"#/$defs/PieChart"},{"$ref":"#/$defs/ScatterChart"},{"$ref":"#/$defs/AreaChart"},{"$ref":"#/$defs/BarChart"},{"$ref":"#/$defs/LineChart"},{"$ref":"#/$defs/Table"},{"$ref":"#/$defs/TagBlock"},{"$ref":"#/$defs/Form"},{"$ref":"#/$defs/Buttons"},{"$ref":"#/$defs/Steps"},{"$ref":"#/$defs/InlineHeader"},{"$ref":"#/$defs/EntityList"},{"$ref":"#/$defs/EditableTable"},{"$ref":"#/$defs/OverviewCardBlock"},{"$ref":"#/$defs/Tabs"},{"$ref":"#/$defs/Stack"},{"$ref":"#/$defs/Architecture"},{"$ref":"#/$defs/Diff"},{"$ref":"#/$defs/FileTree"},{"$ref":"#/$defs/Mermaid"},{"$ref":"#/$defs/Progress"},{"$ref":"#/$defs/Avatar"},{"$ref":"#/$defs/AvatarGroup"},{"$ref":"#/$defs/Tooltip"},{"$ref":"#/$defs/HoverCard"},{"$ref":"#/$defs/Breadcrumb"},{"$ref":"#/$defs/Kbd"},{"$ref":"#/$defs/Skeleton"},{"$ref":"#/$defs/Calendar"},{"$ref":"#/$defs/Timeline"}]}},"variant":{"type":"string","enum":["card","sunk","clear"]},"direction":{"type":"string","enum":["row","column"]},"gap":{"type":"string","enum":["none","xs","s","m","l","xl","2xl"]},"align":{"type":"string","enum":["start","center","end","stretch","baseline"]},"justify":{"type":"string","enum":["start","center","end","between","around","evenly"]},"wrap":{"type":"boolean"}},"required":["children"],"additionalProperties":false,"description":"Styled container. variant: \"card\" (default, elevated) | \"sunk\" (recessed) | \"clear\" (transparent). Always full width. Accepts all Stack flex params (default: direction \"column\"). Cards flex to share space in row/wrap layouts."},"TextContent":{"type":"object","properties":{"text":{"type":"string"},"size":{"type":"string","enum":["small","default","large","small-heavy","large-heavy"]}},"required":["text"],"additionalProperties":false,"description":"Text block. Supports markdown. Optional size: \"small\" | \"default\" | \"large\" | \"small-heavy\" | \"large-heavy\"."},"MarkDownRenderer":{"type":"object","properties":{"textMarkdown":{"type":"string"},"variant":{"type":"string","enum":["clear","card","sunk"]}},"required":["textMarkdown"],"additionalProperties":false,"description":"Renders markdown text with optional container variant"},"CardHeader":{"type":"object","properties":{"title":{"type":"string"},"subtitle":{"type":"string"}},"additionalProperties":false,"description":"Header with optional title and subtitle"},"Callout":{"type":"object","properties":{"variant":{"type":"string","enum":["info","warning","error","success","neutral"]},"title":{"type":"string"},"description":{"type":"string"},"visible":{"type":"boolean"}},"required":["variant","title","description"],"additionalProperties":false,"description":"Callout banner. Optional visible is a reactive $boolean — auto-dismisses after 3s by setting $visible to false."},"CodeBlock":{"type":"object","properties":{"language":{"type":"string"},"codeString":{"type":"string"}},"required":["language","codeString"],"additionalProperties":false,"description":"Syntax-highlighted code block"},"Image":{"type":"object","properties":{"alt":{"type":"string"},"src":{"type":"string"}},"required":["alt"],"additionalProperties":false,"description":"Image with alt text and optional URL"},"Separator":{"type":"object","properties":{"orientation":{"type":"string","enum":["horizontal","vertical"]},"decorative":{"type":"boolean"}},"additionalProperties":false,"description":"Visual divider between content sections"},"HorizontalBarChart":{"type":"object","properties":{"labels":{"type":"array","items":{"type":"string"}},"series":{"type":"array","items":{"$ref":"#/$defs/Series"}},"variant":{"type":"string","enum":["grouped","stacked"]},"xLabel":{"type":"string"},"yLabel":{"type":"string"}},"required":["labels","series"],"additionalProperties":false,"description":"Horizontal bars; prefer when category labels are long or for ranked lists"},"Series":{"type":"object","properties":{"category":{"type":"string"},"values":{"type":"array","items":{"type":"number"}}},"required":["category","values"],"additionalProperties":false,"description":"One data series"},"PieChart":{"type":"object","properties":{"labels":{"type":"array","items":{"type":"string"}},"values":{"type":"array","items":{"type":"number"}},"variant":{"type":"string","enum":["pie","donut"]},"appearance":{"type":"string","enum":["circular","semiCircular"]}},"required":["labels","values"],"additionalProperties":false,"description":"Circular slices; use plucked arrays: PieChart(data.categories, data.values)"},"ScatterChart":{"type":"object","properties":{"datasets":{"type":"array","items":{"$ref":"#/$defs/ScatterSeries"}},"xLabel":{"type":"string"},"yLabel":{"type":"string"}},"required":["datasets"],"additionalProperties":false,"description":"X/Y scatter plot; use for correlations, distributions, and clustering"},"ScatterSeries":{"type":"object","properties":{"name":{"type":"string"},"points":{"type":"array","items":{"$ref":"#/$defs/Point"}}},"required":["name","points"],"additionalProperties":false,"description":"Named dataset"},"Point":{"type":"object","properties":{"x":{"type":"number"},"y":{"type":"number"},"z":{"type":"number"}},"required":["x","y"],"additionalProperties":false,"description":"Data point with numeric coordinates"},"AreaChart":{"type":"object","properties":{"labels":{"type":"array","items":{"type":"string"}},"series":{"type":"array","items":{"$ref":"#/$defs/Series"}},"variant":{"type":"string","enum":["linear","natural","step"]},"xLabel":{"type":"string"},"yLabel":{"type":"string"},"height":{"type":"number"}},"required":["labels","series"],"additionalProperties":false,"description":"Filled area under lines; use for cumulative totals or volume trends over time"},"BarChart":{"type":"object","properties":{"labels":{"type":"array","items":{"type":"string"}},"series":{"type":"array","items":{"$ref":"#/$defs/Series"}},"variant":{"type":"string","enum":["grouped","stacked"]},"xLabel":{"type":"string"},"yLabel":{"type":"string"},"height":{"type":"number"}},"required":["labels","series"],"additionalProperties":false,"description":"Vertical bars; use for comparing values across categories with one or more series"},"LineChart":{"type":"object","properties":{"labels":{"type":"array","items":{"type":"string"}},"series":{"type":"array","items":{"$ref":"#/$defs/Series"}},"variant":{"type":"string","enum":["linear","natural","step"]},"xLabel":{"type":"string"},"yLabel":{"type":"string"},"height":{"type":"number"}},"required":["labels","series"],"additionalProperties":false,"description":"Lines over categories; use for trends and continuous data over time"},"Table":{"type":"object","properties":{"columns":{"type":"array","items":{"$ref":"#/$defs/Col"}}},"required":["columns"],"additionalProperties":false,"description":"Data table — column-oriented. Each Col holds its own data array."},"Col":{"type":"object","properties":{"label":{"type":"string"},"data":{},"type":{"type":"string","enum":["string","number","action"]}},"required":["label","data"],"additionalProperties":false,"description":"Column definition — holds label + data array"},"TagBlock":{"type":"object","properties":{"tags":{"type":"array","items":{"type":"string"}},"size":{"type":"string","enum":["sm","md","lg"]}},"required":["tags"],"additionalProperties":false,"description":"tags is an array of strings; optional size sm | md | lg"},"Form":{"type":"object","properties":{"name":{"type":"string"},"buttons":{"$ref":"#/$defs/Buttons"},"fields":{"default":[],"type":"array","items":{"$ref":"#/$defs/FormControl"}}},"required":["name","buttons","fields"],"additionalProperties":false,"description":"Form container with fields and explicit action buttons"},"Buttons":{"type":"object","properties":{"buttons":{"type":"array","items":{"$ref":"#/$defs/Button"}},"direction":{"type":"string","enum":["row","column"]}},"required":["buttons"],"additionalProperties":false,"description":"Group of Button components. direction: \"row\" (default) | \"column\"."},"Button":{"type":"object","properties":{"label":{"type":"string"},"action":{"$ref":"#/$defs/ActionExpression"},"variant":{"type":"string","enum":["primary","secondary","tertiary"]},"type":{"type":"string","enum":["normal","destructive"]},"size":{"type":"string","enum":["extra-small","small","medium","large"]}},"required":["label"],"additionalProperties":false,"description":"Clickable button"},"ActionExpression":{"anyOf":[{"type":"object","properties":{"type":{"type":"string","const":"open_url"},"url":{"type":"string"}},"required":["type","url"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"continue_conversation"},"context":{"type":"string"}},"required":["type"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string"},"params":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["type"],"additionalProperties":false}]},"FormControl":{"type":"object","properties":{"label":{"type":"string"},"input":{"anyOf":[{"$ref":"#/$defs/Input"},{"$ref":"#/$defs/TextArea"},{"$ref":"#/$defs/Select"},{"$ref":"#/$defs/Slider"},{"$ref":"#/$defs/CheckBoxGroup"},{"$ref":"#/$defs/RadioGroup"},{"$ref":"#/$defs/Chips"},{"$ref":"#/$defs/OptionCards"}]},"hint":{"type":"string"}},"required":["label","input"],"additionalProperties":false,"description":"Field with label, input component, and optional hint text"},"Input":{"type":"object","properties":{"name":{"type":"string"},"placeholder":{"type":"string"},"type":{"type":"string","enum":["text","email","password","number","url"]},"rules":{"type":"object","properties":{"required":{"type":"boolean"},"email":{"type":"boolean"},"url":{"type":"boolean"},"numeric":{"type":"boolean"},"min":{"type":"number"},"max":{"type":"number"},"minLength":{"type":"number"},"maxLength":{"type":"number"},"pattern":{"type":"string"}},"additionalProperties":false},"value":{"type":"string"}},"required":["name"],"additionalProperties":false},"TextArea":{"type":"object","properties":{"name":{"type":"string"},"placeholder":{"type":"string"},"rows":{"type":"number"},"rules":{"type":"object","properties":{"required":{"type":"boolean"},"email":{"type":"boolean"},"url":{"type":"boolean"},"numeric":{"type":"boolean"},"min":{"type":"number"},"max":{"type":"number"},"minLength":{"type":"number"},"maxLength":{"type":"number"},"pattern":{"type":"string"}},"additionalProperties":false},"value":{"type":"string"}},"required":["name"],"additionalProperties":false},"Select":{"type":"object","properties":{"name":{"type":"string"},"items":{"type":"array","items":{"$ref":"#/$defs/SelectItem"}},"placeholder":{"type":"string"},"rules":{"type":"object","properties":{"required":{"type":"boolean"},"email":{"type":"boolean"},"url":{"type":"boolean"},"numeric":{"type":"boolean"},"min":{"type":"number"},"max":{"type":"number"},"minLength":{"type":"number"},"maxLength":{"type":"number"},"pattern":{"type":"string"}},"additionalProperties":false},"value":{"type":"string"},"size":{"type":"string","enum":["small","medium","large"]}},"required":["name","items"],"additionalProperties":false},"SelectItem":{"type":"object","properties":{"value":{"type":"string"},"label":{"type":"string"}},"required":["value","label"],"additionalProperties":false,"description":"Option for Select"},"Slider":{"type":"object","properties":{"name":{"type":"string"},"variant":{"type":"string","enum":["continuous","discrete"]},"min":{"type":"number"},"max":{"type":"number"},"step":{"type":"number"},"defaultValue":{"type":"array","items":{"type":"number"}},"label":{"type":"string"},"rules":{"type":"object","properties":{"required":{"type":"boolean"},"email":{"type":"boolean"},"url":{"type":"boolean"},"numeric":{"type":"boolean"},"min":{"type":"number"},"max":{"type":"number"},"minLength":{"type":"number"},"maxLength":{"type":"number"},"pattern":{"type":"string"}},"additionalProperties":false},"value":{"type":"array","items":{"type":"number"}}},"required":["name","variant","min","max"],"additionalProperties":false,"description":"Numeric slider input; supports continuous and discrete (stepped) variants"},"CheckBoxGroup":{"type":"object","properties":{"name":{"type":"string"},"items":{"type":"array","items":{"$ref":"#/$defs/CheckBoxItem"}},"rules":{"type":"object","properties":{"required":{"type":"boolean"},"email":{"type":"boolean"},"url":{"type":"boolean"},"numeric":{"type":"boolean"},"min":{"type":"number"},"max":{"type":"number"},"minLength":{"type":"number"},"maxLength":{"type":"number"},"pattern":{"type":"string"}},"additionalProperties":false},"value":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"boolean"}}},"required":["name","items"],"additionalProperties":false},"CheckBoxItem":{"type":"object","properties":{"label":{"type":"string"},"description":{"type":"string"},"name":{"type":"string"},"defaultChecked":{"type":"boolean"}},"required":["label","description","name"],"additionalProperties":false},"RadioGroup":{"type":"object","properties":{"name":{"type":"string"},"items":{"type":"array","items":{"$ref":"#/$defs/RadioItem"}},"defaultValue":{"type":"string"},"rules":{"type":"object","properties":{"required":{"type":"boolean"},"email":{"type":"boolean"},"url":{"type":"boolean"},"numeric":{"type":"boolean"},"min":{"type":"number"},"max":{"type":"number"},"minLength":{"type":"number"},"maxLength":{"type":"number"},"pattern":{"type":"string"}},"additionalProperties":false},"value":{"type":"string"}},"required":["name","items"],"additionalProperties":false},"RadioItem":{"type":"object","properties":{"label":{"type":"string"},"description":{"type":"string"},"value":{"type":"string"}},"required":["label","description","value"],"additionalProperties":false},"Chips":{"type":"object","properties":{"name":{"type":"string"},"type":{"default":"multiple","type":"string","enum":["single","multiple"]},"items":{"default":[],"type":"array","items":{"$ref":"#/$defs/ChipItem"}},"rules":{"type":"object","properties":{"required":{"type":"boolean"},"email":{"type":"boolean"},"url":{"type":"boolean"},"numeric":{"type":"boolean"},"min":{"type":"number"},"max":{"type":"number"},"minLength":{"type":"number"},"maxLength":{"type":"number"},"pattern":{"type":"string"}},"additionalProperties":false},"defaultValue":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}},"required":["name","type","items"],"additionalProperties":false,"description":"A form field of compact selectable chips for choosing one or many short options; the selection is stored under `name`."},"ChipItem":{"type":"object","properties":{"value":{"type":"string"},"label":{"type":"string"},"icon":{"$ref":"#/$defs/Icon"},"disabled":{"type":"boolean"}},"required":["value","label"],"additionalProperties":false,"description":"A single selectable chip inside a Chips group, with a value, label and optional icon."},"Icon":{"type":"object","properties":{"name":{"type":"string"},"category":{"type":"string"}},"required":["name"],"additionalProperties":false,"description":"A lucide icon by kebab-case name (e.g. 'circle-check'). Optional category picks a topical fallback when the name doesn't resolve."},"OptionCards":{"type":"object","properties":{"name":{"type":"string"},"type":{"default":"single","type":"string","enum":["single","multiple"]},"items":{"default":[],"type":"array","items":{"$ref":"#/$defs/OptionCard"}},"rules":{"type":"object","properties":{"required":{"type":"boolean"},"email":{"type":"boolean"},"url":{"type":"boolean"},"numeric":{"type":"boolean"},"min":{"type":"number"},"max":{"type":"number"},"minLength":{"type":"number"},"maxLength":{"type":"number"},"pattern":{"type":"string"}},"additionalProperties":false},"defaultValue":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}},"required":["name","type","items"],"additionalProperties":false,"description":"A form field of selectable cards (title, optional subtitle, optional icon or image) laid out in a responsive grid for choosing one or many options; the selection is stored under `name`."},"OptionCard":{"type":"object","properties":{"value":{"type":"string"},"title":{"type":"string"},"subtitle":{"type":"string"},"topContent":{"anyOf":[{"$ref":"#/$defs/Icon"},{"$ref":"#/$defs/Image"}]},"disabled":{"type":"boolean"}},"required":["value","title"],"additionalProperties":false,"description":"A single selectable card inside an OptionCards group, with a value, title, optional subtitle and an optional Icon or Image on top."},"Steps":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/$defs/StepsItem"}}},"required":["items"],"additionalProperties":false,"description":"Step-by-step guide"},"StepsItem":{"type":"object","properties":{"title":{"type":"string"},"details":{"type":"string"}},"required":["title","details"],"additionalProperties":false,"description":"title and details text for one step"},"InlineHeader":{"type":"object","properties":{"heading":{"type":"string"},"description":{"type":"string"}},"required":["heading"],"additionalProperties":false,"description":"Compact section heading with an optional one-line description, for use inside cards."},"EntityList":{"type":"object","properties":{"rows":{"default":[],"type":"array","items":{"type":"object","properties":{"left":{"type":"string"},"right":{"type":"string"},"rightVariant":{"default":"text","type":"string","enum":["text","number"]}},"required":["left","right","rightVariant"],"additionalProperties":false}},"size":{"default":"default","type":"string","enum":["small","default"]},"header":{"type":"object","properties":{"left":{"type":"string"},"right":{"type":"string"},"rightVariant":{"default":"text","type":"string","enum":["text","number"]}},"required":["left","right","rightVariant"],"additionalProperties":false},"footer":{"type":"object","properties":{"left":{"type":"string"},"right":{"type":"string"},"rightVariant":{"default":"text","type":"string","enum":["text","number"]}},"required":["left","right","rightVariant"],"additionalProperties":false}},"required":["rows","size"],"additionalProperties":false,"description":"Two-column key/value rows (left label, right value). size 'default' supports optional header and footer rows; rightVariant 'number' uses tabular numbers."},"EditableTable":{"type":"object","properties":{"name":{"default":"","type":"string"},"columns":{"default":[],"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text","number","date-single","select","url"]},"key":{"default":"default","type":"string"},"header":{"default":"","type":"string"},"width":{"type":"number"},"options":{"type":"array","items":{"type":"object","properties":{"value":{"type":"string"},"label":{"type":"string"}},"required":["value","label"],"additionalProperties":false}}},"required":["type","key","header"],"additionalProperties":false}},"data":{"default":[],"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"values":{"type":"array","items":{"type":["string","number"]}}},"required":["id","values"],"additionalProperties":false}}},"required":["name","columns","data"],"additionalProperties":false,"description":"Spreadsheet-like table whose cells the user can edit inline (text, number, url, date, select columns); edits are saved back as a form field"},"OverviewCardBlock":{"type":"object","properties":{"items":{"minItems":2,"type":"array","items":{"$ref":"#/$defs/OverviewCardItem"}},"layout":{"default":"grid","type":"string","enum":["grid","carousel"]},"responsive":{"default":true,"type":"boolean"},"action":{"$ref":"#/$defs/ActionExpression"},"gap":{"type":["number","string"]}},"required":["items","layout","responsive"],"additionalProperties":false,"description":"A grid or horizontal carousel of compact overview cards, each with a heading (icon/image/text) on top and an inline metric below; optionally clickable with a shared action."},"OverviewCardItem":{"type":"object","properties":{"id":{"type":"string"},"top":{"anyOf":[{"$ref":"#/$defs/IconText"},{"$ref":"#/$defs/Text"}]},"bottom":{"$ref":"#/$defs/MetricIndicatorInline"}},"required":["top"],"additionalProperties":false,"description":"One overview card: a heading slot at the top (IconText, ImageText or Text) and an optional MetricIndicatorInline at the bottom."},"IconText":{"type":"object","properties":{"icon":{"$ref":"#/$defs/Icon"},"iconVariant":{"default":"neutral","type":"string","enum":["neutral","info","success","warning","danger","inverted","filled","soft"]},"iconSize":{"default":"m","type":"string","enum":["xs","s","m","l","xl","sm","md","lg"]},"title":{"type":"string"},"subtitle":{"type":"string"},"bold":{"default":false,"type":"boolean"},"layout":{"default":"horizontal","type":"string","enum":["horizontal","vertical"]}},"required":["icon","iconVariant","iconSize","title","bold","layout"],"additionalProperties":false,"description":"An icon badge with a title and optional subtitle, laid out horizontally or vertically. iconVariant sets the badge color."},"Text":{"type":"object","properties":{"variant":{"default":"text","type":"string","enum":["text","number"]},"value":{"type":"string"},"subtext":{"type":"string"},"subtextVariant":{"default":"text","type":"string","enum":["text","number","metric"]},"size":{"default":"sm","type":"string","enum":["xs","sm","md","lg"]}},"required":["variant","value","subtextVariant","size"],"additionalProperties":false,"description":"Plain text line with optional subtext. variant 'number' uses tabular number styling; subtextVariant 'metric' colors a leading +/- subtext green/red."},"MetricIndicatorInline":{"type":"object","properties":{"value":{"type":"string"},"subtext":{"type":"string"},"trend":{"type":"object","properties":{"direction":{"type":"string","enum":["up","down"]},"value":{"type":"number"}},"required":["direction","value"],"additionalProperties":false}},"required":["value"],"additionalProperties":false,"description":"Headline metric value with an optional +/- percentage trend and subtext, all on one line."},"Tabs":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/$defs/TabItem"}}},"required":["items"],"additionalProperties":false,"description":"Tabbed container"},"TabItem":{"type":"object","properties":{"value":{"type":"string"},"trigger":{"type":"string"},"content":{"type":"array","items":{"anyOf":[{"$ref":"#/$defs/TextContent"},{"$ref":"#/$defs/MarkDownRenderer"},{"$ref":"#/$defs/CardHeader"},{"$ref":"#/$defs/Callout"},{"$ref":"#/$defs/CodeBlock"},{"$ref":"#/$defs/Image"},{"$ref":"#/$defs/Separator"},{"$ref":"#/$defs/HorizontalBarChart"},{"$ref":"#/$defs/PieChart"},{"$ref":"#/$defs/ScatterChart"},{"$ref":"#/$defs/AreaChart"},{"$ref":"#/$defs/BarChart"},{"$ref":"#/$defs/LineChart"},{"$ref":"#/$defs/Table"},{"$ref":"#/$defs/TagBlock"},{"$ref":"#/$defs/Form"},{"$ref":"#/$defs/Buttons"},{"$ref":"#/$defs/Steps"},{"$ref":"#/$defs/InlineHeader"},{"$ref":"#/$defs/EntityList"},{"$ref":"#/$defs/EditableTable"},{"$ref":"#/$defs/OverviewCardBlock"},{"$ref":"#/$defs/Architecture"},{"$ref":"#/$defs/Diff"},{"$ref":"#/$defs/FileTree"},{"$ref":"#/$defs/Mermaid"},{"$ref":"#/$defs/Progress"},{"$ref":"#/$defs/Avatar"},{"$ref":"#/$defs/AvatarGroup"},{"$ref":"#/$defs/Tooltip"},{"$ref":"#/$defs/HoverCard"},{"$ref":"#/$defs/Breadcrumb"},{"$ref":"#/$defs/Kbd"},{"$ref":"#/$defs/Skeleton"},{"$ref":"#/$defs/Calendar"},{"$ref":"#/$defs/Timeline"}]}}},"required":["value","trigger","content"],"additionalProperties":false,"description":"value is unique id, trigger is tab label, content is array of components"},"Architecture":{"type":"object","properties":{"nodes":{"type":"array","items":{"$ref":"#/$defs/Node"}},"edges":{"type":"array","items":{"$ref":"#/$defs/Edge"}},"groups":{"type":"array","items":{"$ref":"#/$defs/Group"}},"direction":{"type":"string","enum":["auto","right","down","lanes"]}},"required":["nodes","edges"],"additionalProperties":false,"description":"System diagram laid out automatically: write no coordinates. Every Node, Edge and Group is its own statement and click target. direction auto (default) runs right when that fits the page legibly, else down; lanes makes each top-level Group a column."},"Node":{"type":"object","properties":{"label":{"type":"string"},"kind":{"type":"string","enum":["frontend","backend","database","messagebus","cloud","security","external"]},"detail":{"type":"string"},"tag":{"type":"string"},"tone":{"type":"string","enum":["info","success","warning","danger","strong"]},"row":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["label"],"additionalProperties":false,"description":"A box in an Architecture. kind sets icon and color (default backend); detail is monospace, up to 2 lines (\\n breaks); tag is a small chip such as \"new\"; tone tints it (danger = risk, strong = where it ends); row pins it to a row (1, 2, ...) in lanes."},"Edge":{"type":"object","properties":{"from":{"$ref":"#/$defs/Node"},"to":{"$ref":"#/$defs/Node"},"label":{"type":"string"},"style":{"type":"string","enum":["solid","dashed","emphasis","security"]},"tone":{"type":"string","enum":["info","success","warning","danger"]}},"required":["from","to"],"additionalProperties":false,"description":"An arrow between two Node statements (pass their names, not strings). style: dashed for async, emphasis for the main path, security for auth or trust flows. tone colors it, e.g. danger for a risky write, success for a read."},"Group":{"type":"object","properties":{"label":{"type":"string"},"members":{"type":"array","items":{"$ref":"#/$defs/Node"}},"kind":{"type":"string","enum":["region","security","plain"]}},"required":["label","members"],"additionalProperties":false,"description":"A boundary around Node statements (a VPC, a cluster, a trust zone); members still sit where their edges put them. A group whose members are a subset of another's is drawn inside it; kind security draws it red, plain draws only its name."},"Diff":{"type":"object","properties":{"patch":{"type":"string"},"title":{"type":"string"}},"required":["patch"],"additionalProperties":false,"description":"Unified diff (git diff output, one or more files) with line numbers. patch is a raw multi-line string. Clicked lines reach the agent as file:+line."},"FileTree":{"type":"object","properties":{"entries":{"type":"array","items":{"type":"string"}}},"required":["entries"],"additionalProperties":false,"description":"File tree, one path per entry, optionally prefixed with a git status code (A new, M modified, D deleted, R old -> new) and suffixed with \" # note\". Folders are inferred. Clicked files and folders reach the agent by path."},"Mermaid":{"type":"object","properties":{"source":{"type":"string"},"caption":{"type":"string"}},"required":["source"],"additionalProperties":false,"description":"Diagram from Mermaid source (flowchart, sequence, state, class, ER, gantt). source is a raw multi-line string. Keep node labels to a few words; clicked nodes reach the agent by label."},"Progress":{"type":"object","properties":{"value":{"type":"number"},"label":{"type":"string"},"max":{"type":"number"}},"required":["value"],"additionalProperties":false,"description":"Progress bar. value counts toward max (default 100); label names what is progressing. Shows a percentage."},"Avatar":{"type":"object","properties":{"name":{"type":"string"},"src":{"type":"string"},"size":{"type":"string","enum":["md","lg"]}},"required":["name"],"additionalProperties":false,"description":"Round avatar for a person. Shows the initials of name; src is an optional https image URL."},"AvatarGroup":{"type":"object","properties":{"avatars":{"type":"array","items":{"$ref":"#/$defs/Avatar"}},"max":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["avatars"],"additionalProperties":false,"description":"Overlapping Avatars, for reviewers or owners. max (default 4) shows the rest as +N."},"Tooltip":{"type":"object","properties":{"text":{"type":"string"},"tip":{"type":"string"}},"required":["text","tip"],"additionalProperties":false,"description":"Inline text with a short hint on hover or focus (a term and its definition). Keep tip to one line."},"HoverCard":{"type":"object","properties":{"text":{"type":"string"},"title":{"type":"string"},"body":{"type":"string"}},"required":["text","title"],"additionalProperties":false,"description":"Inline text that shows a small card (title and a line or two of body) on hover or focus, e.g. a person or a service."},"Breadcrumb":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/$defs/BreadcrumbItem"}}},"required":["items"],"additionalProperties":false,"description":"Path trail such as Repo / Package / File, from BreadcrumbItems. Each item is a click target."},"BreadcrumbItem":{"type":"object","properties":{"label":{"type":"string"},"href":{"type":"string"}},"required":["label"],"additionalProperties":false,"description":"One step of a Breadcrumb. href is optional; the last item is the current page."},"Kbd":{"type":"object","properties":{"keys":{"type":"string"}},"required":["keys"],"additionalProperties":false,"description":"Keyboard shortcut. keys joins keys with \"+\", e.g. \"Ctrl+K\"; each key is drawn as a key cap."},"Skeleton":{"type":"object","properties":{"lines":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"shape":{"type":"string","enum":["lines","avatar"]}},"additionalProperties":false,"description":"Grey placeholder block for content not yet written or loaded (default 3 lines). shape avatar adds a round head."},"Calendar":{"type":"object","properties":{"month":{"type":"string"},"highlights":{"type":"array","items":{"type":"string"}}},"required":["month"],"additionalProperties":false,"description":"Read-only month grid (not a date picker). month is \"YYYY-MM\"; highlights lists \"YYYY-MM-DD\" or \"YYYY-MM-DD label\" entries to mark, e.g. a freeze or a release. Marked days are click targets."},"Timeline":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/$defs/TimelineItem"}}},"required":["items"],"additionalProperties":false,"description":"Vertical history or schedule of TimelineItems, oldest first. Each item is a click target."},"TimelineItem":{"type":"object","properties":{"title":{"type":"string"},"date":{"type":"string"},"detail":{"type":"string"},"state":{"type":"string","enum":["done","current","upcoming"]}},"required":["title"],"additionalProperties":false,"description":"One event in a Timeline. state: done (default), current or upcoming."},"Stack":{"type":"object","properties":{"children":{"type":"array","items":{}},"direction":{"type":"string","enum":["row","column"]},"gap":{"type":"string","enum":["none","xs","s","m","l","xl","2xl"]},"align":{"type":"string","enum":["start","center","end","stretch","baseline"]},"justify":{"type":"string","enum":["start","center","end","between","around","evenly"]},"wrap":{"type":"boolean"}},"required":["children"],"additionalProperties":false,"description":"Flex container. direction: \"row\"|\"column\" (default \"column\"). gap: \"none\"|\"xs\"|\"s\"|\"m\"|\"l\"|\"xl\"|\"2xl\" (default \"m\"). align: \"start\"|\"center\"|\"end\"|\"stretch\"|\"baseline\". justify: \"start\"|\"center\"|\"end\"|\"between\"|\"around\"|\"evenly\"."},"Label":{"type":"object","properties":{"text":{"type":"string"}},"required":["text"],"additionalProperties":false,"description":"Text label"},"SwitchGroup":{"type":"object","properties":{"name":{"type":"string"},"items":{"type":"array","items":{"$ref":"#/$defs/SwitchItem"}},"variant":{"type":"string","enum":["clear","card","sunk"]},"value":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"boolean"}}},"required":["name","items"],"additionalProperties":false,"description":"Group of switch toggles"},"SwitchItem":{"type":"object","properties":{"label":{"type":"string"},"description":{"type":"string"},"name":{"type":"string"},"defaultChecked":{"type":"boolean"}},"required":["name"],"additionalProperties":false,"description":"Individual switch toggle"},"Accordion":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/$defs/AccordionItem"}}},"required":["items"],"additionalProperties":false,"description":"Collapsible sections"},"AccordionItem":{"type":"object","properties":{"value":{"type":"string"},"trigger":{"type":"string"},"content":{"type":"array","items":{"anyOf":[{"$ref":"#/$defs/TextContent"},{"$ref":"#/$defs/MarkDownRenderer"},{"$ref":"#/$defs/CardHeader"},{"$ref":"#/$defs/Callout"},{"$ref":"#/$defs/CodeBlock"},{"$ref":"#/$defs/Image"},{"$ref":"#/$defs/Separator"},{"$ref":"#/$defs/HorizontalBarChart"},{"$ref":"#/$defs/PieChart"},{"$ref":"#/$defs/ScatterChart"},{"$ref":"#/$defs/AreaChart"},{"$ref":"#/$defs/BarChart"},{"$ref":"#/$defs/LineChart"},{"$ref":"#/$defs/Table"},{"$ref":"#/$defs/TagBlock"},{"$ref":"#/$defs/Form"},{"$ref":"#/$defs/Buttons"},{"$ref":"#/$defs/Steps"},{"$ref":"#/$defs/InlineHeader"},{"$ref":"#/$defs/EntityList"},{"$ref":"#/$defs/EditableTable"},{"$ref":"#/$defs/OverviewCardBlock"},{"$ref":"#/$defs/Architecture"},{"$ref":"#/$defs/Diff"},{"$ref":"#/$defs/FileTree"},{"$ref":"#/$defs/Mermaid"},{"$ref":"#/$defs/Progress"},{"$ref":"#/$defs/Avatar"},{"$ref":"#/$defs/AvatarGroup"},{"$ref":"#/$defs/Tooltip"},{"$ref":"#/$defs/HoverCard"},{"$ref":"#/$defs/Breadcrumb"},{"$ref":"#/$defs/Kbd"},{"$ref":"#/$defs/Skeleton"},{"$ref":"#/$defs/Calendar"},{"$ref":"#/$defs/Timeline"}]}}},"required":["value","trigger","content"],"additionalProperties":false,"description":"value is unique id, trigger is section title"},"Tag":{"type":"object","properties":{"text":{"type":"string"},"icon":{"$ref":"#/$defs/Icon"},"size":{"type":"string","enum":["sm","md","lg"]},"variant":{"type":"string","enum":["neutral","info","success","warning","danger"]}},"required":["text"],"additionalProperties":false,"description":"Styled tag/badge with optional Icon and variant"},"BoldText":{"type":"object","properties":{"variant":{"default":"text","type":"string","enum":["text","number"]},"value":{"type":"string"},"subtext":{"type":"string"},"subtextVariant":{"default":"text","type":"string","enum":["text","number","metric"]},"size":{"default":"sm","type":"string","enum":["xs","sm","md","lg"]}},"required":["variant","value","subtextVariant","size"],"additionalProperties":false,"description":"Emphasized (bold) text line with optional subtext. variant 'number' uses tabular number styling; subtextVariant 'metric' colors a leading +/- subtext green/red."}},"root":"Stack"}
|
package/package.json
CHANGED
|
@@ -1,30 +1,44 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "austere-axi",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.4.0",
|
|
4
4
|
"description": "Agent-authored review artifacts in OpenUI Lang: a few hundred tokens instead of a whole HTML page, with statement-level annotations fed back to the agent.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"bin": {
|
|
8
8
|
"austere-axi": "dist/cli.mjs"
|
|
9
9
|
},
|
|
10
|
+
"exports": {
|
|
11
|
+
"./pack": {
|
|
12
|
+
"types": "./types/pack.d.ts"
|
|
13
|
+
},
|
|
14
|
+
"./catalog": {
|
|
15
|
+
"types": "./types/catalog.d.ts"
|
|
16
|
+
},
|
|
17
|
+
"./pack-kit": {
|
|
18
|
+
"types": "./types/pack-kit.d.ts"
|
|
19
|
+
},
|
|
20
|
+
"./package.json": "./package.json"
|
|
21
|
+
},
|
|
10
22
|
"files": [
|
|
11
23
|
"dist",
|
|
12
24
|
"skills",
|
|
25
|
+
"types",
|
|
13
26
|
"README.md",
|
|
14
27
|
"LICENSE"
|
|
15
28
|
],
|
|
16
29
|
"engines": {
|
|
17
|
-
"node": ">=
|
|
30
|
+
"node": ">=22.18"
|
|
18
31
|
},
|
|
19
32
|
"scripts": {
|
|
20
33
|
"build": "node scripts/build.mjs",
|
|
21
34
|
"pretest": "node scripts/build.mjs spec",
|
|
22
35
|
"test": "node --test test/*.test.js",
|
|
23
|
-
"test:browser": "node scripts/build.mjs runtime mermaid spec chrome && node --test test/browser/*.test.js",
|
|
36
|
+
"test:browser": "node scripts/build.mjs packs runtime mermaid spec chrome && node --test test/browser/*.test.js",
|
|
24
37
|
"signatures": "node scripts/signatures.mjs",
|
|
25
38
|
"gallery": "node scripts/gallery.mjs",
|
|
26
39
|
"shot": "node scripts/shot.mjs",
|
|
27
|
-
"prepublishOnly": "npm run build && npm test"
|
|
40
|
+
"prepublishOnly": "npm run build && npm test",
|
|
41
|
+
"typecheck": "tsc --noEmit -p jsconfig.json"
|
|
28
42
|
},
|
|
29
43
|
"keywords": [
|
|
30
44
|
"axi",
|
|
@@ -45,12 +59,14 @@
|
|
|
45
59
|
"@openuidev/react-headless": "^0.18.1",
|
|
46
60
|
"@openuidev/react-lang": "^1.0.1",
|
|
47
61
|
"@openuidev/react-ui": "^0.18.1",
|
|
62
|
+
"@types/node": "^26.6.6",
|
|
48
63
|
"esbuild": "^0.28.2",
|
|
49
64
|
"lucide-react": "^0.575.0",
|
|
50
65
|
"mermaid": "^11.17.2",
|
|
51
66
|
"playwright-core": "^1.64.1",
|
|
52
67
|
"react": "^19.3.1",
|
|
53
68
|
"react-dom": "^19.3.1",
|
|
69
|
+
"typescript": "^7.0.2",
|
|
54
70
|
"zod": "^4.6.7",
|
|
55
71
|
"zustand": "^4.5.7"
|
|
56
72
|
}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: austere-setup
|
|
3
|
+
description: Set up austere-axi on this machine for the user. Checks Node, installs the `austere` skill, optionally installs the CLI globally and turns on the hub, then proves the review loop works with a test page. Use when the user asks to install, set up or configure austere-axi.
|
|
4
|
+
license: MIT
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# austere-setup
|
|
8
|
+
|
|
9
|
+
Set up austere-axi for the user. Do the steps in order. Stop and tell the user when a step fails.
|
|
10
|
+
|
|
11
|
+
Ask the user only the questions in steps 3 and 4. Use the default for each if they do not answer.
|
|
12
|
+
|
|
13
|
+
## 1. Check Node
|
|
14
|
+
|
|
15
|
+
Run `node --version`.
|
|
16
|
+
|
|
17
|
+
- Node 22.18 or later is necessary.
|
|
18
|
+
|
|
19
|
+
If Node is older than 22.18, stop. Tell the user to install a current Node LTS.
|
|
20
|
+
|
|
21
|
+
## 2. Check the CLI
|
|
22
|
+
|
|
23
|
+
Run `npx -y austere-axi --help`. It must print the `WORKFLOW` section. If npm cannot reach the registry, stop and show the error.
|
|
24
|
+
|
|
25
|
+
## 3. Install the `austere` skill
|
|
26
|
+
|
|
27
|
+
This skill tells agents when to make a page, and adds the `/austere` command.
|
|
28
|
+
|
|
29
|
+
Ask: install it for all projects (global), or only this project? Default: global.
|
|
30
|
+
|
|
31
|
+
```sh
|
|
32
|
+
npx skills add MandalorianBatman/austere-axi --skill austere -g # global
|
|
33
|
+
npx skills add MandalorianBatman/austere-axi --skill austere # this project
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
If the `skills` tool asks which agents to install for, pick the agent the user works with.
|
|
37
|
+
|
|
38
|
+
## 4. Optional choices
|
|
39
|
+
|
|
40
|
+
Ask the user about each item. Default: no.
|
|
41
|
+
|
|
42
|
+
- **Global command.** `npm install -g austere-axi`. Then `austere-axi` works without `npx -y`. Update it later with `npm update -g austere-axi`.
|
|
43
|
+
- **Hub.** `npx -y austere-axi hub on`. It keeps the server running and lists every page at `http://127.0.0.1:4388/`.
|
|
44
|
+
- **Phone review.** If Tailscale is running, the server also listens on the tailnet, and `open` prints a phone link. Nothing to install. Run `tailscale status` to check.
|
|
45
|
+
|
|
46
|
+
On a machine with no screen (SSH, CI, container), tell the user to set `AUSTERE_AXI_NO_OPEN=1`, so the CLI prints links and does not try to open a browser.
|
|
47
|
+
|
|
48
|
+
## 5. Prove it works
|
|
49
|
+
|
|
50
|
+
Write `austere-setup-test.html` in the current directory:
|
|
51
|
+
|
|
52
|
+
```html
|
|
53
|
+
<!doctype html>
|
|
54
|
+
<html><head><meta charset="utf-8"><title>austere-axi works</title>
|
|
55
|
+
<script src="https://cdn.jsdelivr.net/npm/austere-axi@0/dist/austere.js"></script></head>
|
|
56
|
+
<body><script type="text/openui">
|
|
57
|
+
root = Stack([card], "column", "l")
|
|
58
|
+
card = Card([CardHeader("austere-axi works", "Setup test"), text, buttons])
|
|
59
|
+
text = MarkDownRenderer("Click a part of this page to annotate it, or press the button.")
|
|
60
|
+
buttons = Buttons([Button("It works")])
|
|
61
|
+
</script></body></html>
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
Then:
|
|
65
|
+
|
|
66
|
+
1. `npx -y austere-axi check austere-setup-test.html` must report no errors.
|
|
67
|
+
2. `npx -y austere-axi austere-setup-test.html` opens the review. Give the user the printed link.
|
|
68
|
+
3. `npx -y austere-axi poll austere-setup-test.html` waits for the user. Ask them to press **It works**. The poll returns an item for the button.
|
|
69
|
+
4. `npx -y austere-axi end austere-setup-test.html`, then delete the file.
|
|
70
|
+
|
|
71
|
+
If the user cannot open the page, read the server log in `~/.austere-axi/` and report it.
|
|
72
|
+
|
|
73
|
+
## 6. Report
|
|
74
|
+
|
|
75
|
+
Tell the user, in a short list:
|
|
76
|
+
|
|
77
|
+
- the Node version
|
|
78
|
+
- where the `austere` skill is installed
|
|
79
|
+
- which optional items you set up
|
|
80
|
+
- that the test page worked
|
|
81
|
+
|
|
82
|
+
To make a page later, the user asks for one, or types `/austere <what to show>`.
|