@exponential_app/eui 0.2.1 → 0.3.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/catalog/a11y.json +15 -1
- package/catalog/core.catalog.json +142 -0
- package/catalog/core.schema.json +198 -1
- package/catalog/host.json +10 -0
- package/catalog/macros.json +541 -1
- package/catalog/recipes.json +2 -2
- package/catalog/strings.json +5 -0
- package/catalog/theme.schema.json +2066 -212
- package/conformance/manifest.json +5 -5
- package/dist/chunks/{index-gtk2gwsb.js → index-4z7f2bp1.js} +160 -33
- package/dist/chunks/{index-gtk2gwsb.js.map → index-4z7f2bp1.js.map} +6 -5
- package/dist/chunks/{index-5fmaa0xq.js → index-abcjanhc.js} +629 -3
- package/dist/chunks/{index-5fmaa0xq.js.map → index-abcjanhc.js.map} +2 -2
- package/dist/chunks/{index-62yzr94z.js → index-dx45asrf.js} +99 -3
- package/dist/chunks/{index-62yzr94z.js.map → index-dx45asrf.js.map} +2 -2
- package/dist/chunks/{index-bg2jsgjq.js → index-h3zgfghf.js} +304 -6
- package/dist/chunks/{index-bg2jsgjq.js.map → index-h3zgfghf.js.map} +2 -2
- package/dist/conformance.js +7901 -614
- package/dist/conformance.js.map +2 -2
- package/dist/entries/prompt.js +2 -2
- package/dist/entries/schema.js +2 -2
- package/dist/host/index.js +20 -4
- package/dist/host/index.js.map +1 -1
- package/dist/index.js +35 -5
- package/dist/index.js.map +2 -2
- package/dist/types/src/catalog.generated.d.ts +23 -3
- package/dist/types/src/host/contract.d.ts +17 -0
- package/dist/types/src/host/exposes.d.ts +68 -0
- package/dist/types/src/host/index.d.ts +1 -0
- package/dist/types/src/host/package.d.ts +8 -0
- package/dist/types/src/web/primitives/carousel.d.ts +17 -0
- package/dist/types/src/web/primitives/index.d.ts +3 -0
- package/dist/types/src/web/primitives/mosaic.d.ts +30 -0
- package/dist/types/src/web/primitives/outline.d.ts +22 -0
- package/dist/web/index.js +8 -2
- package/dist/web/index.js.map +4 -4
- package/dist/web/primitives/index.js +59 -1
- package/dist/web/primitives/index.js.map +6 -3
- package/docs/components.generated.json +150 -1
- package/docs/package-format.md +56 -1
- package/docs/round-6-contract.md +108 -0
- package/docs/themes.generated.json +39 -2
- package/fixtures/bind-time.json +1464 -0
- package/fixtures/catalog-components.json +96 -0
- package/fixtures/catalog-macros.json +1159 -48
- package/fixtures/conformance-baseline.json +46073 -44448
- package/fixtures/conformance-known.json +76 -64
- package/fixtures/host-router.json +539 -1
- package/fixtures/kitchen-sink.expanded.json +614 -1
- package/fixtures/kitchen-sink.json +69 -1
- package/fixtures/primitive-specimens.json +3 -0
- package/fixtures/prompt-budget.json +14 -14
- package/fixtures/specimens.json +122 -0
- package/fixtures/theme-recipes.json +4617 -1691
- package/fixtures/theme-resolved.json +1154 -2
- package/generated/ExponentialUICatalog.generated.kt +13 -13
- package/generated/ExponentialUICatalog.generated.swift +13 -13
- package/generated/ExponentialUIThemes.generated.kt +7 -7
- package/generated/ExponentialUIThemes.generated.swift +7 -7
- package/generated/catalog.descriptions.generated.rs +1 -1
- package/generated/catalog.generated.rs +18 -18
- package/generated/catalog.themes.generated.rs +8 -8
- package/generated/core.descriptions.json +96 -0
- package/generated/core.runtime.json +86 -0
- package/package.json +1 -1
- package/themes/neutral.theme.json +288 -0
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["../src/catalog.generated.ts", "../src/strings.ts", "../src/format.ts", "../src/expr.ts", "../src/limits.ts", "../src/dynamic.ts", "../src/tree-guides.ts", "../src/macros.ts", "../src/validate.ts", "../src/basic-map.ts", "../src/reducer.ts", "../src/host/policy.ts", "../src/host/sources.ts", "../src/host/decoders.ts", "../src/host/records.ts", "../src/host/record-store.ts", "../src/host/signature.ts", "../src/host/tools.ts", "../src/host/package.ts", "../src/host/router.ts", "../src/host/runtime.ts", "../src/host/transports.ts"],
|
|
3
|
+
"sources": ["../src/catalog.generated.ts", "../src/strings.ts", "../src/format.ts", "../src/expr.ts", "../src/limits.ts", "../src/dynamic.ts", "../src/tree-guides.ts", "../src/macros.ts", "../src/validate.ts", "../src/basic-map.ts", "../src/reducer.ts", "../src/host/policy.ts", "../src/host/sources.ts", "../src/host/decoders.ts", "../src/host/records.ts", "../src/host/record-store.ts", "../src/host/signature.ts", "../src/host/tools.ts", "../src/host/exposes.ts", "../src/host/package.ts", "../src/host/router.ts", "../src/host/runtime.ts", "../src/host/transports.ts"],
|
|
4
4
|
"sourcesContent": [
|
|
5
|
-
"// AUTO-GENERATED by packages/exponential-ui/scripts/generate.ts — do not edit.\n// Source of truth: packages/exponential-ui/catalog/core.catalog.json (+ tokens.json, style.json, basic-map.json, strings.json, locale.json, code.json, a11y.json, layout.json).\n\nimport type { Style } from \"./style\"\nimport type { DataBinding, FunctionCall } from \"./types\"\n\nexport const CATALOG_ID = \"https://ui.exponential.at/catalogs/core/v1\"\nexport const LITE_CATALOG_ID = \"https://ui.exponential.at/catalogs/core-lite/v1\"\nexport const BASIC_CATALOG_ID = \"https://a2ui.org/specification/v0_9/basic_catalog.json\"\nexport const BASIC_VERSION = \"v0.9\"\nexport const CATALOG_VERSION = \"1\"\nexport const UNKNOWN_COMPONENT_NAME = \"Unknown\"\n\n/** Every component in source order (the hidden placeholder included). */\nexport const COMPONENT_NAMES = [\"Box\",\"Stack\",\"Grid\",\"Card\",\"Separator\",\"List\",\"Resizable\",\"ScrollArea\",\"Sidebar\",\"SplitView\",\"AppBar\",\"Page\",\"Toolbar\",\"Section\",\"Group\",\"Text\",\"Heading\",\"Markdown\",\"CodeBlock\",\"Kbd\",\"Label\",\"Image\",\"Icon\",\"Video\",\"AudioPlayer\",\"Avatar\",\"QrCode\",\"Carousel\",\"Tabs\",\"Segmented\",\"Accordion\",\"Collapsible\",\"Trace\",\"TraceItem\",\"Plan\",\"Pagination\",\"Breadcrumb\",\"Stepper\",\"Dialog\",\"Drawer\",\"DockCard\",\"AlertDialog\",\"Popover\",\"Tooltip\",\"Menu\",\"Toast\",\"Badge\",\"Alert\",\"Chip\",\"EmptyState\",\"Progress\",\"Meter\",\"Ring\",\"Spinner\",\"Skeleton\",\"VoiceWave\",\"CallSurface\",\"Table\",\"Chart\",\"Sparkline\",\"StatTile\",\"Button\",\"Link\",\"Toggle\",\"Form\",\"FieldGroup\",\"FormActions\",\"Input\",\"Textarea\",\"NumberField\",\"Checkbox\",\"Radio\",\"ChoiceTiles\",\"Switch\",\"Slider\",\"Rating\",\"Select\",\"SearchList\",\"ChipInput\",\"DatePicker\",\"DateRangePicker\",\"TimePicker\",\"FileUpload\",\"QrScanner\",\"Composer\",\"Row\",\"MessageBubble\",\"TreeGuides\",\"Unknown\"] as const\nexport type ComponentName = (typeof COMPONENT_NAMES)[number]\nexport const NATIVE_COMPONENTS = [\"Box\",\"List\",\"Resizable\",\"Text\",\"Markdown\",\"CodeBlock\",\"Image\",\"Icon\",\"Video\",\"AudioPlayer\",\"Avatar\",\"QrCode\",\"Carousel\",\"Tabs\",\"Segmented\",\"Accordion\",\"Dialog\",\"Drawer\",\"Popover\",\"Tooltip\",\"Menu\",\"Toast\",\"Ring\",\"Spinner\",\"Skeleton\",\"VoiceWave\",\"Table\",\"Chart\",\"Button\",\"Link\",\"Toggle\",\"Form\",\"Input\",\"Textarea\",\"NumberField\",\"Checkbox\",\"Radio\",\"ChoiceTiles\",\"Switch\",\"Slider\",\"Select\",\"SearchList\",\"ChipInput\",\"DatePicker\",\"DateRangePicker\",\"TimePicker\",\"FileUpload\",\"QrScanner\",\"Composer\",\"TreeGuides\",\"Unknown\"] as const\nexport const MACRO_COMPONENTS = [\"Stack\",\"Grid\",\"Card\",\"Separator\",\"ScrollArea\",\"Sidebar\",\"SplitView\",\"AppBar\",\"Page\",\"Toolbar\",\"Section\",\"Group\",\"Heading\",\"Kbd\",\"Label\",\"Collapsible\",\"Trace\",\"TraceItem\",\"Plan\",\"Pagination\",\"Breadcrumb\",\"Stepper\",\"DockCard\",\"AlertDialog\",\"Badge\",\"Alert\",\"Chip\",\"EmptyState\",\"Progress\",\"Meter\",\"CallSurface\",\"Sparkline\",\"StatTile\",\"FieldGroup\",\"FormActions\",\"Rating\",\"Row\",\"MessageBubble\"] as const\n/** The core-lite subset (no overlays, media or Chart). */\nexport const LITE_COMPONENTS = [\"Box\",\"Stack\",\"Grid\",\"Card\",\"Separator\",\"List\",\"Resizable\",\"ScrollArea\",\"Sidebar\",\"SplitView\",\"AppBar\",\"Page\",\"Toolbar\",\"Section\",\"Group\",\"Text\",\"Heading\",\"Markdown\",\"CodeBlock\",\"Kbd\",\"Label\",\"Icon\",\"Avatar\",\"Tabs\",\"Segmented\",\"Collapsible\",\"Trace\",\"TraceItem\",\"Plan\",\"Breadcrumb\",\"Stepper\",\"Badge\",\"Alert\",\"Chip\",\"EmptyState\",\"Progress\",\"Meter\",\"Ring\",\"Skeleton\",\"StatTile\",\"Button\",\"Link\",\"Form\",\"FieldGroup\",\"FormActions\",\"Input\",\"Textarea\",\"NumberField\",\"Checkbox\",\"Switch\",\"Rating\",\"Select\",\"SearchList\",\"ChipInput\",\"DatePicker\",\"DateRangePicker\",\"TimePicker\",\"FileUpload\",\"Composer\",\"Row\",\"MessageBubble\"] as const\nexport const COMPONENT_GROUPS: Record<ComponentName, string> = {\"Box\":\"layout\",\"Stack\":\"layout\",\"Grid\":\"layout\",\"Card\":\"layout\",\"Separator\":\"layout\",\"List\":\"layout\",\"Resizable\":\"layout\",\"ScrollArea\":\"layout\",\"Sidebar\":\"layout\",\"SplitView\":\"layout\",\"AppBar\":\"layout\",\"Page\":\"layout\",\"Toolbar\":\"layout\",\"Section\":\"list\",\"Group\":\"list\",\"Text\":\"text\",\"Heading\":\"text\",\"Markdown\":\"text\",\"CodeBlock\":\"text\",\"Kbd\":\"text\",\"Label\":\"text\",\"Image\":\"media\",\"Icon\":\"media\",\"Video\":\"media\",\"AudioPlayer\":\"media\",\"Avatar\":\"media\",\"QrCode\":\"media\",\"Carousel\":\"media\",\"Tabs\":\"navigation\",\"Segmented\":\"navigation\",\"Accordion\":\"navigation\",\"Collapsible\":\"navigation\",\"Trace\":\"list\",\"TraceItem\":\"list\",\"Plan\":\"list\",\"Pagination\":\"navigation\",\"Breadcrumb\":\"navigation\",\"Stepper\":\"navigation\",\"Dialog\":\"overlay\",\"Drawer\":\"overlay\",\"DockCard\":\"overlay\",\"AlertDialog\":\"overlay\",\"Popover\":\"overlay\",\"Tooltip\":\"overlay\",\"Menu\":\"overlay\",\"Toast\":\"overlay\",\"Badge\":\"feedback\",\"Alert\":\"feedback\",\"Chip\":\"feedback\",\"EmptyState\":\"feedback\",\"Progress\":\"feedback\",\"Meter\":\"feedback\",\"Ring\":\"feedback\",\"Spinner\":\"feedback\",\"Skeleton\":\"feedback\",\"VoiceWave\":\"feedback\",\"CallSurface\":\"media\",\"Table\":\"data\",\"Chart\":\"data\",\"Sparkline\":\"data\",\"StatTile\":\"data\",\"Button\":\"action\",\"Link\":\"action\",\"Toggle\":\"action\",\"Form\":\"input\",\"FieldGroup\":\"input\",\"FormActions\":\"input\",\"Input\":\"input\",\"Textarea\":\"input\",\"NumberField\":\"input\",\"Checkbox\":\"input\",\"Radio\":\"input\",\"ChoiceTiles\":\"input\",\"Switch\":\"input\",\"Slider\":\"input\",\"Rating\":\"input\",\"Select\":\"input\",\"SearchList\":\"input\",\"ChipInput\":\"input\",\"DatePicker\":\"input\",\"DateRangePicker\":\"input\",\"TimePicker\":\"input\",\"FileUpload\":\"input\",\"QrScanner\":\"input\",\"Composer\":\"input\",\"Row\":\"list\",\"MessageBubble\":\"list\",\"TreeGuides\":\"list\",\"Unknown\":\"feedback\"}\n/** The specimen id each component has on ui.exponential.at. */\nexport const SPECIMEN_IDS: Record<ComponentName, string> = {\"Box\":\"exponential-ui-box\",\"Stack\":\"exponential-ui-stack\",\"Grid\":\"exponential-ui-grid\",\"Card\":\"exponential-ui-card\",\"Separator\":\"exponential-ui-separator\",\"List\":\"exponential-ui-list\",\"Resizable\":\"exponential-ui-resizable\",\"ScrollArea\":\"exponential-ui-scroll-area\",\"Sidebar\":\"exponential-ui-sidebar\",\"SplitView\":\"exponential-ui-split-view\",\"AppBar\":\"exponential-ui-app-bar\",\"Page\":\"exponential-ui-page\",\"Toolbar\":\"exponential-ui-toolbar\",\"Section\":\"exponential-ui-section\",\"Group\":\"exponential-ui-group\",\"Text\":\"exponential-ui-text\",\"Heading\":\"exponential-ui-heading\",\"Markdown\":\"exponential-ui-markdown\",\"CodeBlock\":\"exponential-ui-code-block\",\"Kbd\":\"exponential-ui-kbd\",\"Label\":\"exponential-ui-label\",\"Image\":\"exponential-ui-image\",\"Icon\":\"exponential-ui-icon\",\"Video\":\"exponential-ui-video\",\"AudioPlayer\":\"exponential-ui-audio-player\",\"Avatar\":\"exponential-ui-avatar\",\"QrCode\":\"exponential-ui-qr-code\",\"Carousel\":\"exponential-ui-carousel\",\"Tabs\":\"exponential-ui-tabs\",\"Segmented\":\"exponential-ui-segmented\",\"Accordion\":\"exponential-ui-accordion\",\"Collapsible\":\"exponential-ui-collapsible\",\"Trace\":\"exponential-ui-trace\",\"TraceItem\":\"exponential-ui-trace-item\",\"Plan\":\"exponential-ui-plan\",\"Pagination\":\"exponential-ui-pagination\",\"Breadcrumb\":\"exponential-ui-breadcrumb\",\"Stepper\":\"exponential-ui-stepper\",\"Dialog\":\"exponential-ui-dialog\",\"Drawer\":\"exponential-ui-drawer\",\"DockCard\":\"exponential-ui-dock-card\",\"AlertDialog\":\"exponential-ui-alert-dialog\",\"Popover\":\"exponential-ui-popover\",\"Tooltip\":\"exponential-ui-tooltip\",\"Menu\":\"exponential-ui-menu\",\"Toast\":\"exponential-ui-toast\",\"Badge\":\"exponential-ui-badge\",\"Alert\":\"exponential-ui-alert\",\"Chip\":\"exponential-ui-chip\",\"EmptyState\":\"exponential-ui-empty-state\",\"Progress\":\"exponential-ui-progress\",\"Meter\":\"exponential-ui-meter\",\"Ring\":\"exponential-ui-ring\",\"Spinner\":\"exponential-ui-spinner\",\"Skeleton\":\"exponential-ui-skeleton\",\"VoiceWave\":\"exponential-ui-voice-wave\",\"CallSurface\":\"exponential-ui-call-surface\",\"Table\":\"exponential-ui-table\",\"Chart\":\"exponential-ui-chart\",\"Sparkline\":\"exponential-ui-sparkline\",\"StatTile\":\"exponential-ui-stat-tile\",\"Button\":\"exponential-ui-button\",\"Link\":\"exponential-ui-link\",\"Toggle\":\"exponential-ui-toggle\",\"Form\":\"exponential-ui-form\",\"FieldGroup\":\"exponential-ui-field-group\",\"FormActions\":\"exponential-ui-form-actions\",\"Input\":\"exponential-ui-input\",\"Textarea\":\"exponential-ui-textarea\",\"NumberField\":\"exponential-ui-number-field\",\"Checkbox\":\"exponential-ui-checkbox\",\"Radio\":\"exponential-ui-radio\",\"ChoiceTiles\":\"exponential-ui-choice-tiles\",\"Switch\":\"exponential-ui-switch\",\"Slider\":\"exponential-ui-slider\",\"Rating\":\"exponential-ui-rating\",\"Select\":\"exponential-ui-select\",\"SearchList\":\"exponential-ui-search-list\",\"ChipInput\":\"exponential-ui-chip-input\",\"DatePicker\":\"exponential-ui-date-picker\",\"DateRangePicker\":\"exponential-ui-date-range-picker\",\"TimePicker\":\"exponential-ui-time-picker\",\"FileUpload\":\"exponential-ui-file-upload\",\"QrScanner\":\"exponential-ui-qr-scanner\",\"Composer\":\"exponential-ui-composer\",\"Row\":\"exponential-ui-row\",\"MessageBubble\":\"exponential-ui-message-bubble\",\"TreeGuides\":\"exponential-ui-tree-guides\",\"Unknown\":\"exponential-ui-unknown\"}\n\nexport const ENUMS = {\n variant: [\"default\",\"secondary\",\"outline\",\"ghost\",\"destructive\",\"link\"],\n size: [\"sm\",\"default\",\"lg\",\"icon\"],\n tone: [\"neutral\",\"primary\",\"success\",\"warning\",\"danger\",\"info\"],\n gap: [\"none\",\"xs\",\"sm\",\"md\",\"lg\",\"xl\"],\n align: [\"start\",\"center\",\"end\",\"stretch\"],\n justify: [\"start\",\"center\",\"end\",\"between\",\"around\",\"evenly\"],\n textVariant: [\"body\",\"caption\",\"muted\",\"lead\",\"code\",\"label\",\"title\"],\n headingLevel: [\"h1\",\"h2\",\"h3\",\"h4\"],\n imageFit: [\"contain\",\"cover\",\"fill\",\"none\",\"scaleDown\"],\n orientation: [\"horizontal\",\"vertical\"],\n side: [\"top\",\"right\",\"bottom\",\"left\"],\n inputType: [\"text\",\"email\",\"password\",\"number\",\"search\",\"url\",\"tel\"],\n validateOn: [\"change\",\"blur\",\"submit\"],\n alertType: [\"info\",\"success\",\"warning\",\"error\"],\n controlSize: [\"sm\",\"default\",\"lg\"],\n spinnerSize: [\"xs\",\"sm\",\"default\",\"lg\"],\n tabClosable: [\"none\",\"hover\",\"always\"],\n groupType: [\"single\",\"multiple\"],\n rowChevron: [\"none\",\"right\",\"selector\"],\n rowSurface: [\"flat\",\"card\"],\n chipShape: [\"pill\",\"rect\"],\n density: [\"default\",\"compact\"],\n listDirection: [\"vertical\",\"horizontal\"],\n chartKind: [\"bar\",\"stackedBar\",\"line\",\"area\",\"pie\",\"donut\",\"sparkline\"],\n segmentedVariant: [\"segmented\",\"toggles\",\"outline\",\"bar\"],\n liveTone: [\"live\",\"attention\",\"done\",\"unread\",\"idle\",\"muted\"],\n menuItemKind: [\"item\",\"checkbox\",\"separator\",\"label\",\"submenu\"],\n openOn: [\"press\",\"hover\"],\n menuOpenOn: [\"press\",\"contextmenu\"],\n live: [\"off\",\"polite\",\"assertive\"],\n selectable: [\"none\",\"single\",\"multiple\"],\n cellType: [\"text\",\"number\",\"date\",\"boolean\",\"badge\",\"slot\",\"currency\",\"percent\",\"relativeTime\"],\n sortDirection: [\"asc\",\"desc\"],\n imageLoading: [\"lazy\",\"eager\"],\n scrollDirection: [\"vertical\",\"horizontal\",\"both\"],\n collapseBelow: [\"never\",\"sm\",\"md\",\"lg\",\"xl\"],\n codeLanguage: [\"plain\",\"json\",\"js\",\"ts\",\"tsx\",\"rust\",\"swift\",\"kotlin\",\"python\",\"bash\",\"html\",\"css\",\"sql\",\"yaml\",\"markdown\",\"ansi\"],\n codeToken: [\"plain\",\"keyword\",\"string\",\"number\",\"comment\",\"punctuation\",\"operator\",\"type\",\"function\",\"property\",\"tag\",\"attribute\",\"success\",\"warning\",\"error\"],\n codeBlockVariant: [\"default\",\"destructive\"],\n codeBlockSize: [\"default\",\"sm\"],\n traceStatus: [\"running\",\"error\",\"pending\",\"done\",\"skipped\"],\n traceSize: [\"default\",\"sm\"],\n voiceWaveActivity: [\"idle\",\"listening\",\"thinking\",\"speaking\",\"muted\"],\n voiceWaveSize: [\"sm\",\"md\",\"lg\",\"xl\"],\n messageSide: [\"in\",\"out\"],\n messageStatus: [\"sending\",\"sent\",\"read\"],\n callState: [\"ringing\",\"connecting\",\"talking\",\"ended\"],\n voiceWaveVariant: [\"ring\",\"bars\"],\n qrLevel: [\"L\",\"M\",\"Q\",\"H\"],\n planState: [\"proposed\",\"running\",\"done\",\"declined\"],\n} as const\nexport type VariantValue = (typeof ENUMS)[\"variant\"][number]\nexport type SizeValue = (typeof ENUMS)[\"size\"][number]\nexport type ToneValue = (typeof ENUMS)[\"tone\"][number]\nexport type GapValue = (typeof ENUMS)[\"gap\"][number]\nexport type AlignValue = (typeof ENUMS)[\"align\"][number]\nexport type JustifyValue = (typeof ENUMS)[\"justify\"][number]\nexport type TextVariantValue = (typeof ENUMS)[\"textVariant\"][number]\nexport type HeadingLevelValue = (typeof ENUMS)[\"headingLevel\"][number]\nexport type ImageFitValue = (typeof ENUMS)[\"imageFit\"][number]\nexport type OrientationValue = (typeof ENUMS)[\"orientation\"][number]\nexport type SideValue = (typeof ENUMS)[\"side\"][number]\nexport type InputTypeValue = (typeof ENUMS)[\"inputType\"][number]\nexport type ValidateOnValue = (typeof ENUMS)[\"validateOn\"][number]\nexport type AlertTypeValue = (typeof ENUMS)[\"alertType\"][number]\nexport type ControlSizeValue = (typeof ENUMS)[\"controlSize\"][number]\nexport type SpinnerSizeValue = (typeof ENUMS)[\"spinnerSize\"][number]\nexport type TabClosableValue = (typeof ENUMS)[\"tabClosable\"][number]\nexport type GroupTypeValue = (typeof ENUMS)[\"groupType\"][number]\nexport type RowChevronValue = (typeof ENUMS)[\"rowChevron\"][number]\nexport type RowSurfaceValue = (typeof ENUMS)[\"rowSurface\"][number]\nexport type ChipShapeValue = (typeof ENUMS)[\"chipShape\"][number]\nexport type DensityValue = (typeof ENUMS)[\"density\"][number]\nexport type ListDirectionValue = (typeof ENUMS)[\"listDirection\"][number]\nexport type ChartKindValue = (typeof ENUMS)[\"chartKind\"][number]\nexport type SegmentedVariantValue = (typeof ENUMS)[\"segmentedVariant\"][number]\nexport type LiveToneValue = (typeof ENUMS)[\"liveTone\"][number]\nexport type MenuItemKindValue = (typeof ENUMS)[\"menuItemKind\"][number]\nexport type OpenOnValue = (typeof ENUMS)[\"openOn\"][number]\nexport type MenuOpenOnValue = (typeof ENUMS)[\"menuOpenOn\"][number]\nexport type LiveValue = (typeof ENUMS)[\"live\"][number]\nexport type SelectableValue = (typeof ENUMS)[\"selectable\"][number]\nexport type CellTypeValue = (typeof ENUMS)[\"cellType\"][number]\nexport type SortDirectionValue = (typeof ENUMS)[\"sortDirection\"][number]\nexport type ImageLoadingValue = (typeof ENUMS)[\"imageLoading\"][number]\nexport type ScrollDirectionValue = (typeof ENUMS)[\"scrollDirection\"][number]\nexport type CollapseBelowValue = (typeof ENUMS)[\"collapseBelow\"][number]\nexport type CodeLanguageValue = (typeof ENUMS)[\"codeLanguage\"][number]\nexport type CodeTokenValue = (typeof ENUMS)[\"codeToken\"][number]\nexport type CodeBlockVariantValue = (typeof ENUMS)[\"codeBlockVariant\"][number]\nexport type CodeBlockSizeValue = (typeof ENUMS)[\"codeBlockSize\"][number]\nexport type TraceStatusValue = (typeof ENUMS)[\"traceStatus\"][number]\nexport type TraceSizeValue = (typeof ENUMS)[\"traceSize\"][number]\nexport type VoiceWaveActivityValue = (typeof ENUMS)[\"voiceWaveActivity\"][number]\nexport type VoiceWaveSizeValue = (typeof ENUMS)[\"voiceWaveSize\"][number]\nexport type MessageSideValue = (typeof ENUMS)[\"messageSide\"][number]\nexport type MessageStatusValue = (typeof ENUMS)[\"messageStatus\"][number]\nexport type CallStateValue = (typeof ENUMS)[\"callState\"][number]\nexport type VoiceWaveVariantValue = (typeof ENUMS)[\"voiceWaveVariant\"][number]\nexport type QrLevelValue = (typeof ENUMS)[\"qrLevel\"][number]\nexport type PlanStateValue = (typeof ENUMS)[\"planState\"][number]\n\n/** Token NAMES by group (values come from a theme). */\nexport const TOKEN_NAMES = {\n \"color\": [\"background\",\"foreground\",\"card\",\"cardForeground\",\"popover\",\"popoverForeground\",\"primary\",\"primaryForeground\",\"secondary\",\"secondaryForeground\",\"muted\",\"mutedForeground\",\"accent\",\"accentForeground\",\"destructive\",\"destructiveForeground\",\"success\",\"successForeground\",\"warning\",\"warningForeground\",\"info\",\"infoForeground\",\"border\",\"input\",\"ring\",\"chart1\",\"chart2\",\"chart3\",\"chart4\",\"chart5\",\"chart6\",\"chart7\",\"chart8\"],\n \"spacing\": [\"none\",\"xxs\",\"xs\",\"sm\",\"md\",\"lg\",\"xl\",\"xl2\",\"xl3\"],\n \"radius\": [\"none\",\"sm\",\"md\",\"lg\",\"xl\",\"xl2\",\"xl3\",\"full\"],\n \"type.size\": [\"xs\",\"sm\",\"base\",\"lg\",\"xl\",\"xl2\",\"xl3\"],\n \"type.lineHeight\": [\"xs\",\"sm\",\"base\",\"lg\",\"xl\",\"xl2\",\"xl3\"],\n \"type.weight\": [\"regular\",\"medium\",\"semibold\",\"bold\"],\n \"type.family\": [\"sans\",\"mono\",\"serif\"],\n \"control\": [\"buttonSm\",\"buttonMd\",\"buttonLg\",\"buttonIcon\",\"input\",\"textarea\",\"row\",\"rowCompact\",\"pill\",\"badge\",\"chip\",\"toggle\",\"switch\",\"checkbox\",\"slider\",\"progress\",\"meter\",\"avatarSm\",\"avatarMd\",\"avatarLg\",\"iconSm\",\"iconMd\",\"iconLg\",\"hairline\",\"appBar\",\"tabBar\",\"toast\"],\n \"shadow\": [\"none\",\"sm\",\"md\",\"lg\",\"xl\"],\n \"opacity\": [\"primary\",\"secondary\",\"tertiary\",\"quaternary\",\"disabled\"],\n \"border\": [\"none\",\"hairline\",\"thick\"],\n \"motion\": [\"fast\",\"standard\",\"slow\"],\n \"breakpoint\": [\"sm\",\"md\",\"lg\",\"xl\"],\n \"ease\": [\"standard\",\"decelerate\",\"accelerate\"],\n \"density\": [\"compact\",\"comfortable\"],\n \"blur\": [\"sm\",\"md\",\"lg\",\"xl\"],\n \"scale\": [\"press\",\"popoverFrom\"],\n} as const\nexport type TokenGroup = keyof typeof TOKEN_NAMES\n\nexport const STYLE_KEY_NAMES = [\"display\",\"flexDirection\",\"flexWrap\",\"justifyContent\",\"alignItems\",\"alignContent\",\"alignSelf\",\"justifySelf\",\"flexGrow\",\"flexShrink\",\"flexBasis\",\"gap\",\"rowGap\",\"columnGap\",\"direction\",\"overflow\",\"overflowX\",\"overflowY\",\"width\",\"height\",\"minWidth\",\"minHeight\",\"maxWidth\",\"maxHeight\",\"aspectRatio\",\"position\",\"top\",\"right\",\"bottom\",\"left\",\"inset\",\"insetInlineStart\",\"insetInlineEnd\",\"insetBlockStart\",\"insetBlockEnd\",\"padding\",\"paddingTop\",\"paddingRight\",\"paddingBottom\",\"paddingLeft\",\"paddingHorizontal\",\"paddingVertical\",\"paddingInlineStart\",\"paddingInlineEnd\",\"margin\",\"marginTop\",\"marginRight\",\"marginBottom\",\"marginLeft\",\"marginHorizontal\",\"marginVertical\",\"marginInlineStart\",\"marginInlineEnd\",\"gridTemplateColumns\",\"gridTemplateRows\",\"gridTemplateAreas\",\"gridArea\",\"gridColumn\",\"gridRow\",\"backgroundColor\",\"backgroundGradient\",\"color\",\"borderWidth\",\"borderTopWidth\",\"borderRightWidth\",\"borderBottomWidth\",\"borderLeftWidth\",\"borderColor\",\"borderStyle\",\"borderRadius\",\"borderTopLeftRadius\",\"borderTopRightRadius\",\"borderBottomRightRadius\",\"borderBottomLeftRadius\",\"opacity\",\"boxShadow\",\"fontSize\",\"fontWeight\",\"lineHeight\",\"letterSpacing\",\"textAlign\",\"textDecoration\",\"textTransform\",\"fontStyle\",\"fontFamily\",\"transition\",\"transitionEasing\",\"transform\",\"visibility\",\"pointerEvents\",\"userSelect\",\"cursor\",\"backdropBlur\",\"animation\",\"animationDuration\"] as const\nexport const STYLE_STATE_NAMES = [\":hover\",\":focus-visible\",\":pressed\"] as const\n\n/** The Icon prop's vocabulary: packages/icons/icons.json at generate time. */\nexport const ICON_NAMES = [\"a-large-small\",\"action-chat\",\"action-create\",\"action-default\",\"action-repository\",\"action-run\",\"action-suggestion\",\"activity\",\"anchor\",\"app-editor-chat\",\"archive\",\"archive-restore\",\"arrow-down\",\"arrow-down-left\",\"arrow-left\",\"arrow-left-right\",\"arrow-right\",\"arrow-up-right\",\"at-sign\",\"atom\",\"audio-lines\",\"auth-passkey\",\"award\",\"ban\",\"bell\",\"bell-off\",\"bold\",\"book-open\",\"bookmark\",\"bot\",\"boxes\",\"braces\",\"brain\",\"briefcase\",\"brush-cleaning\",\"bug\",\"building\",\"building-2\",\"calculator\",\"calendar\",\"calendar-days\",\"call-end\",\"call-incoming\",\"call-mute\",\"call-speaker\",\"call-speaker-off\",\"call-unmute\",\"camera\",\"car\",\"chart-line\",\"check\",\"check-check\",\"chevron-down\",\"chevron-left\",\"chevron-right\",\"chevron-up\",\"chevrons-up-down\",\"circle\",\"circle-arrow-up\",\"circle-check\",\"circle-dashed\",\"circle-dot\",\"circle-question-mark\",\"circle-slash\",\"circle-stop\",\"circle-user\",\"circle-x\",\"clipboard-list\",\"clock\",\"cloud\",\"code\",\"coding-assistant\",\"coding-command\",\"coding-compact\",\"coding-diff\",\"coding-ended\",\"coding-in-review\",\"coding-needs-input\",\"coding-plan\",\"coding-running\",\"coding-stop\",\"coding-subagent\",\"coding-tool\",\"coffee\",\"compass\",\"computer\",\"copy\",\"corner-down-right\",\"cpu\",\"credit-card\",\"crown\",\"database\",\"download\",\"droplet\",\"dumbbell\",\"ear\",\"editor-bold\",\"editor-clear-formatting\",\"editor-code\",\"editor-emoji\",\"editor-heading-1\",\"editor-heading-2\",\"editor-heading-3\",\"editor-image\",\"editor-issue-ref\",\"editor-italic\",\"editor-link\",\"editor-list\",\"editor-list-ordered\",\"editor-list-todo\",\"editor-mention\",\"editor-quote\",\"editor-strikethrough\",\"editor-text\",\"editor-text-format\",\"editor-unlink\",\"ellipsis\",\"ellipsis-vertical\",\"event-assignee-changed\",\"event-board-moved\",\"event-estimate-changed\",\"event-label-added\",\"event-label-removed\",\"event-priority-changed\",\"event-relation-added\",\"event-relation-removed\",\"event-status-changed\",\"event-title-changed\",\"external-link\",\"eye\",\"eye-off\",\"fast-forward\",\"file\",\"file-diff\",\"file-pen-line\",\"file-text\",\"fingerprint\",\"flag\",\"flame\",\"flask-conical\",\"fold-vertical\",\"folder\",\"folder-kanban\",\"folder-open\",\"gamepad-2\",\"gauge\",\"gem\",\"gift\",\"git-branch\",\"git-merge\",\"git-pull-request\",\"github\",\"globe\",\"graduation-cap\",\"guide-changes\",\"hammer\",\"hand\",\"hard-drive\",\"hash\",\"heading-1\",\"heading-2\",\"heading-3\",\"headphones\",\"heart\",\"heart-off\",\"history\",\"hourglass\",\"house\",\"image\",\"images\",\"inbox\",\"info\",\"italic\",\"key\",\"landmark\",\"laptop\",\"layers\",\"layers-2\",\"layout-grid\",\"leaf\",\"lightbulb\",\"link\",\"link-2\",\"list\",\"list-checks\",\"list-end\",\"list-ordered\",\"list-todo\",\"list-tree\",\"loader-circle\",\"lock\",\"lock-open\",\"log-in\",\"log-out\",\"mail\",\"mail-open\",\"map\",\"map-pin\",\"maximize-2\",\"media-fast-forward\",\"media-rewind\",\"media-skip-next\",\"media-skip-previous\",\"media-volume-down\",\"media-volume-mute\",\"media-volume-off\",\"media-volume-up\",\"megaphone\",\"menu\",\"message-circle\",\"message-square\",\"message-square-plus\",\"message-square-reply\",\"mic\",\"mic-off\",\"microscope\",\"minimize-2\",\"minus\",\"monitor\",\"monitor-off\",\"moon\",\"mountain\",\"move\",\"music\",\"nav-account\",\"nav-actions\",\"nav-admin\",\"nav-apps\",\"nav-boards\",\"nav-changelog\",\"nav-computer\",\"nav-create-issue\",\"nav-devices\",\"nav-drafts\",\"nav-files\",\"nav-getting-started\",\"nav-inbox\",\"nav-issues\",\"nav-my-issues\",\"nav-notifications\",\"nav-rail-collapse\",\"nav-rail-expand\",\"nav-report-bug\",\"nav-search\",\"nav-settings\",\"nav-sign-out\",\"nav-source-control\",\"nav-team-switcher\",\"nav-terminal\",\"nav-threads\",\"newspaper\",\"notification-agent-message\",\"notification-issue-assigned\",\"notification-issue-comment\",\"notification-issue-created\",\"notification-issue-mention\",\"notification-issue-status-changed\",\"notification-mark-read\",\"notification-mute\",\"notification-pr-merged\",\"notification-pr-opened\",\"notification-reporter-reply\",\"notification-session-blocked\",\"os-apple\",\"os-linux\",\"os-windows\",\"package\",\"paintbrush\",\"palette\",\"panel-left-close\",\"panel-left-open\",\"paperclip\",\"pause\",\"pen-tool\",\"pencil\",\"phone\",\"phone-incoming\",\"phone-off\",\"pin\",\"pin-off\",\"plane\",\"play\",\"plug\",\"plus\",\"pr-batch\",\"pr-closed\",\"pr-draft\",\"pr-merged\",\"pr-open\",\"pr-stack\",\"printer\",\"priority-high\",\"priority-low\",\"priority-medium\",\"priority-none\",\"priority-urgent\",\"progress-1-4\",\"progress-1-5\",\"progress-2-4\",\"progress-2-5\",\"progress-3-4\",\"progress-3-5\",\"progress-4-5\",\"puzzle\",\"qr-code\",\"quote\",\"refresh-cw\",\"relation-blocked-by\",\"relation-blocks\",\"relation-duplicate\",\"relation-parent\",\"relation-related\",\"relation-section\",\"relation-sub-issue\",\"remove-formatting\",\"repeat\",\"rewind\",\"rocket\",\"rotate-ccw\",\"run-pause\",\"run-resume\",\"sc-push\",\"scale\",\"scan-line\",\"search\",\"search-x\",\"send\",\"server\",\"session-shell\",\"session-tree\",\"settings\",\"settings-about\",\"settings-account\",\"settings-agents\",\"settings-api\",\"settings-billing\",\"settings-boards\",\"settings-general\",\"settings-import\",\"settings-issues\",\"settings-labels\",\"settings-licenses\",\"settings-local-repos\",\"settings-mcp\",\"settings-members\",\"settings-notifications\",\"settings-rate\",\"settings-repositories\",\"settings-servers\",\"settings-sessions\",\"settings-statuses\",\"settings-storage\",\"settings-sync\",\"settings-tools\",\"settings-voice\",\"settings-widget\",\"share-2\",\"shield\",\"shield-check\",\"shield-question-mark\",\"shopping-bag\",\"shopping-cart\",\"signal-high\",\"signal-low\",\"signal-medium\",\"skip-back\",\"skip-forward\",\"sliders-horizontal\",\"smartphone\",\"smile\",\"sparkles\",\"square\",\"square-check\",\"square-kanban\",\"square-minus\",\"square-pen\",\"square-slash\",\"square-terminal\",\"star\",\"star-half\",\"star-off\",\"status-backlog\",\"status-cancelled\",\"status-done\",\"status-duplicate\",\"status-in-progress\",\"status-in-review\",\"status-todo\",\"stethoscope\",\"store\",\"strikethrough\",\"sun\",\"support-open\",\"support-resolved\",\"tag\",\"target\",\"terminal\",\"thread-stories\",\"tool-script\",\"trace-background\",\"trace-chevron\",\"trace-completed\",\"trace-edit\",\"trace-failed\",\"trace-fetch\",\"trace-read\",\"trace-reasoning\",\"trace-search\",\"trace-subagent\",\"trace-task-done\",\"trace-task-pending\",\"trace-task-running\",\"trace-terminal\",\"trace-todo\",\"trace-tool\",\"trash-2\",\"tree-pine\",\"triangle-alert\",\"trigger-event\",\"trigger-schedule\",\"trophy\",\"truck\",\"type\",\"ui-add\",\"ui-agent-source\",\"ui-archive\",\"ui-arrow-down\",\"ui-arrow-right\",\"ui-assignee\",\"ui-attach\",\"ui-avatar-placeholder\",\"ui-back\",\"ui-branch\",\"ui-check\",\"ui-checklist\",\"ui-chevron-down\",\"ui-chevron-left\",\"ui-chevron-right\",\"ui-chevron-up\",\"ui-clean\",\"ui-clear\",\"ui-clock\",\"ui-close\",\"ui-cloud\",\"ui-copy\",\"ui-delete\",\"ui-delete-account\",\"ui-device\",\"ui-device-default\",\"ui-device-offline\",\"ui-dock-side\",\"ui-docs\",\"ui-download\",\"ui-due-date\",\"ui-edit\",\"ui-empty-search\",\"ui-error\",\"ui-estimate\",\"ui-external-link\",\"ui-favorite-off\",\"ui-file\",\"ui-float\",\"ui-folder\",\"ui-folder-open\",\"ui-fullscreen\",\"ui-fullscreen-exit\",\"ui-github\",\"ui-help\",\"ui-hide\",\"ui-history\",\"ui-hold\",\"ui-icon-placeholder\",\"ui-indeterminate\",\"ui-info\",\"ui-invite\",\"ui-issue\",\"ui-link\",\"ui-loading\",\"ui-mail\",\"ui-mark-read\",\"ui-mark-unread\",\"ui-mcp\",\"ui-member\",\"ui-menu\",\"ui-minus\",\"ui-more\",\"ui-more-vertical\",\"ui-offline\",\"ui-organization\",\"ui-owner\",\"ui-permission\",\"ui-pin\",\"ui-print\",\"ui-private\",\"ui-properties\",\"ui-qr-code\",\"ui-queued\",\"ui-read\",\"ui-redock\",\"ui-refresh\",\"ui-remove-member\",\"ui-repeat\",\"ui-repository\",\"ui-scan\",\"ui-selected\",\"ui-selector\",\"ui-send\",\"ui-server\",\"ui-share\",\"ui-sign-in\",\"ui-sign-out\",\"ui-staging\",\"ui-star-half\",\"ui-star-off\",\"ui-stop\",\"ui-submit\",\"ui-subscribe\",\"ui-success\",\"ui-swap\",\"ui-team\",\"ui-unarchive\",\"ui-unassigned\",\"ui-undo\",\"ui-undock\",\"ui-unlock\",\"ui-unpin\",\"ui-unselected\",\"ui-unsubscribe\",\"ui-update\",\"ui-usage\",\"ui-warning\",\"ui-watch\",\"ui-widget\",\"undo-2\",\"unlink\",\"upload\",\"user\",\"user-minus\",\"user-plus\",\"user-x\",\"users\",\"video\",\"voice-call\",\"voice-level\",\"volume-1\",\"volume-2\",\"volume-off\",\"volume-x\",\"wallet\",\"wifi-off\",\"work-faces\",\"work-results\",\"workflow\",\"wrench\",\"x\",\"zap\"] as const\n\nexport const FUNCTION_NAMES = [\"required\",\"regex\",\"length\",\"numeric\",\"email\",\"formatString\",\"formatNumber\",\"formatCurrency\",\"formatDate\",\"pluralize\",\"openUrl\",\"and\",\"or\",\"not\",\"percent\",\"add\",\"sub\",\"eq\",\"lt\",\"clamp\",\"cond\",\"fallback\",\"concat\",\"coalesce\",\"text\",\"map\",\"len\",\"fill\",\"set\",\"formatPercent\",\"formatRelativeTime\",\"filter\",\"bind\"] as const\n\n/** VAPP-108: the typed authoring surface (src/define.ts). A ~ prop also\n * takes a binding or a call, a ^ prop a per-breakpoint object. */\nexport type Dynamic = DataBinding | FunctionCall\nexport type Responsive<T> = { base: T; sm?: T; md?: T; lg?: T; xl?: T }\nexport type IconName = (typeof ICON_NAMES)[number]\n/** The shared shapes (catalog `defs`). */\nexport interface Shapes {\n option: { label: string | Dynamic; value: string; icon?: IconName; disabled?: boolean; description?: string; image?: string; count?: number | Dynamic }\n check: { condition: boolean | Dynamic; message: string }\n tab: { label: string | Dynamic; value: string; icon?: IconName; count?: number }\n menuItem: { label?: string; value?: string; kind?: MenuItemKindValue; icon?: IconName; shortcut?: string; checked?: boolean | Dynamic; destructive?: boolean; disabled?: boolean; items?: Shapes[\"menuItem\"][] | Dynamic; searchable?: boolean; placeholder?: string }\n searchItem: { label: string | Dynamic; value: string; icon?: IconName; identifier?: string; disabled?: boolean }\n accordionItem: { title: string | Dynamic; value: string; count?: number }\n segment: { value: number; tone?: ToneValue; label?: string }\n series: { name: string; values: number[]; tone?: ToneValue }\n pageItem: { title?: string }\n step: { label: string; description?: string }\n column: { key: string; label: string; type?: CellTypeValue; slot?: string; width?: number; align?: \"start\" | \"center\" | \"end\"; sortable?: boolean; currency?: string; decimals?: number }\n sort: { key: string; direction: SortDirectionValue }\n panel: { min?: number; max?: number; collapsible?: boolean }\n file: { name: string; size?: number; type?: string; url?: string }\n planStep: { title: string; detail?: string; icon?: IconName; status?: TraceStatusValue }\n}\n/** Every component's props, by name. */\nexport interface ComponentProps {\n Box: { style?: Style; pressable?: boolean }\n Stack: { direction?: OrientationValue | Responsive<OrientationValue> | Dynamic; gap?: GapValue | Responsive<GapValue>; align?: AlignValue | Responsive<AlignValue> | Dynamic; justify?: JustifyValue | Responsive<JustifyValue> | Dynamic; wrap?: boolean | Responsive<boolean>; style?: Style }\n Grid: { columns?: number | Responsive<number>; gap?: GapValue | Responsive<GapValue>; style?: Style }\n Card: { title?: string; description?: string; padded?: boolean; style?: Style }\n Separator: { orientation?: OrientationValue }\n List: { direction?: ListDirectionValue; gap?: GapValue; divided?: boolean; sectionBy?: string; stickyHeaders?: boolean; style?: Style }\n Resizable: { direction?: OrientationValue | Responsive<OrientationValue>; sizes?: number[] | Dynamic; panels?: Shapes[\"panel\"][]; handle?: boolean; style?: Style }\n ScrollArea: { direction?: ScrollDirectionValue; maxHeight?: number; style?: Style }\n Sidebar: { side?: \"left\" | \"right\"; width?: number; collapseBelow?: CollapseBelowValue; collapsed?: boolean | Dynamic }\n SplitView: { open?: boolean | Dynamic; width?: number }\n AppBar: { title: string | Dynamic; subtitle?: string | Dynamic; back?: boolean }\n Page: { title: string | Dynamic; subtitle?: string | Dynamic; back?: boolean; padded?: boolean }\n Toolbar: { gap?: GapValue }\n Section: { title?: string | Dynamic; caption?: string | Dynamic; count?: number | Dynamic; icon?: IconName; collapsible?: boolean; open?: boolean | Dynamic; tint?: ToneValue; tree?: boolean; loading?: boolean | Dynamic; style?: Style }\n Group: { title?: string; footer?: string }\n Text: { text: string | Dynamic; variant?: TextVariantValue; align?: \"start\" | \"center\" | \"end\"; lines?: number; tone?: ToneValue; shimmer?: boolean; live?: LiveValue; style?: Style }\n Heading: { text: string | Dynamic; level?: HeadingLevelValue }\n Markdown: { text: string | Dynamic; lines?: number; style?: Style }\n CodeBlock: { code: string | Dynamic; language?: CodeLanguageValue; title?: string; lineNumbers?: boolean; wrap?: boolean; copyable?: boolean; highlight?: number[]; maxLines?: number; variant?: CodeBlockVariantValue | Dynamic; size?: CodeBlockSizeValue }\n Kbd: { keys: string }\n Label: { text: string | Dynamic; for?: string; required?: boolean }\n Image: { src?: string | Dynamic; alt: string | Dynamic; fit?: ImageFitValue; width?: number; height?: number; aspectRatio?: number; fallback?: IconName; loading?: ImageLoadingValue; focalX?: number; focalY?: number; style?: Style }\n Icon: { name: IconName | Dynamic; size?: ControlSizeValue; tone?: ToneValue | Dynamic; label?: string }\n Video: { src: string | Dynamic; poster?: string; durationMs?: number; autoplay?: boolean; aspectRatio?: number; style?: Style }\n AudioPlayer: { src: string | Dynamic; title?: string; durationMs?: number }\n Avatar: { name: string | Dynamic; src?: string | Dynamic; size?: ControlSizeValue; seed?: string }\n QrCode: { value: string | Dynamic; size?: number; level?: QrLevelValue; label?: string }\n Carousel: { page?: number | Dynamic; loop?: boolean; indicators?: boolean }\n Tabs: { tabs: Shapes[\"tab\"][]; value?: string | Dynamic; fill?: boolean; closable?: TabClosableValue; addable?: boolean }\n Segmented: { items: Shapes[\"option\"][]; type?: GroupTypeValue; value?: string | Dynamic; variant?: SegmentedVariantValue; size?: ControlSizeValue; fill?: boolean; orientation?: OrientationValue }\n Accordion: { items: Shapes[\"accordionItem\"][]; type?: GroupTypeValue; value?: string | Dynamic }\n Collapsible: { title: string; open?: boolean | Dynamic; count?: number }\n Trace: { size?: TraceSizeValue }\n TraceItem: { title: string | Dynamic; icon?: IconName; description?: string; status?: TraceStatusValue; size?: TraceSizeValue; collapsible?: boolean; open?: boolean | Dynamic }\n Plan: { title: string | Dynamic; description?: string | Dynamic; steps?: Shapes[\"planStep\"][]; state?: PlanStateValue | Dynamic; progress?: number | Dynamic; approveLabel?: string; declineLabel?: string; stopLabel?: string }\n Pagination: { totalPages: number; page?: number | Dynamic }\n Breadcrumb: { items: Shapes[\"option\"][] }\n Stepper: { steps: Shapes[\"step\"][]; current?: number | Dynamic; orientation?: OrientationValue }\n Dialog: { title?: string; description?: string; open?: boolean | Dynamic; dismissible?: boolean }\n Drawer: { title?: string; description?: string; open?: boolean | Dynamic; side?: SideValue | Responsive<SideValue>; dismissible?: boolean; dragToDismiss?: boolean }\n DockCard: { label: string | Dynamic; title: string | Dynamic; caption?: string | Dynamic; meta?: string | Dynamic; icon?: IconName; tone?: ToneValue; open?: boolean | Dynamic }\n AlertDialog: { title: string; description?: string; confirmLabel?: string; cancelLabel?: string; destructive?: boolean; open?: boolean | Dynamic }\n Popover: { open?: boolean | Dynamic; side?: SideValue; openOn?: OpenOnValue }\n Tooltip: { content: string; side?: SideValue }\n Menu: { label?: string; icon?: IconName; items: Shapes[\"menuItem\"][]; openOn?: MenuOpenOnValue }\n Toast: { title: string | Dynamic; description?: string | Dynamic; type?: AlertTypeValue; open?: boolean | Dynamic; duration?: number; actionLabel?: string; dismissible?: boolean }\n Badge: { text: string | Dynamic; variant?: VariantValue | Dynamic; icon?: IconName }\n Alert: { title: string; message?: string; type?: AlertTypeValue }\n Chip: { label: string | Dynamic; shape?: ChipShapeValue; selected?: boolean; tone?: ToneValue | Dynamic; dot?: string; icon?: IconName; image?: string; detail?: string; removable?: boolean; pressable?: boolean }\n EmptyState: { icon: IconName; title: string; description?: string; actionLabel?: string; size?: \"page\" | \"list\" }\n Progress: { value: number | Dynamic; max?: number; label?: string; tone?: ToneValue }\n Meter: { segments: Shapes[\"segment\"][]; max?: number; label?: string; value?: string }\n Ring: { value: number | Dynamic; size?: ControlSizeValue; tone?: ToneValue; label?: string }\n Spinner: { size?: SpinnerSizeValue; label?: string }\n Skeleton: { width?: string; height?: string; rounded?: boolean; rows?: number; rowHeight?: number; dot?: boolean }\n VoiceWave: { activity?: VoiceWaveActivityValue | Dynamic; variant?: VoiceWaveVariantValue; level?: number | Dynamic; bands?: number[] | Dynamic; size?: VoiceWaveSizeValue; label?: string }\n CallSurface: { name: string | Dynamic; avatar?: string | Dynamic; state?: CallStateValue | Dynamic; activity?: VoiceWaveActivityValue | Dynamic; level?: number | Dynamic; bands?: number[] | Dynamic; status?: string | Dynamic; caption?: string | Dynamic; muted?: boolean | Dynamic; speaker?: boolean | Dynamic }\n Table: { columns: Shapes[\"column\"][]; rows: Record<string, unknown>[] | Dynamic; rowKey?: string; sort?: Shapes[\"sort\"] | Dynamic; selectable?: SelectableValue; selected?: string[] | Dynamic; caption?: string; emptyText?: string; striped?: boolean; density?: DensityValue; stickyHeader?: boolean }\n Chart: { kind: ChartKindValue; categories?: string[] | Dynamic; series: Shapes[\"series\"][] | Dynamic; title?: string; height?: number; xLabel?: string; yLabel?: string; min?: number; max?: number; showAxes?: boolean; showGrid?: boolean; showLegend?: boolean; showValues?: boolean }\n Sparkline: { values: number[] | Dynamic; tone?: ToneValue; height?: number }\n StatTile: { label: string | Dynamic; value: string | Dynamic; delta?: string | Dynamic; tone?: ToneValue | Dynamic; trend?: number[] | Dynamic }\n Button: { label?: string | Dynamic; icon?: IconName | Dynamic; variant?: VariantValue; size?: SizeValue; disabled?: boolean | Dynamic; loading?: boolean; pendingLabel?: string; submit?: boolean; hold?: boolean; holdingLabel?: string }\n Link: { label: string | Dynamic; href?: string; external?: boolean }\n Toggle: { label: string; icon?: IconName; pressed?: boolean | Dynamic; variant?: \"default\" | \"outline\"; size?: ControlSizeValue }\n Form: { name: string; disabled?: boolean | Dynamic; busy?: boolean | Dynamic; summary?: boolean }\n FieldGroup: { columns?: number }\n FormActions: { submit: string | Dynamic; cancel?: boolean; destructive?: boolean }\n Input: { label: string; name: string; type?: InputTypeValue; placeholder?: string; value?: string | Dynamic; disabled?: boolean; checks?: Shapes[\"check\"][]; validateOn?: ValidateOnValue }\n Textarea: { label: string; name: string; placeholder?: string; rows?: number; autosize?: boolean; maxRows?: number; value?: string | Dynamic; disabled?: boolean; checks?: Shapes[\"check\"][]; validateOn?: ValidateOnValue }\n NumberField: { label: string; name: string; value?: number | Dynamic; min?: number; max?: number; step?: number; precision?: number; unit?: string; placeholder?: string; disabled?: boolean; checks?: Shapes[\"check\"][]; validateOn?: ValidateOnValue }\n Checkbox: { label: string | Dynamic; name: string; checked?: boolean | Dynamic; disabled?: boolean; checks?: Shapes[\"check\"][] }\n Radio: { label?: string; name: string; options: Shapes[\"option\"][]; value?: string | Dynamic; orientation?: OrientationValue; checks?: Shapes[\"check\"][] }\n ChoiceTiles: { name: string; options: Shapes[\"option\"][]; type?: GroupTypeValue; value?: string | Dynamic; columns?: number; disabled?: boolean; checks?: Shapes[\"check\"][] }\n Switch: { label: string | Dynamic; name: string; checked?: boolean | Dynamic; description?: string; disabled?: boolean }\n Slider: { label?: string; min?: number | Dynamic; max: number | Dynamic; step?: number; value?: number | Dynamic }\n Rating: { value?: number | Dynamic; max?: number; readOnly?: boolean; size?: ControlSizeValue }\n Select: { label?: string; name: string; options?: Shapes[\"option\"][] | Dynamic; source?: string; placeholder?: string; value?: string | Dynamic; multiple?: boolean; searchable?: boolean; emptyText?: string; disabled?: boolean; checks?: Shapes[\"check\"][]; validateOn?: ValidateOnValue }\n SearchList: { items: Shapes[\"searchItem\"][] | Dynamic; query?: string | Dynamic; placeholder?: string; value?: string | Dynamic; emptyText?: string; maxRows?: number; showCount?: boolean }\n ChipInput: { label?: string; name: string; values?: string[] | Dynamic; suggestions?: Shapes[\"option\"][] | Dynamic; placeholder?: string; max?: number; disabled?: boolean; checks?: Shapes[\"check\"][] }\n DatePicker: { label?: string; name: string; value?: string | Dynamic; min?: string; max?: string; placeholder?: string; firstDayOfWeek?: number }\n DateRangePicker: { label?: string; name: string; start?: string | Dynamic; end?: string | Dynamic; min?: string; max?: string; placeholder?: string; firstDayOfWeek?: number }\n TimePicker: { label?: string; name: string; value?: string | Dynamic; min?: string; max?: string; step?: number; placeholder?: string; disabled?: boolean }\n FileUpload: { label?: string; name: string; accept?: string; multiple?: boolean; maxSize?: number; files?: Shapes[\"file\"][] | Dynamic; hint?: string; disabled?: boolean }\n QrScanner: { hint?: string | Dynamic; formats?: string[]; label?: string; disabled?: boolean }\n Composer: { placeholder?: string; value?: string | Dynamic; submitLabel?: string; attachments?: boolean; busy?: boolean }\n Row: { title: string | Dynamic; identifier?: string | Dynamic; subtitle?: string | Dynamic; meta?: string | Dynamic; value?: string | Dynamic; placeholder?: string; icon?: IconName | Dynamic; chevron?: RowChevronValue | Dynamic; selected?: boolean | Dynamic; density?: DensityValue; surface?: RowSurfaceValue; pressable?: boolean; depth?: number }\n MessageBubble: { text: string | Dynamic; side?: MessageSideValue; time?: string | Dynamic; status?: MessageStatusValue | Dynamic; author?: string | Dynamic }\n TreeGuides: { depth: number; elbowAt?: number; tee?: boolean; passThrough?: number[] }\n Unknown: { component: string; catalogId?: string }\n}\n\n/** A2UI basic component → core component. */\nexport const BASIC_COMPONENT_MAP: Record<string, string> = {\"Text\":\"Text\",\"Image\":\"Image\",\"Icon\":\"Icon\",\"Video\":\"Video\",\"AudioPlayer\":\"AudioPlayer\",\"Row\":\"Stack\",\"Column\":\"Stack\",\"List\":\"List\",\"Card\":\"Card\",\"Tabs\":\"Tabs\",\"Modal\":\"Dialog\",\"Divider\":\"Separator\",\"Button\":\"Button\",\"TextField\":\"Input\",\"CheckBox\":\"Checkbox\",\"ChoicePicker\":\"Radio\",\"Slider\":\"Slider\",\"DateTimeInput\":\"DatePicker\"}\n/** A2UI basic icon name → icons.json name (the placeholder where none exists). */\nexport const BASIC_ICON_MAP: Record<string, string> = {\"accountCircle\":\"ui-assignee\",\"add\":\"ui-add\",\"arrowBack\":\"ui-back\",\"arrowForward\":\"ui-arrow-right\",\"attachFile\":\"ui-attach\",\"calendarToday\":\"calendar\",\"call\":\"phone\",\"camera\":\"camera\",\"check\":\"ui-check\",\"close\":\"ui-close\",\"delete\":\"ui-delete\",\"download\":\"ui-download\",\"edit\":\"ui-edit\",\"event\":\"ui-due-date\",\"error\":\"ui-error\",\"fastForward\":\"media-fast-forward\",\"favorite\":\"heart\",\"favoriteOff\":\"ui-favorite-off\",\"folder\":\"ui-folder\",\"help\":\"ui-help\",\"home\":\"house\",\"info\":\"ui-info\",\"locationOn\":\"map-pin\",\"lock\":\"ui-private\",\"lockOpen\":\"ui-unlock\",\"mail\":\"ui-mail\",\"menu\":\"ui-menu\",\"moreVert\":\"ui-more-vertical\",\"moreHoriz\":\"ui-more\",\"notificationsOff\":\"ui-unsubscribe\",\"notifications\":\"ui-subscribe\",\"pause\":\"run-pause\",\"payment\":\"credit-card\",\"person\":\"ui-avatar-placeholder\",\"phone\":\"smartphone\",\"photo\":\"image\",\"play\":\"action-run\",\"print\":\"ui-print\",\"refresh\":\"ui-refresh\",\"rewind\":\"media-rewind\",\"search\":\"nav-search\",\"send\":\"ui-send\",\"settings\":\"nav-settings\",\"share\":\"ui-share\",\"shoppingCart\":\"shopping-cart\",\"skipNext\":\"media-skip-next\",\"skipPrevious\":\"media-skip-previous\",\"star\":\"star\",\"starHalf\":\"ui-star-half\",\"starOff\":\"ui-star-off\",\"stop\":\"ui-stop\",\"upload\":\"sc-push\",\"visibility\":\"ui-watch\",\"visibilityOff\":\"ui-hide\",\"volumeDown\":\"media-volume-down\",\"volumeMute\":\"media-volume-mute\",\"volumeOff\":\"media-volume-off\",\"volumeUp\":\"media-volume-up\",\"warning\":\"ui-warning\"}\nexport const BASIC_PLACEHOLDER_ICON = \"ui-icon-placeholder\"\n",
|
|
5
|
+
"// AUTO-GENERATED by packages/exponential-ui/scripts/generate.ts — do not edit.\n// Source of truth: packages/exponential-ui/catalog/core.catalog.json (+ tokens.json, style.json, basic-map.json, strings.json, locale.json, code.json, a11y.json, layout.json).\n\nimport type { Style } from \"./style\"\nimport type { DataBinding, FunctionCall } from \"./types\"\n\nexport const CATALOG_ID = \"https://ui.exponential.at/catalogs/core/v1\"\nexport const LITE_CATALOG_ID = \"https://ui.exponential.at/catalogs/core-lite/v1\"\nexport const BASIC_CATALOG_ID = \"https://a2ui.org/specification/v0_9/basic_catalog.json\"\nexport const BASIC_VERSION = \"v0.9\"\nexport const CATALOG_VERSION = \"1\"\nexport const UNKNOWN_COMPONENT_NAME = \"Unknown\"\n\n/** Every component in source order (the hidden placeholder included). */\nexport const COMPONENT_NAMES = [\"Box\",\"Stack\",\"Grid\",\"Card\",\"Separator\",\"List\",\"Resizable\",\"ScrollArea\",\"Sidebar\",\"SplitView\",\"AppBar\",\"Page\",\"Toolbar\",\"Section\",\"Group\",\"Text\",\"Heading\",\"Markdown\",\"CodeBlock\",\"Kbd\",\"Label\",\"Image\",\"Icon\",\"Video\",\"AudioPlayer\",\"Avatar\",\"QrCode\",\"Carousel\",\"Mosaic\",\"Tabs\",\"Segmented\",\"Accordion\",\"Collapsible\",\"Trace\",\"TraceItem\",\"Plan\",\"Pagination\",\"Breadcrumb\",\"Outline\",\"Stepper\",\"Dialog\",\"Drawer\",\"DockCard\",\"AlertDialog\",\"Popover\",\"Tooltip\",\"Menu\",\"Toast\",\"Badge\",\"Alert\",\"Chip\",\"EmptyState\",\"Progress\",\"Meter\",\"Ring\",\"Spinner\",\"Skeleton\",\"VoiceWave\",\"CallSurface\",\"Table\",\"Chart\",\"Sparkline\",\"StatTile\",\"Button\",\"Link\",\"Toggle\",\"Form\",\"FieldGroup\",\"FormActions\",\"Input\",\"Textarea\",\"NumberField\",\"Checkbox\",\"Radio\",\"ChoiceTiles\",\"Switch\",\"Slider\",\"Rating\",\"Select\",\"SearchList\",\"ChipInput\",\"DatePicker\",\"DateRangePicker\",\"TimePicker\",\"FileUpload\",\"QrScanner\",\"Composer\",\"Row\",\"MessageBubble\",\"TreeGuides\",\"Unknown\"] as const\nexport type ComponentName = (typeof COMPONENT_NAMES)[number]\nexport const NATIVE_COMPONENTS = [\"Box\",\"List\",\"Resizable\",\"Text\",\"Markdown\",\"CodeBlock\",\"Image\",\"Icon\",\"Video\",\"AudioPlayer\",\"Avatar\",\"QrCode\",\"Carousel\",\"Tabs\",\"Segmented\",\"Accordion\",\"Dialog\",\"Drawer\",\"Popover\",\"Tooltip\",\"Menu\",\"Toast\",\"Ring\",\"Spinner\",\"Skeleton\",\"VoiceWave\",\"Table\",\"Chart\",\"Button\",\"Link\",\"Toggle\",\"Form\",\"Input\",\"Textarea\",\"NumberField\",\"Checkbox\",\"Radio\",\"ChoiceTiles\",\"Switch\",\"Slider\",\"Select\",\"SearchList\",\"ChipInput\",\"DatePicker\",\"DateRangePicker\",\"TimePicker\",\"FileUpload\",\"QrScanner\",\"Composer\",\"TreeGuides\",\"Unknown\"] as const\nexport const MACRO_COMPONENTS = [\"Stack\",\"Grid\",\"Card\",\"Separator\",\"ScrollArea\",\"Sidebar\",\"SplitView\",\"AppBar\",\"Page\",\"Toolbar\",\"Section\",\"Group\",\"Heading\",\"Kbd\",\"Label\",\"Mosaic\",\"Collapsible\",\"Trace\",\"TraceItem\",\"Plan\",\"Pagination\",\"Breadcrumb\",\"Outline\",\"Stepper\",\"DockCard\",\"AlertDialog\",\"Badge\",\"Alert\",\"Chip\",\"EmptyState\",\"Progress\",\"Meter\",\"CallSurface\",\"Sparkline\",\"StatTile\",\"FieldGroup\",\"FormActions\",\"Rating\",\"Row\",\"MessageBubble\"] as const\n/** The core-lite subset (no overlays, media or Chart). */\nexport const LITE_COMPONENTS = [\"Box\",\"Stack\",\"Grid\",\"Card\",\"Separator\",\"List\",\"Resizable\",\"ScrollArea\",\"Sidebar\",\"SplitView\",\"AppBar\",\"Page\",\"Toolbar\",\"Section\",\"Group\",\"Text\",\"Heading\",\"Markdown\",\"CodeBlock\",\"Kbd\",\"Label\",\"Icon\",\"Avatar\",\"Tabs\",\"Segmented\",\"Collapsible\",\"Trace\",\"TraceItem\",\"Plan\",\"Breadcrumb\",\"Outline\",\"Stepper\",\"Badge\",\"Alert\",\"Chip\",\"EmptyState\",\"Progress\",\"Meter\",\"Ring\",\"Skeleton\",\"StatTile\",\"Button\",\"Link\",\"Form\",\"FieldGroup\",\"FormActions\",\"Input\",\"Textarea\",\"NumberField\",\"Checkbox\",\"Switch\",\"Rating\",\"Select\",\"SearchList\",\"ChipInput\",\"DatePicker\",\"DateRangePicker\",\"TimePicker\",\"FileUpload\",\"Composer\",\"Row\",\"MessageBubble\"] as const\nexport const COMPONENT_GROUPS: Record<ComponentName, string> = {\"Box\":\"layout\",\"Stack\":\"layout\",\"Grid\":\"layout\",\"Card\":\"layout\",\"Separator\":\"layout\",\"List\":\"layout\",\"Resizable\":\"layout\",\"ScrollArea\":\"layout\",\"Sidebar\":\"layout\",\"SplitView\":\"layout\",\"AppBar\":\"layout\",\"Page\":\"layout\",\"Toolbar\":\"layout\",\"Section\":\"list\",\"Group\":\"list\",\"Text\":\"text\",\"Heading\":\"text\",\"Markdown\":\"text\",\"CodeBlock\":\"text\",\"Kbd\":\"text\",\"Label\":\"text\",\"Image\":\"media\",\"Icon\":\"media\",\"Video\":\"media\",\"AudioPlayer\":\"media\",\"Avatar\":\"media\",\"QrCode\":\"media\",\"Carousel\":\"media\",\"Mosaic\":\"media\",\"Tabs\":\"navigation\",\"Segmented\":\"navigation\",\"Accordion\":\"navigation\",\"Collapsible\":\"navigation\",\"Trace\":\"list\",\"TraceItem\":\"list\",\"Plan\":\"list\",\"Pagination\":\"navigation\",\"Breadcrumb\":\"navigation\",\"Outline\":\"navigation\",\"Stepper\":\"navigation\",\"Dialog\":\"overlay\",\"Drawer\":\"overlay\",\"DockCard\":\"overlay\",\"AlertDialog\":\"overlay\",\"Popover\":\"overlay\",\"Tooltip\":\"overlay\",\"Menu\":\"overlay\",\"Toast\":\"overlay\",\"Badge\":\"feedback\",\"Alert\":\"feedback\",\"Chip\":\"feedback\",\"EmptyState\":\"feedback\",\"Progress\":\"feedback\",\"Meter\":\"feedback\",\"Ring\":\"feedback\",\"Spinner\":\"feedback\",\"Skeleton\":\"feedback\",\"VoiceWave\":\"feedback\",\"CallSurface\":\"media\",\"Table\":\"data\",\"Chart\":\"data\",\"Sparkline\":\"data\",\"StatTile\":\"data\",\"Button\":\"action\",\"Link\":\"action\",\"Toggle\":\"action\",\"Form\":\"input\",\"FieldGroup\":\"input\",\"FormActions\":\"input\",\"Input\":\"input\",\"Textarea\":\"input\",\"NumberField\":\"input\",\"Checkbox\":\"input\",\"Radio\":\"input\",\"ChoiceTiles\":\"input\",\"Switch\":\"input\",\"Slider\":\"input\",\"Rating\":\"input\",\"Select\":\"input\",\"SearchList\":\"input\",\"ChipInput\":\"input\",\"DatePicker\":\"input\",\"DateRangePicker\":\"input\",\"TimePicker\":\"input\",\"FileUpload\":\"input\",\"QrScanner\":\"input\",\"Composer\":\"input\",\"Row\":\"list\",\"MessageBubble\":\"list\",\"TreeGuides\":\"list\",\"Unknown\":\"feedback\"}\n/** The specimen id each component has on ui.exponential.at. */\nexport const SPECIMEN_IDS: Record<ComponentName, string> = {\"Box\":\"exponential-ui-box\",\"Stack\":\"exponential-ui-stack\",\"Grid\":\"exponential-ui-grid\",\"Card\":\"exponential-ui-card\",\"Separator\":\"exponential-ui-separator\",\"List\":\"exponential-ui-list\",\"Resizable\":\"exponential-ui-resizable\",\"ScrollArea\":\"exponential-ui-scroll-area\",\"Sidebar\":\"exponential-ui-sidebar\",\"SplitView\":\"exponential-ui-split-view\",\"AppBar\":\"exponential-ui-app-bar\",\"Page\":\"exponential-ui-page\",\"Toolbar\":\"exponential-ui-toolbar\",\"Section\":\"exponential-ui-section\",\"Group\":\"exponential-ui-group\",\"Text\":\"exponential-ui-text\",\"Heading\":\"exponential-ui-heading\",\"Markdown\":\"exponential-ui-markdown\",\"CodeBlock\":\"exponential-ui-code-block\",\"Kbd\":\"exponential-ui-kbd\",\"Label\":\"exponential-ui-label\",\"Image\":\"exponential-ui-image\",\"Icon\":\"exponential-ui-icon\",\"Video\":\"exponential-ui-video\",\"AudioPlayer\":\"exponential-ui-audio-player\",\"Avatar\":\"exponential-ui-avatar\",\"QrCode\":\"exponential-ui-qr-code\",\"Carousel\":\"exponential-ui-carousel\",\"Mosaic\":\"exponential-ui-mosaic\",\"Tabs\":\"exponential-ui-tabs\",\"Segmented\":\"exponential-ui-segmented\",\"Accordion\":\"exponential-ui-accordion\",\"Collapsible\":\"exponential-ui-collapsible\",\"Trace\":\"exponential-ui-trace\",\"TraceItem\":\"exponential-ui-trace-item\",\"Plan\":\"exponential-ui-plan\",\"Pagination\":\"exponential-ui-pagination\",\"Breadcrumb\":\"exponential-ui-breadcrumb\",\"Outline\":\"exponential-ui-outline\",\"Stepper\":\"exponential-ui-stepper\",\"Dialog\":\"exponential-ui-dialog\",\"Drawer\":\"exponential-ui-drawer\",\"DockCard\":\"exponential-ui-dock-card\",\"AlertDialog\":\"exponential-ui-alert-dialog\",\"Popover\":\"exponential-ui-popover\",\"Tooltip\":\"exponential-ui-tooltip\",\"Menu\":\"exponential-ui-menu\",\"Toast\":\"exponential-ui-toast\",\"Badge\":\"exponential-ui-badge\",\"Alert\":\"exponential-ui-alert\",\"Chip\":\"exponential-ui-chip\",\"EmptyState\":\"exponential-ui-empty-state\",\"Progress\":\"exponential-ui-progress\",\"Meter\":\"exponential-ui-meter\",\"Ring\":\"exponential-ui-ring\",\"Spinner\":\"exponential-ui-spinner\",\"Skeleton\":\"exponential-ui-skeleton\",\"VoiceWave\":\"exponential-ui-voice-wave\",\"CallSurface\":\"exponential-ui-call-surface\",\"Table\":\"exponential-ui-table\",\"Chart\":\"exponential-ui-chart\",\"Sparkline\":\"exponential-ui-sparkline\",\"StatTile\":\"exponential-ui-stat-tile\",\"Button\":\"exponential-ui-button\",\"Link\":\"exponential-ui-link\",\"Toggle\":\"exponential-ui-toggle\",\"Form\":\"exponential-ui-form\",\"FieldGroup\":\"exponential-ui-field-group\",\"FormActions\":\"exponential-ui-form-actions\",\"Input\":\"exponential-ui-input\",\"Textarea\":\"exponential-ui-textarea\",\"NumberField\":\"exponential-ui-number-field\",\"Checkbox\":\"exponential-ui-checkbox\",\"Radio\":\"exponential-ui-radio\",\"ChoiceTiles\":\"exponential-ui-choice-tiles\",\"Switch\":\"exponential-ui-switch\",\"Slider\":\"exponential-ui-slider\",\"Rating\":\"exponential-ui-rating\",\"Select\":\"exponential-ui-select\",\"SearchList\":\"exponential-ui-search-list\",\"ChipInput\":\"exponential-ui-chip-input\",\"DatePicker\":\"exponential-ui-date-picker\",\"DateRangePicker\":\"exponential-ui-date-range-picker\",\"TimePicker\":\"exponential-ui-time-picker\",\"FileUpload\":\"exponential-ui-file-upload\",\"QrScanner\":\"exponential-ui-qr-scanner\",\"Composer\":\"exponential-ui-composer\",\"Row\":\"exponential-ui-row\",\"MessageBubble\":\"exponential-ui-message-bubble\",\"TreeGuides\":\"exponential-ui-tree-guides\",\"Unknown\":\"exponential-ui-unknown\"}\n\nexport const ENUMS = {\n variant: [\"default\",\"secondary\",\"outline\",\"ghost\",\"destructive\",\"link\"],\n size: [\"sm\",\"default\",\"lg\",\"icon\"],\n tone: [\"neutral\",\"primary\",\"success\",\"warning\",\"danger\",\"info\"],\n gap: [\"none\",\"xs\",\"sm\",\"md\",\"lg\",\"xl\"],\n align: [\"start\",\"center\",\"end\",\"stretch\"],\n justify: [\"start\",\"center\",\"end\",\"between\",\"around\",\"evenly\"],\n textVariant: [\"body\",\"caption\",\"muted\",\"lead\",\"code\",\"label\",\"title\"],\n headingLevel: [\"h1\",\"h2\",\"h3\",\"h4\"],\n imageFit: [\"contain\",\"cover\",\"fill\",\"none\",\"scaleDown\"],\n orientation: [\"horizontal\",\"vertical\"],\n side: [\"top\",\"right\",\"bottom\",\"left\"],\n inputType: [\"text\",\"email\",\"password\",\"number\",\"search\",\"url\",\"tel\"],\n validateOn: [\"change\",\"blur\",\"submit\"],\n alertType: [\"info\",\"success\",\"warning\",\"error\"],\n controlSize: [\"sm\",\"default\",\"lg\"],\n spinnerSize: [\"xs\",\"sm\",\"default\",\"lg\"],\n tabClosable: [\"none\",\"hover\",\"always\"],\n groupType: [\"single\",\"multiple\"],\n rowChevron: [\"none\",\"right\",\"selector\"],\n rowSurface: [\"flat\",\"card\"],\n chipShape: [\"pill\",\"rect\"],\n density: [\"default\",\"compact\"],\n listDirection: [\"vertical\",\"horizontal\"],\n chartKind: [\"bar\",\"stackedBar\",\"line\",\"area\",\"pie\",\"donut\",\"sparkline\"],\n segmentedVariant: [\"segmented\",\"toggles\",\"outline\",\"bar\"],\n liveTone: [\"live\",\"attention\",\"done\",\"unread\",\"idle\",\"muted\"],\n menuItemKind: [\"item\",\"checkbox\",\"separator\",\"label\",\"submenu\"],\n openOn: [\"press\",\"hover\"],\n menuOpenOn: [\"press\",\"contextmenu\"],\n live: [\"off\",\"polite\",\"assertive\"],\n selectable: [\"none\",\"single\",\"multiple\"],\n cellType: [\"text\",\"number\",\"date\",\"boolean\",\"badge\",\"slot\",\"currency\",\"percent\",\"relativeTime\"],\n sortDirection: [\"asc\",\"desc\"],\n imageLoading: [\"lazy\",\"eager\"],\n scrollDirection: [\"vertical\",\"horizontal\",\"both\"],\n collapseBelow: [\"never\",\"sm\",\"md\",\"lg\",\"xl\"],\n codeLanguage: [\"plain\",\"json\",\"js\",\"ts\",\"tsx\",\"rust\",\"swift\",\"kotlin\",\"python\",\"bash\",\"html\",\"css\",\"sql\",\"yaml\",\"markdown\",\"ansi\"],\n codeToken: [\"plain\",\"keyword\",\"string\",\"number\",\"comment\",\"punctuation\",\"operator\",\"type\",\"function\",\"property\",\"tag\",\"attribute\",\"success\",\"warning\",\"error\"],\n codeBlockVariant: [\"default\",\"destructive\"],\n codeBlockSize: [\"default\",\"sm\"],\n traceStatus: [\"running\",\"error\",\"pending\",\"done\",\"skipped\"],\n traceSize: [\"default\",\"sm\"],\n voiceWaveActivity: [\"idle\",\"listening\",\"thinking\",\"speaking\",\"muted\"],\n voiceWaveSize: [\"sm\",\"md\",\"lg\",\"xl\"],\n messageSide: [\"in\",\"out\"],\n messageStatus: [\"sending\",\"sent\",\"read\"],\n callState: [\"ringing\",\"connecting\",\"talking\",\"ended\"],\n voiceWaveVariant: [\"ring\",\"bars\"],\n qrLevel: [\"L\",\"M\",\"Q\",\"H\"],\n planState: [\"proposed\",\"running\",\"done\",\"declined\"],\n} as const\nexport type VariantValue = (typeof ENUMS)[\"variant\"][number]\nexport type SizeValue = (typeof ENUMS)[\"size\"][number]\nexport type ToneValue = (typeof ENUMS)[\"tone\"][number]\nexport type GapValue = (typeof ENUMS)[\"gap\"][number]\nexport type AlignValue = (typeof ENUMS)[\"align\"][number]\nexport type JustifyValue = (typeof ENUMS)[\"justify\"][number]\nexport type TextVariantValue = (typeof ENUMS)[\"textVariant\"][number]\nexport type HeadingLevelValue = (typeof ENUMS)[\"headingLevel\"][number]\nexport type ImageFitValue = (typeof ENUMS)[\"imageFit\"][number]\nexport type OrientationValue = (typeof ENUMS)[\"orientation\"][number]\nexport type SideValue = (typeof ENUMS)[\"side\"][number]\nexport type InputTypeValue = (typeof ENUMS)[\"inputType\"][number]\nexport type ValidateOnValue = (typeof ENUMS)[\"validateOn\"][number]\nexport type AlertTypeValue = (typeof ENUMS)[\"alertType\"][number]\nexport type ControlSizeValue = (typeof ENUMS)[\"controlSize\"][number]\nexport type SpinnerSizeValue = (typeof ENUMS)[\"spinnerSize\"][number]\nexport type TabClosableValue = (typeof ENUMS)[\"tabClosable\"][number]\nexport type GroupTypeValue = (typeof ENUMS)[\"groupType\"][number]\nexport type RowChevronValue = (typeof ENUMS)[\"rowChevron\"][number]\nexport type RowSurfaceValue = (typeof ENUMS)[\"rowSurface\"][number]\nexport type ChipShapeValue = (typeof ENUMS)[\"chipShape\"][number]\nexport type DensityValue = (typeof ENUMS)[\"density\"][number]\nexport type ListDirectionValue = (typeof ENUMS)[\"listDirection\"][number]\nexport type ChartKindValue = (typeof ENUMS)[\"chartKind\"][number]\nexport type SegmentedVariantValue = (typeof ENUMS)[\"segmentedVariant\"][number]\nexport type LiveToneValue = (typeof ENUMS)[\"liveTone\"][number]\nexport type MenuItemKindValue = (typeof ENUMS)[\"menuItemKind\"][number]\nexport type OpenOnValue = (typeof ENUMS)[\"openOn\"][number]\nexport type MenuOpenOnValue = (typeof ENUMS)[\"menuOpenOn\"][number]\nexport type LiveValue = (typeof ENUMS)[\"live\"][number]\nexport type SelectableValue = (typeof ENUMS)[\"selectable\"][number]\nexport type CellTypeValue = (typeof ENUMS)[\"cellType\"][number]\nexport type SortDirectionValue = (typeof ENUMS)[\"sortDirection\"][number]\nexport type ImageLoadingValue = (typeof ENUMS)[\"imageLoading\"][number]\nexport type ScrollDirectionValue = (typeof ENUMS)[\"scrollDirection\"][number]\nexport type CollapseBelowValue = (typeof ENUMS)[\"collapseBelow\"][number]\nexport type CodeLanguageValue = (typeof ENUMS)[\"codeLanguage\"][number]\nexport type CodeTokenValue = (typeof ENUMS)[\"codeToken\"][number]\nexport type CodeBlockVariantValue = (typeof ENUMS)[\"codeBlockVariant\"][number]\nexport type CodeBlockSizeValue = (typeof ENUMS)[\"codeBlockSize\"][number]\nexport type TraceStatusValue = (typeof ENUMS)[\"traceStatus\"][number]\nexport type TraceSizeValue = (typeof ENUMS)[\"traceSize\"][number]\nexport type VoiceWaveActivityValue = (typeof ENUMS)[\"voiceWaveActivity\"][number]\nexport type VoiceWaveSizeValue = (typeof ENUMS)[\"voiceWaveSize\"][number]\nexport type MessageSideValue = (typeof ENUMS)[\"messageSide\"][number]\nexport type MessageStatusValue = (typeof ENUMS)[\"messageStatus\"][number]\nexport type CallStateValue = (typeof ENUMS)[\"callState\"][number]\nexport type VoiceWaveVariantValue = (typeof ENUMS)[\"voiceWaveVariant\"][number]\nexport type QrLevelValue = (typeof ENUMS)[\"qrLevel\"][number]\nexport type PlanStateValue = (typeof ENUMS)[\"planState\"][number]\n\n/** Token NAMES by group (values come from a theme). */\nexport const TOKEN_NAMES = {\n \"color\": [\"background\",\"foreground\",\"card\",\"cardForeground\",\"popover\",\"popoverForeground\",\"primary\",\"primaryForeground\",\"secondary\",\"secondaryForeground\",\"muted\",\"mutedForeground\",\"accent\",\"accentForeground\",\"destructive\",\"destructiveForeground\",\"success\",\"successForeground\",\"warning\",\"warningForeground\",\"info\",\"infoForeground\",\"border\",\"input\",\"ring\",\"chart1\",\"chart2\",\"chart3\",\"chart4\",\"chart5\",\"chart6\",\"chart7\",\"chart8\"],\n \"spacing\": [\"none\",\"xxs\",\"xs\",\"sm\",\"md\",\"lg\",\"xl\",\"xl2\",\"xl3\"],\n \"radius\": [\"none\",\"sm\",\"md\",\"lg\",\"xl\",\"xl2\",\"xl3\",\"full\"],\n \"type.size\": [\"xs\",\"sm\",\"base\",\"lg\",\"xl\",\"xl2\",\"xl3\"],\n \"type.lineHeight\": [\"xs\",\"sm\",\"base\",\"lg\",\"xl\",\"xl2\",\"xl3\"],\n \"type.weight\": [\"regular\",\"medium\",\"semibold\",\"bold\"],\n \"type.family\": [\"sans\",\"mono\",\"serif\"],\n \"control\": [\"buttonSm\",\"buttonMd\",\"buttonLg\",\"buttonIcon\",\"input\",\"textarea\",\"row\",\"rowCompact\",\"pill\",\"badge\",\"chip\",\"toggle\",\"switch\",\"checkbox\",\"slider\",\"progress\",\"meter\",\"avatarSm\",\"avatarMd\",\"avatarLg\",\"iconSm\",\"iconMd\",\"iconLg\",\"hairline\",\"appBar\",\"tabBar\",\"toast\"],\n \"shadow\": [\"none\",\"sm\",\"md\",\"lg\",\"xl\"],\n \"opacity\": [\"primary\",\"secondary\",\"tertiary\",\"quaternary\",\"disabled\"],\n \"border\": [\"none\",\"hairline\",\"thick\"],\n \"motion\": [\"fast\",\"standard\",\"slow\"],\n \"breakpoint\": [\"sm\",\"md\",\"lg\",\"xl\"],\n \"ease\": [\"standard\",\"decelerate\",\"accelerate\"],\n \"density\": [\"compact\",\"comfortable\"],\n \"blur\": [\"sm\",\"md\",\"lg\",\"xl\"],\n \"scale\": [\"press\",\"popoverFrom\"],\n} as const\nexport type TokenGroup = keyof typeof TOKEN_NAMES\n\nexport const STYLE_KEY_NAMES = [\"display\",\"flexDirection\",\"flexWrap\",\"justifyContent\",\"alignItems\",\"alignContent\",\"alignSelf\",\"justifySelf\",\"flexGrow\",\"flexShrink\",\"flexBasis\",\"gap\",\"rowGap\",\"columnGap\",\"direction\",\"overflow\",\"overflowX\",\"overflowY\",\"width\",\"height\",\"minWidth\",\"minHeight\",\"maxWidth\",\"maxHeight\",\"aspectRatio\",\"position\",\"top\",\"right\",\"bottom\",\"left\",\"inset\",\"insetInlineStart\",\"insetInlineEnd\",\"insetBlockStart\",\"insetBlockEnd\",\"padding\",\"paddingTop\",\"paddingRight\",\"paddingBottom\",\"paddingLeft\",\"paddingHorizontal\",\"paddingVertical\",\"paddingInlineStart\",\"paddingInlineEnd\",\"margin\",\"marginTop\",\"marginRight\",\"marginBottom\",\"marginLeft\",\"marginHorizontal\",\"marginVertical\",\"marginInlineStart\",\"marginInlineEnd\",\"gridTemplateColumns\",\"gridTemplateRows\",\"gridTemplateAreas\",\"gridArea\",\"gridColumn\",\"gridRow\",\"backgroundColor\",\"backgroundGradient\",\"color\",\"borderWidth\",\"borderTopWidth\",\"borderRightWidth\",\"borderBottomWidth\",\"borderLeftWidth\",\"borderColor\",\"borderStyle\",\"borderRadius\",\"borderTopLeftRadius\",\"borderTopRightRadius\",\"borderBottomRightRadius\",\"borderBottomLeftRadius\",\"opacity\",\"boxShadow\",\"fontSize\",\"fontWeight\",\"lineHeight\",\"letterSpacing\",\"textAlign\",\"textDecoration\",\"textTransform\",\"fontStyle\",\"fontFamily\",\"transition\",\"transitionEasing\",\"transform\",\"visibility\",\"pointerEvents\",\"userSelect\",\"cursor\",\"backdropBlur\",\"animation\",\"animationDuration\"] as const\nexport const STYLE_STATE_NAMES = [\":hover\",\":focus-visible\",\":pressed\"] as const\n\n/** The Icon prop's vocabulary: packages/icons/icons.json at generate time. */\nexport const ICON_NAMES = [\"a-large-small\",\"action-chat\",\"action-create\",\"action-default\",\"action-repository\",\"action-run\",\"action-suggestion\",\"activity\",\"anchor\",\"app-editor-chat\",\"archive\",\"archive-restore\",\"arrow-down\",\"arrow-down-left\",\"arrow-left\",\"arrow-left-right\",\"arrow-right\",\"arrow-up-right\",\"at-sign\",\"atom\",\"audio-lines\",\"auth-passkey\",\"award\",\"ban\",\"bell\",\"bell-off\",\"bold\",\"book-open\",\"bookmark\",\"bot\",\"boxes\",\"braces\",\"brain\",\"briefcase\",\"brush-cleaning\",\"bug\",\"building\",\"building-2\",\"calculator\",\"calendar\",\"calendar-days\",\"call-end\",\"call-incoming\",\"call-mute\",\"call-speaker\",\"call-speaker-off\",\"call-unmute\",\"camera\",\"car\",\"chart-line\",\"check\",\"check-check\",\"chevron-down\",\"chevron-left\",\"chevron-right\",\"chevron-up\",\"chevrons-up-down\",\"circle\",\"circle-arrow-up\",\"circle-check\",\"circle-dashed\",\"circle-dot\",\"circle-question-mark\",\"circle-slash\",\"circle-stop\",\"circle-user\",\"circle-x\",\"clipboard-list\",\"clock\",\"cloud\",\"code\",\"coding-assistant\",\"coding-command\",\"coding-compact\",\"coding-diff\",\"coding-ended\",\"coding-in-review\",\"coding-needs-input\",\"coding-plan\",\"coding-running\",\"coding-stop\",\"coding-subagent\",\"coding-tool\",\"coffee\",\"compass\",\"computer\",\"copy\",\"corner-down-right\",\"cpu\",\"credit-card\",\"crown\",\"database\",\"download\",\"droplet\",\"dumbbell\",\"ear\",\"editor-bold\",\"editor-clear-formatting\",\"editor-code\",\"editor-emoji\",\"editor-heading-1\",\"editor-heading-2\",\"editor-heading-3\",\"editor-image\",\"editor-issue-ref\",\"editor-italic\",\"editor-link\",\"editor-list\",\"editor-list-ordered\",\"editor-list-todo\",\"editor-mention\",\"editor-quote\",\"editor-strikethrough\",\"editor-text\",\"editor-text-format\",\"editor-unlink\",\"ellipsis\",\"ellipsis-vertical\",\"event-assignee-changed\",\"event-board-moved\",\"event-estimate-changed\",\"event-label-added\",\"event-label-removed\",\"event-priority-changed\",\"event-relation-added\",\"event-relation-removed\",\"event-status-changed\",\"event-title-changed\",\"external-link\",\"eye\",\"eye-off\",\"fast-forward\",\"file\",\"file-diff\",\"file-pen-line\",\"file-text\",\"fingerprint\",\"flag\",\"flame\",\"flask-conical\",\"fold-vertical\",\"folder\",\"folder-kanban\",\"folder-open\",\"gamepad-2\",\"gauge\",\"gem\",\"gift\",\"git-branch\",\"git-merge\",\"git-pull-request\",\"github\",\"globe\",\"graduation-cap\",\"guide-changes\",\"hammer\",\"hand\",\"hard-drive\",\"hash\",\"heading-1\",\"heading-2\",\"heading-3\",\"headphones\",\"heart\",\"heart-off\",\"history\",\"hourglass\",\"house\",\"image\",\"images\",\"inbox\",\"info\",\"italic\",\"key\",\"landmark\",\"laptop\",\"layers\",\"layers-2\",\"layout-grid\",\"leaf\",\"lightbulb\",\"link\",\"link-2\",\"list\",\"list-checks\",\"list-end\",\"list-ordered\",\"list-todo\",\"list-tree\",\"loader-circle\",\"lock\",\"lock-open\",\"log-in\",\"log-out\",\"mail\",\"mail-open\",\"map\",\"map-pin\",\"maximize-2\",\"media-fast-forward\",\"media-rewind\",\"media-skip-next\",\"media-skip-previous\",\"media-volume-down\",\"media-volume-mute\",\"media-volume-off\",\"media-volume-up\",\"megaphone\",\"menu\",\"message-circle\",\"message-square\",\"message-square-plus\",\"message-square-reply\",\"mic\",\"mic-off\",\"microscope\",\"minimize-2\",\"minus\",\"monitor\",\"monitor-off\",\"moon\",\"mountain\",\"move\",\"music\",\"nav-account\",\"nav-actions\",\"nav-admin\",\"nav-apps\",\"nav-boards\",\"nav-changelog\",\"nav-computer\",\"nav-create-issue\",\"nav-devices\",\"nav-drafts\",\"nav-files\",\"nav-getting-started\",\"nav-inbox\",\"nav-issues\",\"nav-my-issues\",\"nav-notifications\",\"nav-rail-collapse\",\"nav-rail-expand\",\"nav-report-bug\",\"nav-search\",\"nav-settings\",\"nav-sign-out\",\"nav-source-control\",\"nav-team-switcher\",\"nav-terminal\",\"nav-threads\",\"newspaper\",\"notification-agent-message\",\"notification-issue-assigned\",\"notification-issue-comment\",\"notification-issue-created\",\"notification-issue-mention\",\"notification-issue-status-changed\",\"notification-mark-read\",\"notification-mute\",\"notification-pr-merged\",\"notification-pr-opened\",\"notification-reporter-reply\",\"notification-session-blocked\",\"os-apple\",\"os-linux\",\"os-windows\",\"package\",\"paintbrush\",\"palette\",\"panel-left-close\",\"panel-left-open\",\"paperclip\",\"pause\",\"pen-tool\",\"pencil\",\"phone\",\"phone-incoming\",\"phone-off\",\"pin\",\"pin-off\",\"plane\",\"play\",\"plug\",\"plus\",\"pr-batch\",\"pr-closed\",\"pr-draft\",\"pr-merged\",\"pr-open\",\"pr-stack\",\"printer\",\"priority-high\",\"priority-low\",\"priority-medium\",\"priority-none\",\"priority-urgent\",\"progress-1-4\",\"progress-1-5\",\"progress-2-4\",\"progress-2-5\",\"progress-3-4\",\"progress-3-5\",\"progress-4-5\",\"puzzle\",\"qr-code\",\"quote\",\"refresh-cw\",\"relation-blocked-by\",\"relation-blocks\",\"relation-duplicate\",\"relation-parent\",\"relation-related\",\"relation-section\",\"relation-sub-issue\",\"remove-formatting\",\"repeat\",\"rewind\",\"rocket\",\"rotate-ccw\",\"run-pause\",\"run-resume\",\"sc-push\",\"scale\",\"scan-line\",\"search\",\"search-x\",\"send\",\"server\",\"session-shell\",\"session-tree\",\"settings\",\"settings-about\",\"settings-account\",\"settings-agents\",\"settings-api\",\"settings-billing\",\"settings-boards\",\"settings-general\",\"settings-import\",\"settings-issues\",\"settings-labels\",\"settings-licenses\",\"settings-local-repos\",\"settings-mcp\",\"settings-members\",\"settings-notifications\",\"settings-rate\",\"settings-repositories\",\"settings-servers\",\"settings-sessions\",\"settings-statuses\",\"settings-storage\",\"settings-sync\",\"settings-tools\",\"settings-voice\",\"settings-widget\",\"share-2\",\"shield\",\"shield-check\",\"shield-question-mark\",\"shopping-bag\",\"shopping-cart\",\"signal-high\",\"signal-low\",\"signal-medium\",\"skip-back\",\"skip-forward\",\"sliders-horizontal\",\"smartphone\",\"smile\",\"sparkles\",\"square\",\"square-check\",\"square-kanban\",\"square-minus\",\"square-pen\",\"square-slash\",\"square-terminal\",\"star\",\"star-half\",\"star-off\",\"status-backlog\",\"status-cancelled\",\"status-done\",\"status-duplicate\",\"status-in-progress\",\"status-in-review\",\"status-todo\",\"stethoscope\",\"store\",\"strikethrough\",\"sun\",\"support-open\",\"support-resolved\",\"tag\",\"target\",\"terminal\",\"thread-stories\",\"tool-script\",\"trace-background\",\"trace-chevron\",\"trace-completed\",\"trace-edit\",\"trace-failed\",\"trace-fetch\",\"trace-read\",\"trace-reasoning\",\"trace-search\",\"trace-subagent\",\"trace-task-done\",\"trace-task-pending\",\"trace-task-running\",\"trace-terminal\",\"trace-todo\",\"trace-tool\",\"trash-2\",\"tree-pine\",\"triangle-alert\",\"trigger-event\",\"trigger-schedule\",\"trophy\",\"truck\",\"type\",\"ui-add\",\"ui-agent-source\",\"ui-archive\",\"ui-arrow-down\",\"ui-arrow-right\",\"ui-assignee\",\"ui-attach\",\"ui-avatar-placeholder\",\"ui-back\",\"ui-branch\",\"ui-check\",\"ui-checklist\",\"ui-chevron-down\",\"ui-chevron-left\",\"ui-chevron-right\",\"ui-chevron-up\",\"ui-clean\",\"ui-clear\",\"ui-clock\",\"ui-close\",\"ui-cloud\",\"ui-copy\",\"ui-delete\",\"ui-delete-account\",\"ui-device\",\"ui-device-default\",\"ui-device-offline\",\"ui-dock-side\",\"ui-docs\",\"ui-download\",\"ui-due-date\",\"ui-edit\",\"ui-empty-search\",\"ui-error\",\"ui-estimate\",\"ui-external-link\",\"ui-favorite-off\",\"ui-file\",\"ui-float\",\"ui-folder\",\"ui-folder-open\",\"ui-fullscreen\",\"ui-fullscreen-exit\",\"ui-github\",\"ui-help\",\"ui-hide\",\"ui-history\",\"ui-hold\",\"ui-icon-placeholder\",\"ui-indeterminate\",\"ui-info\",\"ui-invite\",\"ui-issue\",\"ui-link\",\"ui-loading\",\"ui-mail\",\"ui-mark-read\",\"ui-mark-unread\",\"ui-mcp\",\"ui-member\",\"ui-menu\",\"ui-minus\",\"ui-more\",\"ui-more-vertical\",\"ui-offline\",\"ui-organization\",\"ui-owner\",\"ui-permission\",\"ui-pin\",\"ui-print\",\"ui-private\",\"ui-properties\",\"ui-qr-code\",\"ui-queued\",\"ui-read\",\"ui-redock\",\"ui-refresh\",\"ui-remove-member\",\"ui-repeat\",\"ui-repository\",\"ui-scan\",\"ui-selected\",\"ui-selector\",\"ui-send\",\"ui-server\",\"ui-share\",\"ui-sign-in\",\"ui-sign-out\",\"ui-staging\",\"ui-star-half\",\"ui-star-off\",\"ui-stop\",\"ui-submit\",\"ui-subscribe\",\"ui-success\",\"ui-swap\",\"ui-team\",\"ui-unarchive\",\"ui-unassigned\",\"ui-undo\",\"ui-undock\",\"ui-unlock\",\"ui-unpin\",\"ui-unselected\",\"ui-unsubscribe\",\"ui-update\",\"ui-usage\",\"ui-warning\",\"ui-watch\",\"ui-widget\",\"undo-2\",\"unlink\",\"upload\",\"user\",\"user-minus\",\"user-plus\",\"user-x\",\"users\",\"video\",\"voice-call\",\"voice-level\",\"volume-1\",\"volume-2\",\"volume-off\",\"volume-x\",\"wallet\",\"wifi-off\",\"work-faces\",\"work-results\",\"workflow\",\"wrench\",\"x\",\"zap\"] as const\n\nexport const FUNCTION_NAMES = [\"required\",\"regex\",\"length\",\"numeric\",\"email\",\"formatString\",\"formatNumber\",\"formatCurrency\",\"formatDate\",\"pluralize\",\"openUrl\",\"and\",\"or\",\"not\",\"percent\",\"add\",\"sub\",\"eq\",\"lt\",\"clamp\",\"cond\",\"fallback\",\"concat\",\"coalesce\",\"text\",\"map\",\"len\",\"fill\",\"set\",\"formatPercent\",\"formatRelativeTime\",\"filter\",\"bind\"] as const\n\n/** VAPP-108: the typed authoring surface (src/define.ts). A ~ prop also\n * takes a binding or a call, a ^ prop a per-breakpoint object. */\nexport type Dynamic = DataBinding | FunctionCall\nexport type Responsive<T> = { base: T; sm?: T; md?: T; lg?: T; xl?: T }\nexport type IconName = (typeof ICON_NAMES)[number]\n/** The shared shapes (catalog `defs`). */\nexport interface Shapes {\n option: { label: string | Dynamic; value: string; icon?: IconName; disabled?: boolean; description?: string; image?: string; count?: number | Dynamic }\n check: { condition: boolean | Dynamic; message: string }\n tab: { label: string | Dynamic; value: string; icon?: IconName; count?: number }\n menuItem: { label?: string; value?: string; kind?: MenuItemKindValue; icon?: IconName; shortcut?: string; checked?: boolean | Dynamic; destructive?: boolean; disabled?: boolean; items?: Shapes[\"menuItem\"][] | Dynamic; searchable?: boolean; placeholder?: string }\n searchItem: { label: string | Dynamic; value: string; icon?: IconName; identifier?: string; disabled?: boolean }\n accordionItem: { title: string | Dynamic; value: string; count?: number }\n segment: { value: number; tone?: ToneValue; label?: string }\n series: { name: string; values: number[]; tone?: ToneValue }\n pageItem: { title?: string }\n step: { label: string; description?: string }\n column: { key: string; label: string; type?: CellTypeValue; slot?: string; width?: number; align?: \"start\" | \"center\" | \"end\"; sortable?: boolean; currency?: string; decimals?: number }\n sort: { key: string; direction: SortDirectionValue }\n panel: { min?: number; max?: number; collapsible?: boolean }\n file: { name: string; size?: number; type?: string; url?: string }\n planStep: { title: string; detail?: string; icon?: IconName; status?: TraceStatusValue }\n outlineItem: { id: string; title: string | Dynamic; count?: number | Dynamic }\n picture: { src: string; alt?: string }\n}\n/** Every component's props, by name. */\nexport interface ComponentProps {\n Box: { style?: Style; pressable?: boolean }\n Stack: { direction?: OrientationValue | Responsive<OrientationValue> | Dynamic; gap?: GapValue | Responsive<GapValue>; align?: AlignValue | Responsive<AlignValue> | Dynamic; justify?: JustifyValue | Responsive<JustifyValue> | Dynamic; wrap?: boolean | Responsive<boolean>; style?: Style }\n Grid: { columns?: number | Responsive<number>; gap?: GapValue | Responsive<GapValue>; style?: Style }\n Card: { title?: string; description?: string; padded?: boolean; style?: Style }\n Separator: { orientation?: OrientationValue }\n List: { direction?: ListDirectionValue; gap?: GapValue; divided?: boolean; sectionBy?: string; stickyHeaders?: boolean; style?: Style }\n Resizable: { direction?: OrientationValue | Responsive<OrientationValue>; sizes?: number[] | Dynamic; panels?: Shapes[\"panel\"][]; handle?: boolean; style?: Style }\n ScrollArea: { direction?: ScrollDirectionValue; maxHeight?: number; style?: Style }\n Sidebar: { side?: \"left\" | \"right\"; width?: number; collapseBelow?: CollapseBelowValue; collapsed?: boolean | Dynamic }\n SplitView: { open?: boolean | Dynamic; width?: number }\n AppBar: { title: string | Dynamic; subtitle?: string | Dynamic; back?: boolean }\n Page: { title: string | Dynamic; subtitle?: string | Dynamic; back?: boolean; padded?: boolean }\n Toolbar: { gap?: GapValue }\n Section: { title?: string | Dynamic; caption?: string | Dynamic; count?: number | Dynamic; icon?: IconName; collapsible?: boolean; open?: boolean | Dynamic; tint?: ToneValue; tree?: boolean; loading?: boolean | Dynamic; style?: Style }\n Group: { title?: string; footer?: string }\n Text: { text: string | Dynamic; variant?: TextVariantValue; align?: \"start\" | \"center\" | \"end\"; lines?: number; tone?: ToneValue; shimmer?: boolean; live?: LiveValue; style?: Style }\n Heading: { text: string | Dynamic; level?: HeadingLevelValue }\n Markdown: { text: string | Dynamic; lines?: number; style?: Style }\n CodeBlock: { code: string | Dynamic; language?: CodeLanguageValue; title?: string; lineNumbers?: boolean; wrap?: boolean; copyable?: boolean; highlight?: number[]; maxLines?: number; variant?: CodeBlockVariantValue | Dynamic; size?: CodeBlockSizeValue }\n Kbd: { keys: string }\n Label: { text: string | Dynamic; for?: string; required?: boolean }\n Image: { src?: string | Dynamic; alt: string | Dynamic; fit?: ImageFitValue; width?: number; height?: number; aspectRatio?: number; fallback?: IconName; loading?: ImageLoadingValue; focalX?: number; focalY?: number; style?: Style }\n Icon: { name: IconName | Dynamic; size?: ControlSizeValue; tone?: ToneValue | Dynamic; label?: string }\n Video: { src: string | Dynamic; poster?: string; durationMs?: number; autoplay?: boolean; aspectRatio?: number; style?: Style }\n AudioPlayer: { src: string | Dynamic; title?: string; durationMs?: number }\n Avatar: { name: string | Dynamic; src?: string | Dynamic; size?: ControlSizeValue; seed?: string }\n QrCode: { value: string | Dynamic; size?: number; level?: QrLevelValue; label?: string }\n Carousel: { page?: number | Dynamic; loop?: boolean; indicators?: boolean; counter?: boolean; thumbnails?: string[] }\n Mosaic: { pictures: Shapes[\"picture\"][]; label?: string }\n Tabs: { tabs: Shapes[\"tab\"][]; value?: string | Dynamic; fill?: boolean; closable?: TabClosableValue; addable?: boolean }\n Segmented: { items: Shapes[\"option\"][]; type?: GroupTypeValue; value?: string | Dynamic; variant?: SegmentedVariantValue; size?: ControlSizeValue; fill?: boolean; orientation?: OrientationValue }\n Accordion: { items: Shapes[\"accordionItem\"][]; type?: GroupTypeValue; value?: string | Dynamic }\n Collapsible: { title: string; open?: boolean | Dynamic; count?: number }\n Trace: { size?: TraceSizeValue }\n TraceItem: { title: string | Dynamic; icon?: IconName; description?: string; status?: TraceStatusValue; size?: TraceSizeValue; collapsible?: boolean; open?: boolean | Dynamic }\n Plan: { title: string | Dynamic; description?: string | Dynamic; steps?: Shapes[\"planStep\"][]; state?: PlanStateValue | Dynamic; progress?: number | Dynamic; approveLabel?: string; declineLabel?: string; stopLabel?: string }\n Pagination: { totalPages: number; page?: number | Dynamic }\n Breadcrumb: { items: Shapes[\"option\"][] }\n Outline: { items: Shapes[\"outlineItem\"][]; value?: string | Dynamic; caption?: string }\n Stepper: { steps: Shapes[\"step\"][]; current?: number | Dynamic; orientation?: OrientationValue }\n Dialog: { title?: string; description?: string; open?: boolean | Dynamic; dismissible?: boolean }\n Drawer: { title?: string; description?: string; open?: boolean | Dynamic; side?: SideValue | Responsive<SideValue>; dismissible?: boolean; dragToDismiss?: boolean }\n DockCard: { label: string | Dynamic; title: string | Dynamic; caption?: string | Dynamic; meta?: string | Dynamic; icon?: IconName; tone?: ToneValue; open?: boolean | Dynamic }\n AlertDialog: { title: string; description?: string; confirmLabel?: string; cancelLabel?: string; destructive?: boolean; open?: boolean | Dynamic }\n Popover: { open?: boolean | Dynamic; side?: SideValue; openOn?: OpenOnValue }\n Tooltip: { content: string; side?: SideValue }\n Menu: { label?: string; icon?: IconName; items: Shapes[\"menuItem\"][]; openOn?: MenuOpenOnValue }\n Toast: { title: string | Dynamic; description?: string | Dynamic; type?: AlertTypeValue; open?: boolean | Dynamic; duration?: number; actionLabel?: string; dismissible?: boolean }\n Badge: { text: string | Dynamic; variant?: VariantValue | Dynamic; icon?: IconName }\n Alert: { title: string; message?: string; type?: AlertTypeValue }\n Chip: { label: string | Dynamic; shape?: ChipShapeValue; selected?: boolean; tone?: ToneValue | Dynamic; dot?: string; icon?: IconName; image?: string; detail?: string; removable?: boolean; pressable?: boolean }\n EmptyState: { icon: IconName; title: string; description?: string; actionLabel?: string; size?: \"page\" | \"list\" }\n Progress: { value: number | Dynamic; max?: number; label?: string; tone?: ToneValue }\n Meter: { segments: Shapes[\"segment\"][]; max?: number; label?: string; value?: string }\n Ring: { value: number | Dynamic; size?: ControlSizeValue; tone?: ToneValue; label?: string }\n Spinner: { size?: SpinnerSizeValue; label?: string }\n Skeleton: { width?: string; height?: string; rounded?: boolean; rows?: number; rowHeight?: number; dot?: boolean }\n VoiceWave: { activity?: VoiceWaveActivityValue | Dynamic; variant?: VoiceWaveVariantValue; level?: number | Dynamic; bands?: number[] | Dynamic; size?: VoiceWaveSizeValue; label?: string }\n CallSurface: { name: string | Dynamic; avatar?: string | Dynamic; state?: CallStateValue | Dynamic; activity?: VoiceWaveActivityValue | Dynamic; level?: number | Dynamic; bands?: number[] | Dynamic; status?: string | Dynamic; caption?: string | Dynamic; muted?: boolean | Dynamic; speaker?: boolean | Dynamic }\n Table: { columns: Shapes[\"column\"][]; rows: Record<string, unknown>[] | Dynamic; rowKey?: string; sort?: Shapes[\"sort\"] | Dynamic; selectable?: SelectableValue; selected?: string[] | Dynamic; caption?: string; emptyText?: string; striped?: boolean; density?: DensityValue; stickyHeader?: boolean }\n Chart: { kind: ChartKindValue; categories?: string[] | Dynamic; series: Shapes[\"series\"][] | Dynamic; title?: string; height?: number; xLabel?: string; yLabel?: string; min?: number; max?: number; showAxes?: boolean; showGrid?: boolean; showLegend?: boolean; showValues?: boolean }\n Sparkline: { values: number[] | Dynamic; tone?: ToneValue; height?: number }\n StatTile: { label: string | Dynamic; value: string | Dynamic; delta?: string | Dynamic; tone?: ToneValue | Dynamic; trend?: number[] | Dynamic }\n Button: { label?: string | Dynamic; icon?: IconName | Dynamic; variant?: VariantValue; size?: SizeValue; disabled?: boolean | Dynamic; loading?: boolean; pendingLabel?: string; submit?: boolean; hold?: boolean; holdingLabel?: string }\n Link: { label: string | Dynamic; href?: string; external?: boolean }\n Toggle: { label: string; icon?: IconName; pressed?: boolean | Dynamic; variant?: \"default\" | \"outline\"; size?: ControlSizeValue }\n Form: { name: string; disabled?: boolean | Dynamic; busy?: boolean | Dynamic; summary?: boolean }\n FieldGroup: { columns?: number }\n FormActions: { submit: string | Dynamic; cancel?: boolean; destructive?: boolean }\n Input: { label: string; name: string; type?: InputTypeValue; placeholder?: string; value?: string | Dynamic; disabled?: boolean; checks?: Shapes[\"check\"][]; validateOn?: ValidateOnValue }\n Textarea: { label: string; name: string; placeholder?: string; rows?: number; autosize?: boolean; maxRows?: number; value?: string | Dynamic; disabled?: boolean; checks?: Shapes[\"check\"][]; validateOn?: ValidateOnValue }\n NumberField: { label: string; name: string; value?: number | Dynamic; min?: number; max?: number; step?: number; precision?: number; unit?: string; placeholder?: string; disabled?: boolean; checks?: Shapes[\"check\"][]; validateOn?: ValidateOnValue }\n Checkbox: { label: string | Dynamic; name: string; checked?: boolean | Dynamic; disabled?: boolean; checks?: Shapes[\"check\"][] }\n Radio: { label?: string; name: string; options: Shapes[\"option\"][]; value?: string | Dynamic; orientation?: OrientationValue; checks?: Shapes[\"check\"][] }\n ChoiceTiles: { name: string; options: Shapes[\"option\"][]; type?: GroupTypeValue; value?: string | Dynamic; columns?: number; disabled?: boolean; checks?: Shapes[\"check\"][] }\n Switch: { label: string | Dynamic; name: string; checked?: boolean | Dynamic; description?: string; disabled?: boolean }\n Slider: { label?: string; min?: number | Dynamic; max: number | Dynamic; step?: number; value?: number | Dynamic }\n Rating: { value?: number | Dynamic; max?: number; readOnly?: boolean; size?: ControlSizeValue }\n Select: { label?: string; name: string; options?: Shapes[\"option\"][] | Dynamic; source?: string; placeholder?: string; value?: string | Dynamic; multiple?: boolean; searchable?: boolean; emptyText?: string; disabled?: boolean; checks?: Shapes[\"check\"][]; validateOn?: ValidateOnValue }\n SearchList: { items: Shapes[\"searchItem\"][] | Dynamic; query?: string | Dynamic; placeholder?: string; value?: string | Dynamic; emptyText?: string; maxRows?: number; showCount?: boolean }\n ChipInput: { label?: string; name: string; values?: string[] | Dynamic; suggestions?: Shapes[\"option\"][] | Dynamic; placeholder?: string; max?: number; disabled?: boolean; checks?: Shapes[\"check\"][] }\n DatePicker: { label?: string; name: string; value?: string | Dynamic; min?: string; max?: string; placeholder?: string; firstDayOfWeek?: number }\n DateRangePicker: { label?: string; name: string; start?: string | Dynamic; end?: string | Dynamic; min?: string; max?: string; placeholder?: string; firstDayOfWeek?: number }\n TimePicker: { label?: string; name: string; value?: string | Dynamic; min?: string; max?: string; step?: number; placeholder?: string; disabled?: boolean }\n FileUpload: { label?: string; name: string; accept?: string; multiple?: boolean; maxSize?: number; files?: Shapes[\"file\"][] | Dynamic; hint?: string; disabled?: boolean }\n QrScanner: { hint?: string | Dynamic; formats?: string[]; label?: string; disabled?: boolean }\n Composer: { placeholder?: string; value?: string | Dynamic; submitLabel?: string; attachments?: boolean; busy?: boolean }\n Row: { title: string | Dynamic; identifier?: string | Dynamic; subtitle?: string | Dynamic; meta?: string | Dynamic; value?: string | Dynamic; placeholder?: string; icon?: IconName | Dynamic; chevron?: RowChevronValue | Dynamic; selected?: boolean | Dynamic; density?: DensityValue; surface?: RowSurfaceValue; pressable?: boolean; depth?: number }\n MessageBubble: { text: string | Dynamic; side?: MessageSideValue; time?: string | Dynamic; status?: MessageStatusValue | Dynamic; author?: string | Dynamic }\n TreeGuides: { depth: number; elbowAt?: number; tee?: boolean; passThrough?: number[] }\n Unknown: { component: string; catalogId?: string }\n}\n\n/** A2UI basic component → core component. */\nexport const BASIC_COMPONENT_MAP: Record<string, string> = {\"Text\":\"Text\",\"Image\":\"Image\",\"Icon\":\"Icon\",\"Video\":\"Video\",\"AudioPlayer\":\"AudioPlayer\",\"Row\":\"Stack\",\"Column\":\"Stack\",\"List\":\"List\",\"Card\":\"Card\",\"Tabs\":\"Tabs\",\"Modal\":\"Dialog\",\"Divider\":\"Separator\",\"Button\":\"Button\",\"TextField\":\"Input\",\"CheckBox\":\"Checkbox\",\"ChoicePicker\":\"Radio\",\"Slider\":\"Slider\",\"DateTimeInput\":\"DatePicker\"}\n/** A2UI basic icon name → icons.json name (the placeholder where none exists). */\nexport const BASIC_ICON_MAP: Record<string, string> = {\"accountCircle\":\"ui-assignee\",\"add\":\"ui-add\",\"arrowBack\":\"ui-back\",\"arrowForward\":\"ui-arrow-right\",\"attachFile\":\"ui-attach\",\"calendarToday\":\"calendar\",\"call\":\"phone\",\"camera\":\"camera\",\"check\":\"ui-check\",\"close\":\"ui-close\",\"delete\":\"ui-delete\",\"download\":\"ui-download\",\"edit\":\"ui-edit\",\"event\":\"ui-due-date\",\"error\":\"ui-error\",\"fastForward\":\"media-fast-forward\",\"favorite\":\"heart\",\"favoriteOff\":\"ui-favorite-off\",\"folder\":\"ui-folder\",\"help\":\"ui-help\",\"home\":\"house\",\"info\":\"ui-info\",\"locationOn\":\"map-pin\",\"lock\":\"ui-private\",\"lockOpen\":\"ui-unlock\",\"mail\":\"ui-mail\",\"menu\":\"ui-menu\",\"moreVert\":\"ui-more-vertical\",\"moreHoriz\":\"ui-more\",\"notificationsOff\":\"ui-unsubscribe\",\"notifications\":\"ui-subscribe\",\"pause\":\"run-pause\",\"payment\":\"credit-card\",\"person\":\"ui-avatar-placeholder\",\"phone\":\"smartphone\",\"photo\":\"image\",\"play\":\"action-run\",\"print\":\"ui-print\",\"refresh\":\"ui-refresh\",\"rewind\":\"media-rewind\",\"search\":\"nav-search\",\"send\":\"ui-send\",\"settings\":\"nav-settings\",\"share\":\"ui-share\",\"shoppingCart\":\"shopping-cart\",\"skipNext\":\"media-skip-next\",\"skipPrevious\":\"media-skip-previous\",\"star\":\"star\",\"starHalf\":\"ui-star-half\",\"starOff\":\"ui-star-off\",\"stop\":\"ui-stop\",\"upload\":\"sc-push\",\"visibility\":\"ui-watch\",\"visibilityOff\":\"ui-hide\",\"volumeDown\":\"media-volume-down\",\"volumeMute\":\"media-volume-mute\",\"volumeOff\":\"media-volume-off\",\"volumeUp\":\"media-volume-up\",\"warning\":\"ui-warning\"}\nexport const BASIC_PLACEHOLDER_ICON = \"ui-icon-placeholder\"\n",
|
|
6
6
|
"// Round 1 (docs/round-1-contract.md §4): the built-in UI strings. The ids\n// and English defaults live in catalog/strings.json; a host overrides any id\n// per surface; `$string.<id>` in a prop value resolves through this table at\n// bind time. Pure, mirrored by the Rust core and the native renderers.\n\nimport stringsJson from \"../catalog/strings.json\" with { type: \"json\" }\n\nexport const DEFAULT_STRINGS: Readonly<Record<string, string>> = stringsJson.strings\nexport const STRING_IDS: readonly string[] = Object.keys(DEFAULT_STRINGS)\n\nconst REF = /^\\$string\\.([a-zA-Z][a-zA-Z0-9]*)$/\nconst PLACEHOLDER = /\\{([a-zA-Z][a-zA-Z0-9]*)\\}/g\n\n/** `$string.choose` → `choose`; null for any other value. */\nexport function parseStringRef(value: unknown): string | null {\n if (typeof value !== `string`) return null\n const m = REF.exec(value)\n return m ? m[1] : null\n}\n\n/** True for a well-formed reference to a KNOWN id. */\nexport function isStringRef(value: unknown): boolean {\n const id = parseStringRef(value)\n return id !== null && id in DEFAULT_STRINGS\n}\n\n/** The host's overrides merged over the defaults. */\nexport function stringTable(overrides: Readonly<Record<string, string>> = {}): Record<string, string> {\n return { ...DEFAULT_STRINGS, ...overrides }\n}\n\n/** `{name}` placeholders filled from `params`; unknown ones stay. */\nexport function formatString(template: string, params: Record<string, unknown> = {}): string {\n return template.replace(PLACEHOLDER, (whole, name: string) => (name in params && params[name] !== undefined && params[name] !== null ? String(params[name]) : whole))\n}\n\n/** A prop value with any `$string.<id>` reference replaced by the table's\n * text (an unknown id resolves to the id itself); other values pass. */\nexport function resolveString(value: unknown, table: Readonly<Record<string, string>> = DEFAULT_STRINGS): unknown {\n const id = parseStringRef(value)\n if (id === null) return value\n return table[id] ?? id\n}\n",
|
|
7
7
|
"// Round 2 (docs/round-2-contract.md §3): FORMATTING through a host-supplied\n// Formatter. A renderer formats every number, currency, percent, date and\n// relative time it shows (Table cells, NumberField, chart ticks, calendar\n// names, the format* bind functions) through ONE Formatter per surface, in\n// the surface's `locale` and `timeZone`. The TS renderers build it on Intl\n// (`intlFormatter`); the Rust core defines a `Formatter` trait whose default\n// is the ENGLISH fallback (`englishFormatter`, catalog/locale.json\n// `englishFallback`); FFI hosts pass a foreign one. fixtures/format.json locks\n// the fallback (= Intl en-US, ICU 74+; instants in the surface zone, given\n// to the fallback as a UTC offset per instant), and the display of a bound non-string\n// value in a text prop (`displayString`). Pure.\n\nimport localeJson from \"../catalog/locale.json\" with { type: \"json\" }\n\nexport type PluralCategory = `zero` | `one` | `two` | `few` | `many` | `other`\nexport type DateStyle = `short` | `medium` | `long` | `full`\nexport type RelativeUnit = `second` | `minute` | `hour` | `day` | `week` | `month` | `year`\n\nexport interface NumberOptions {\n /** Fixed fraction digits (min = max); absent = 0..3 for numbers, the\n * currency's minor digits for currencies, 0 for percents. */\n decimals?: number\n /** Locale grouping separators (default true). */\n grouping?: boolean\n}\n\nexport interface DateOptions {\n /** A Unicode TR35 pattern (`MMM d, yyyy`, `HH:mm`); wins over `style`. */\n format?: string\n /** A locale preset (default `medium`: `Oct 14, 2026`). */\n style?: DateStyle\n /** Append the short time (`2:30 PM`) to a preset. */\n time?: boolean\n}\n\n/** What a host supplies per surface (SurfaceSettings.locale + timeZone). */\nexport interface Formatter {\n readonly locale: string\n number(value: number, options?: NumberOptions): string\n currency(value: number, currency: string, options?: NumberOptions): string\n /** `value` is a ratio: 0.256 → `26%`. */\n percent(value: number, options?: { decimals?: number }): string\n /** `value` = `yyyy-mm-dd` (a calendar day, no zone), an ISO date-time (an\n * instant; no offset = UTC) or epoch milliseconds; unreadable = ``. */\n date(value: unknown, options?: DateOptions): string\n /** `value` as for `date`, against `now` (epoch ms). */\n relativeTime(value: unknown, now: number): string\n plural(value: number): PluralCategory\n}\n\nconst FALLBACK = localeJson.englishFallback\nconst MS = { second: 1000, minute: 60_000, hour: 3_600_000, day: 86_400_000 }\n\n// ---------------------------------------------------------------------------\n// Display of a non-string value in a text prop\n// ---------------------------------------------------------------------------\n\n/** What a `string`/`markdown` prop shows for a bound value: strings as they\n * are, finite numbers as ECMAScript `Number.prototype.toString` (shortest\n * round trip, `-0` → `0`, exponent form below 1e-6 and from 1e21), booleans\n * `true`/`false`; null, undefined, non-finite numbers, objects and arrays\n * show nothing (``). No locale formatting (use formatNumber for that). */\nexport function displayString(value: unknown): string {\n if (typeof value === `string`) return value\n if (typeof value === `number`) return Number.isFinite(value) ? String(value) : ``\n if (typeof value === `boolean`) return String(value)\n return ``\n}\n\n// ---------------------------------------------------------------------------\n// Decimal arithmetic on the shortest round-trip string (ICU's halfExpand)\n// ---------------------------------------------------------------------------\n\ninterface Decimal {\n int: string\n frac: string\n}\n\n/** |n| as its shortest round-trip decimal digits, split at the point. */\nfunction decimalOf(abs: number): Decimal {\n const m = /^(\\d+)(?:\\.(\\d+))?(?:e([+-]\\d+))?$/.exec(String(abs))\n if (!m) return { int: `0`, frac: `` }\n const digits = m[1] + (m[2] ?? ``)\n let point = m[1].length + (m[3] ? Number(m[3]) : 0)\n let all = digits\n if (point <= 0) {\n all = `0`.repeat(1 - point) + all\n point = 1\n }\n if (point > all.length) all = all + `0`.repeat(point - all.length)\n const int = all.slice(0, point).replace(/^0+(?=\\d)/, ``)\n return { int, frac: all.slice(point).replace(/0+$/, ``) }\n}\n\n/** Move the point `places` to the right (percent = 2). */\nfunction shift(d: Decimal, places: number): Decimal {\n const frac = d.frac + `0`.repeat(Math.max(0, places - d.frac.length))\n const int = (d.int + frac.slice(0, places)).replace(/^0+(?=\\d)/, ``)\n return { int, frac: frac.slice(places).replace(/0+$/, ``) }\n}\n\n/** Round to at most `max` fraction digits, half away from zero, then pad to\n * `min`. */\nfunction round(d: Decimal, min: number, max: number): Decimal {\n let { int, frac } = d\n if (frac.length > max) {\n const up = frac.charCodeAt(max) >= 53 // '5'\n let kept = int + frac.slice(0, max)\n if (up) {\n const chars = kept.split(``)\n let i = chars.length - 1\n for (; i >= 0; i--) {\n if (chars[i] === `9`) chars[i] = `0`\n else {\n chars[i] = String(Number(chars[i]) + 1)\n break\n }\n }\n kept = (i < 0 ? `1` : ``) + chars.join(``)\n }\n const intLen = kept.length - max\n int = kept.slice(0, intLen) || `0`\n frac = kept.slice(intLen).replace(/0+$/, ``)\n }\n if (frac.length < min) frac = frac + `0`.repeat(min - frac.length)\n return { int, frac }\n}\n\nfunction group(int: string, on: boolean): string {\n if (!on || int.length < 4) return int\n let out = ``\n for (let i = 0; i < int.length; i++) {\n if (i > 0 && (int.length - i) % 3 === 0) out += `,`\n out += int[i]\n }\n return out\n}\n\nfunction englishNumber(value: number, min: number, max: number, grouping: boolean): { sign: string; body: string } {\n const neg = value < 0 || Object.is(value, -0)\n if (Number.isNaN(value)) return { sign: ``, body: `NaN` }\n if (!Number.isFinite(value)) return { sign: neg ? `-` : ``, body: `∞` }\n const d = round(decimalOf(Math.abs(value)), min, max)\n return { sign: neg ? `-` : ``, body: `${group(d.int, grouping)}${d.frac ? `.${d.frac}` : ``}` }\n}\n\nconst fixedDigits = (decimals: number | undefined): number | undefined =>\n typeof decimals === `number` && Number.isFinite(decimals) ? Math.max(0, Math.min(20, Math.trunc(decimals))) : undefined\n\n/** The minor digits of a currency (ISO 4217; 2 when not listed). */\nexport function currencyDigits(code: string): number {\n return (FALLBACK.currencyDigits as Record<string, number>)[code.toUpperCase()] ?? 2\n}\n\n// ---------------------------------------------------------------------------\n// Dates\n// ---------------------------------------------------------------------------\n\n/** The instant a date value names: `yyyy-mm-dd` = that calendar day (UTC\n * midnight, `dateOnly`), an ISO date-time (no offset = UTC), epoch ms. */\nexport function parseDateValue(value: unknown): { ms: number; dateOnly: boolean } | null {\n if (typeof value === `number`) return Number.isFinite(value) ? { ms: value, dateOnly: false } : null\n if (typeof value !== `string` || value.trim() === ``) return null\n const day = /^(\\d{4})-(\\d{2})-(\\d{2})$/.exec(value)\n if (day) {\n const ms = Date.UTC(Number(day[1]), Number(day[2]) - 1, Number(day[3]))\n return Number.isFinite(ms) ? { ms, dateOnly: true } : null\n }\n if (!/^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}(:\\d{2}(\\.\\d+)?)?(Z|[+-]\\d{2}:\\d{2})?$/.test(value)) return null\n const zoned = /(Z|[+-]\\d{2}:\\d{2})$/.test(value) ? value : `${value}Z`\n const ms = Date.parse(zoned)\n return Number.isFinite(ms) ? { ms, dateOnly: false } : null\n}\n\ninterface DateFields {\n year: number\n month: number // 1..12\n day: number\n weekday: number // 0 = Sunday\n hour: number\n minute: number\n second: number\n}\n\nfunction utcFields(ms: number): DateFields {\n const d = new Date(ms)\n return { year: d.getUTCFullYear(), month: d.getUTCMonth() + 1, day: d.getUTCDate(), weekday: d.getUTCDay(), hour: d.getUTCHours(), minute: d.getUTCMinutes(), second: d.getUTCSeconds() }\n}\n\ninterface DateNames {\n months: readonly string[]\n monthsShort: readonly string[]\n weekdays: readonly string[]\n weekdaysShort: readonly string[]\n dayPeriods: readonly string[]\n}\n\nconst pad = (n: number, width: number) => String(n).padStart(width, `0`)\n\n/** A TR35 pattern over fields: `y yy yyyy M MM MMM MMMM d dd E EEE EEEE h hh\n * H HH m mm s ss a`, `'quoted'` literals (`''` = an apostrophe); any other\n * letter run is copied as written. Digits are ASCII. */\nexport function formatPattern(pattern: string, f: DateFields, names: DateNames): string {\n let out = ``\n let i = 0\n while (i < pattern.length) {\n const ch = pattern[i]\n if (ch === `'`) {\n if (pattern[i + 1] === `'`) {\n out += `'`\n i += 2\n continue\n }\n // A quoted literal; `''` inside it is an apostrophe too.\n i++\n while (i < pattern.length) {\n if (pattern[i] === `'`) {\n if (pattern[i + 1] === `'`) {\n out += `'`\n i += 2\n continue\n }\n i++\n break\n }\n out += pattern[i]\n i++\n }\n continue\n }\n if (!/[A-Za-z]/.test(ch)) {\n out += ch\n i++\n continue\n }\n let n = 1\n while (pattern[i + n] === ch) n++\n const run = pattern.slice(i, i + n)\n i += n\n const h12 = f.hour % 12 === 0 ? 12 : f.hour % 12\n switch (ch) {\n case `y`:\n out += n === 2 ? pad(f.year % 100, 2) : pad(f.year, n)\n break\n case `M`:\n out += n >= 4 ? names.months[f.month - 1] : n === 3 ? names.monthsShort[f.month - 1] : pad(f.month, n)\n break\n case `d`:\n out += pad(f.day, n)\n break\n case `E`:\n out += n >= 4 ? names.weekdays[f.weekday] : names.weekdaysShort[f.weekday]\n break\n case `h`:\n out += pad(h12, n)\n break\n case `H`:\n out += pad(f.hour, n)\n break\n case `m`:\n out += pad(f.minute, n)\n break\n case `s`:\n out += pad(f.second, n)\n break\n case `a`:\n out += names.dayPeriods[f.hour < 12 ? 0 : 1]\n break\n default:\n out += run\n }\n }\n return out\n}\n\n/** The en-US preset patterns (`style`), the time a preset appends and the\n * joiner per style (locale.json `englishFallback`). */\nexport const ENGLISH_DATE_PATTERNS: Readonly<Record<DateStyle, string>> = FALLBACK.datePatterns\nexport const ENGLISH_TIME_PATTERN: string = FALLBACK.timePattern\nexport const ENGLISH_DATE_TIME_JOIN: Readonly<Record<DateStyle, string>> = FALLBACK.dateTimeJoin\n\n/** The surface zone as the English fallback sees it: the UTC offset in\n * minutes (east positive) in force at an instant (epoch ms). A host\n * without an IANA database passes its platform's local offset; the\n * fixtures pin a fixed one (`offsetMinutes`). */\nexport type ZoneOffset = (utcMs: number) => number\n\n/** A fixed offset (minutes east of UTC); `fixedOffset(0)` = UTC. */\nexport const fixedOffset = (minutes: number): ZoneOffset => () => minutes\n\n/** An IANA zone's offset through Intl (TS hosts; the Rust core takes its\n * host's offset instead). */\nexport function intlZoneOffset(timeZone: string): ZoneOffset {\n const dtf = new Intl.DateTimeFormat(`en-US`, { timeZone, year: `numeric`, month: `numeric`, day: `numeric`, hour: `numeric`, minute: `numeric`, second: `numeric`, hourCycle: `h23` })\n return (ms) => {\n const at = Math.floor(ms / 1000) * 1000\n const p = Object.fromEntries(dtf.formatToParts(new Date(at)).map((x) => [x.type, x.value]))\n const local = Date.UTC(Number(p.year), Number(p.month) - 1, Number(p.day), Number(p.hour) % 24, Number(p.minute), Number(p.second))\n return Math.round((local - at) / 60_000)\n }\n}\n\n// ---------------------------------------------------------------------------\n// Relative time\n// ---------------------------------------------------------------------------\n\n/** The unit a delta (value − now, ms) is shown in, and its count (truncated\n * toward zero): under a minute seconds, under an hour minutes, under a day\n * hours, under 7 days days, under 30 days weeks, under 365 days months (of\n * 30 days), else years (of 365 days). */\nexport function relativeTimeUnit(deltaMs: number): { value: number; unit: RelativeUnit } {\n const abs = Math.abs(deltaMs)\n const t = (unit: number) => Math.trunc(deltaMs / unit) || 0\n if (abs < MS.minute) return { value: t(MS.second), unit: `second` }\n if (abs < MS.hour) return { value: t(MS.minute), unit: `minute` }\n if (abs < MS.day) return { value: t(MS.hour), unit: `hour` }\n if (abs < 7 * MS.day) return { value: t(MS.day), unit: `day` }\n if (abs < 30 * MS.day) return { value: t(7 * MS.day), unit: `week` }\n if (abs < 365 * MS.day) return { value: t(30 * MS.day), unit: `month` }\n return { value: t(365 * MS.day), unit: `year` }\n}\n\n// ---------------------------------------------------------------------------\n// The English fallback\n// ---------------------------------------------------------------------------\n\nconst ENGLISH_NAMES: DateNames = FALLBACK\n\n/** The Formatter a renderer uses without a platform ICU (the Rust core's\n * default): Intl en-US, decided by data (catalog/locale.json\n * `englishFallback`). Instants show in the surface zone `zone` (default\n * UTC); a `yyyy-mm-dd` value is a calendar day and never shifts. */\nexport function englishFormatter(zone: ZoneOffset = fixedOffset(0)): Formatter {\n return {\n locale: `en-US`,\n number(value, options = {}) {\n const fixed = fixedDigits(options.decimals)\n const { sign, body } = englishNumber(value, fixed ?? 0, fixed ?? 3, options.grouping !== false)\n return `${sign}${body}`\n },\n currency(value, currency, options = {}) {\n const code = currency.toUpperCase()\n const digits = fixedDigits(options.decimals) ?? currencyDigits(code)\n const { sign, body } = englishNumber(value, digits, digits, options.grouping !== false)\n const prefix = (FALLBACK.currencyPrefix as Record<string, string>)[code] ?? FALLBACK.unknownCurrency.replace(`{code}`, code)\n return `${sign}${prefix}${body}`\n },\n percent(value, options = {}) {\n const digits = fixedDigits(options.decimals) ?? 0\n if (!Number.isFinite(value)) {\n const { sign, body } = englishNumber(value, 0, 0, true)\n return `${sign}${body}%`\n }\n const neg = value < 0 || Object.is(value, -0)\n const d = round(shift(decimalOf(Math.abs(value)), 2), digits, digits)\n return `${neg ? `-` : ``}${group(d.int, true)}${d.frac ? `.${d.frac}` : ``}%`\n },\n date(value, options = {}) {\n const parsed = parseDateValue(value)\n if (!parsed) return ``\n const f = utcFields(parsed.dateOnly ? parsed.ms : parsed.ms + zone(parsed.ms) * 60_000)\n if (options.format) return formatPattern(options.format, f, ENGLISH_NAMES)\n const style = options.style ?? `medium`\n const date = formatPattern(ENGLISH_DATE_PATTERNS[style], f, ENGLISH_NAMES)\n if (!options.time) return date\n const time = formatPattern(ENGLISH_TIME_PATTERN, f, ENGLISH_NAMES)\n return ENGLISH_DATE_TIME_JOIN[style].replace(`{date}`, date).replace(`{time}`, time)\n },\n relativeTime(value, now) {\n const parsed = parseDateValue(value)\n if (!parsed) return ``\n const { value: n, unit } = relativeTimeUnit(parsed.ms - now)\n const auto = (FALLBACK.relative.auto as Record<string, Record<string, string>>)[unit]?.[String(n)]\n if (auto) return auto\n const [one, many] = (FALLBACK.relative.units as Record<string, string[]>)[unit]\n const count = englishNumber(Math.abs(n), 0, 0, true).body\n const unitName = Math.abs(n) === 1 ? one : many\n const template = n < 0 ? FALLBACK.relative.past : FALLBACK.relative.future\n return template.replace(`{value}`, count).replace(`{unit}`, unitName)\n },\n plural(value) {\n return Math.abs(value) === 1 ? `one` : `other`\n },\n }\n}\n\n// ---------------------------------------------------------------------------\n// The Intl formatter (TS renderers)\n// ---------------------------------------------------------------------------\n\n/** A Formatter on the platform's Intl in `locale` (BCP 47) and `timeZone`\n * (IANA; default UTC, as the fixtures pin it). Patterns use the locale's\n * month/weekday/day-period NAMES with ASCII digits. */\nexport function intlFormatter(locale: string, timeZone = `UTC`): Formatter {\n const nf = (o: Intl.NumberFormatOptions) => new Intl.NumberFormat(locale, o)\n let names: DateNames | null = null\n const dateNames = (): DateNames => {\n if (names) return names\n const at = (o: Intl.DateTimeFormatOptions, ms: number) => new Intl.DateTimeFormat(locale, { ...o, timeZone: `UTC` }).format(new Date(ms))\n const months = Array.from({ length: 12 }, (_, i) => Date.UTC(2026, i, 1))\n const days = Array.from({ length: 7 }, (_, i) => Date.UTC(2026, 0, 4 + i)) // 2026-01-04 is a Sunday\n const period = (h: number) => new Intl.DateTimeFormat(locale, { hour: `numeric`, hour12: true, timeZone: `UTC` }).formatToParts(new Date(Date.UTC(2026, 0, 1, h))).find((p) => p.type === `dayPeriod`)?.value ?? (h < 12 ? `AM` : `PM`)\n names = {\n months: months.map((ms) => at({ month: `long` }, ms)),\n monthsShort: months.map((ms) => at({ month: `short` }, ms)),\n weekdays: days.map((ms) => at({ weekday: `long` }, ms)),\n weekdaysShort: days.map((ms) => at({ weekday: `short` }, ms)),\n dayPeriods: [period(9), period(15)],\n }\n return names\n }\n const zonedFields = (ms: number): DateFields => {\n const parts = new Intl.DateTimeFormat(`en-US`, { timeZone, year: `numeric`, month: `numeric`, day: `numeric`, hour: `numeric`, minute: `numeric`, second: `numeric`, weekday: `short`, hourCycle: `h23` }).formatToParts(new Date(ms))\n const get = (t: string) => parts.find((p) => p.type === t)?.value ?? `0`\n return { year: Number(get(`year`)), month: Number(get(`month`)), day: Number(get(`day`)), weekday: [`Sun`, `Mon`, `Tue`, `Wed`, `Thu`, `Fri`, `Sat`].indexOf(get(`weekday`)), hour: Number(get(`hour`)) % 24, minute: Number(get(`minute`)), second: Number(get(`second`)) }\n }\n return {\n locale,\n number(value, options = {}) {\n const fixed = fixedDigits(options.decimals)\n return nf({ minimumFractionDigits: fixed ?? 0, maximumFractionDigits: fixed ?? 3, useGrouping: options.grouping !== false }).format(value)\n },\n currency(value, currency, options = {}) {\n const fixed = fixedDigits(options.decimals)\n return nf({ style: `currency`, currency, ...(fixed !== undefined ? { minimumFractionDigits: fixed, maximumFractionDigits: fixed } : {}), useGrouping: options.grouping !== false }).format(value)\n },\n percent(value, options = {}) {\n const fixed = fixedDigits(options.decimals) ?? 0\n return nf({ style: `percent`, minimumFractionDigits: fixed, maximumFractionDigits: fixed }).format(value)\n },\n date(value, options = {}) {\n const parsed = parseDateValue(value)\n if (!parsed) return ``\n const zone = parsed.dateOnly ? `UTC` : timeZone\n if (options.format) return formatPattern(options.format, parsed.dateOnly ? utcFields(parsed.ms) : zonedFields(parsed.ms), dateNames())\n return new Intl.DateTimeFormat(locale, { dateStyle: options.style ?? `medium`, ...(options.time ? { timeStyle: `short` } : {}), timeZone: zone }).format(new Date(parsed.ms))\n },\n relativeTime(value, now) {\n const parsed = parseDateValue(value)\n if (!parsed) return ``\n const { value: n, unit } = relativeTimeUnit(parsed.ms - now)\n return new Intl.RelativeTimeFormat(locale, { numeric: `auto` }).format(n, unit)\n },\n plural(value) {\n return new Intl.PluralRules(locale).select(value) as PluralCategory\n },\n }\n}\n\n// ---------------------------------------------------------------------------\n// The format functions of the bind table\n// ---------------------------------------------------------------------------\n\n/** The bind-time format functions (A2UI basic `formatNumber`,\n * `formatCurrency`, `formatDate`, `pluralize` + the core `formatPercent`,\n * `formatRelativeTime`), all through ONE Formatter. */\nexport const FORMAT_FUNCTION_NAMES = [`formatNumber`, `formatCurrency`, `formatPercent`, `formatDate`, `formatRelativeTime`, `pluralize`] as const\n\n/** A numeric string: optional ASCII whitespace around an optional sign,\n * decimal digits with an optional fraction and exponent (`' 12 '`, `1e3`,\n * `-.5`). Hex, `Infinity`, separators and anything else are not numbers. */\nconst NUMERIC = /^[ \\t\\n\\r]*[+-]?(\\d+\\.?\\d*|\\.\\d+)([eE][+-]?\\d+)?[ \\t\\n\\r]*$/\nconst toNum = (v: unknown): number => (typeof v === `number` ? v : typeof v === `string` && NUMERIC.test(v) ? Number(v) : NaN)\nconst optNum = (v: unknown): number | undefined => (v === undefined || v === null ? undefined : toNum(v))\n\n/** The format functions over a Formatter; `now` = the clock\n * `formatRelativeTime` reads when its call has no `now` (a renderer\n * re-binds such a node at least once a minute). A value that is not a\n * number, a numeric string (`NUMERIC`) or a date formats to ``. */\nexport function formatFunctions(formatter: Formatter, now: () => number = () => Date.now()): Record<(typeof FORMAT_FUNCTION_NAMES)[number], (args: Record<string, unknown>) => unknown> {\n const numberOr = (value: unknown, f: (n: number) => string) => {\n const n = toNum(value)\n return Number.isFinite(n) ? f(n) : ``\n }\n return {\n formatNumber: ({ value, decimals, grouping }) => numberOr(value, (n) => formatter.number(n, { decimals: optNum(decimals), grouping: grouping === undefined ? undefined : grouping !== false })),\n formatCurrency: ({ value, currency, decimals, grouping }) => numberOr(value, (n) => (typeof currency === `string` && /^[A-Za-z]{3}$/.test(currency) ? formatter.currency(n, currency, { decimals: optNum(decimals), grouping: grouping === undefined ? undefined : grouping !== false }) : ``)),\n formatPercent: ({ value, decimals }) => numberOr(value, (n) => formatter.percent(n, { decimals: optNum(decimals) })),\n formatDate: ({ value, format, style, time }) =>\n formatter.date(value, { ...(typeof format === `string` && format ? { format } : {}), ...(style === `short` || style === `medium` || style === `long` || style === `full` ? { style } : {}), ...(time === true ? { time: true } : {}) }),\n formatRelativeTime: ({ value, now: at }) => formatter.relativeTime(value, typeof at === `number` ? at : (parseDateValue(at)?.ms ?? now())),\n pluralize: (args) => {\n const n = toNum(args.value)\n if (!Number.isFinite(n)) return args.other\n if (n === 0 && args.zero !== undefined) return args.zero\n const category = formatter.plural(n)\n return args[category] ?? args.other\n },\n }\n}\n\n/** The fallback's format functions (the reference bind table's). */\nexport const ENGLISH_FORMAT_FUNCTIONS = formatFunctions(englishFormatter())\n",
|
|
8
8
|
"// VAPP-85: the macro template's value language (catalog/macros.json\n// `$comment`): `{props.x}` paths with `|fallback`, `len(path)`, `range(n)`,\n// `!path`, string interpolation, and the $map / $cond / $eq / $lt / $add /\n// $sub / $clamp / $percent / $coalesce / $text / $not / $fill value objects. Pure, so the\n// Rust core can mirror it line by line.\n//\n// Round 1 (docs/round-1-contract.md §1): an input may be an A2UI DYNAMIC\n// value — a data binding `{path}` or a function call `{call, args}` — which\n// has no value at expansion time. The evaluator then EMITS a function call\n// that the renderer evaluates at bind time, instead of computing. The calls it\n// emits are the CORE functions (percent, add, sub, eq, lt, clamp, cond,\n// fallback, concat, coalesce, text, map, len, fill; `CORE_FUNCTIONS` below)\n// PLUS the basic catalog's logic functions `not`, `and` and `or` (`{!x}`,\n// `$not`, bound `$if`/`$any`), evaluated with the same `truthy`: a renderer\n// MUST implement the whole bind table (`src/dynamic.ts BIND_FUNCTIONS`,\n// generated as `bindFunctionNames`). A whole-string `{props.x}` /\n// `{props.x|fallback}` that is a MEMBER of a props/style/context object (or\n// an array item) and whose value is dynamic passes the dynamic value through\n// UNCHANGED (the fallback is dropped), so a two-way `{path}` binding survives\n// expansion; as an OPERAND of a `$`-object it keeps the fallback\n// (`fallback{value, default}`), so `$eq: [\"{props.page|1}\", 1]` still sees 1\n// when the bound page is missing. `$fill` ALWAYS emits `fill` (its template is\n// a `$string.<id>` the surface's string table resolves at bind time).\n\nimport { formatString } from \"./strings\"\nimport { ENGLISH_FORMAT_FUNCTIONS } from \"./format\"\n\nexport interface ExprContext {\n id: string\n props: Record<string, unknown>\n vars: Record<string, unknown>\n}\n\n/** An A2UI data binding: an object with exactly one key, `path`. */\nexport interface DataBinding {\n path: string\n}\n/** An A2UI function call. */\nexport interface FunctionCall {\n call: string\n args?: Record<string, unknown>\n returnType?: string\n}\nexport type Dynamic = DataBinding | FunctionCall\n\nconst WHOLE = /^\\{([^{}]+)\\}$/\nconst EMBEDDED = /\\{([^{}]+)\\}/g\nconst FUNCTION = /^(len|range)\\((.+)\\)$/\n\nexport function isBinding(value: unknown): value is DataBinding {\n return typeof value === `object` && value !== null && !Array.isArray(value) && typeof (value as DataBinding).path === `string` && Object.keys(value as object).length === 1\n}\nexport function isCall(value: unknown): value is FunctionCall {\n return typeof value === `object` && value !== null && !Array.isArray(value) && typeof (value as FunctionCall).call === `string`\n}\n/** A value the expander cannot evaluate: the renderer will. */\nexport function isDynamic(value: unknown): value is Dynamic {\n return isBinding(value) || isCall(value)\n}\n\n/** `undefined`, `null`, `false` and `\"\"` are false; 0 is TRUE (a count of\n * zero still shows). */\nexport function truthy(value: unknown): boolean {\n return value !== undefined && value !== null && value !== false && value !== ``\n}\n\nfunction call(name: string, args: Record<string, unknown>): FunctionCall {\n const out: Record<string, unknown> = {}\n for (const [k, v] of Object.entries(args)) if (v !== undefined) out[k] = v\n return { call: name, args: out }\n}\n\nfunction parseLiteral(text: string): unknown {\n if (text === `true`) return true\n if (text === `false`) return false\n if (text === `null`) return null\n if (/^-?\\d+(\\.\\d+)?$/.test(text)) return Number(text)\n return text\n}\n\nfunction lookup(path: string, ctx: ExprContext): unknown {\n if (path === `id`) return ctx.id\n const [head, ...rest] = path.split(`.`)\n let cur: unknown\n if (head === `props`) cur = ctx.props\n else if (head in ctx.vars) cur = ctx.vars[head]\n else return undefined\n for (const key of rest) {\n if (cur === undefined || cur === null) return undefined\n cur = (cur as Record<string, unknown>)[key]\n }\n return cur\n}\n\nfunction toNumber(value: unknown): number {\n return typeof value === `number` ? value : Number(value ?? 0) || 0\n}\n\n/** A string that spells a finite number (`\"5\"`, `\" 2.5 \"`), else undefined. */\nfunction numericString(value: string): number | undefined {\n const text = value.trim()\n if (text === ``) return undefined\n const n = Number(text)\n return Number.isFinite(n) ? n : undefined\n}\n\n/** `eq` (and `$eq`): strict equality, except that a NUMBER and a string\n * spelling that number are equal (`5` vs `\"5\"`: form and URL state arrive as\n * strings). Nothing else coerces (`0` vs `\"\"`, `1` vs `true` differ). */\nexport function valuesEqual(a: unknown, b: unknown): boolean {\n if (a === b) return true\n if (typeof a === `number` && typeof b === `string`) return numericString(b) === a\n if (typeof b === `number` && typeof a === `string`) return numericString(a) === b\n return false\n}\n\n/** `clamp`: the value as a number held inside [min, max]; a missing bound\n * (undefined or null) does not clamp; `min` wins when max < min. */\nexport function clampNumber(value: unknown, min: unknown, max: unknown): number {\n let n = toNumber(value)\n if (max !== undefined && max !== null) n = Math.min(n, toNumber(max))\n if (min !== undefined && min !== null) n = Math.max(n, toNumber(min))\n return n\n}\n\n/** `fill`: the template (already resolved through the string table) with its\n * `{name}` placeholders filled from params (strings.ts formatString). */\nexport function fillTemplate(template: unknown, params: unknown): string {\n const text = template === undefined || template === null ? `` : String(template)\n return formatString(text, typeof params === `object` && params !== null ? (params as Record<string, unknown>) : {})\n}\n\n/** The most indexes `range(n)` yields (R8 F51): a Rating's `max` of 1e8 or\n * 1e300 would otherwise allocate that many items before the component\n * budget could refuse them. Equals `maxTemplateItems`; a larger `n` is\n * silently clamped (the reducer's `maxComponents` reports the overflow).\n * Mirrors `MAX_RANGE_ITEMS` in the Rust core's `expr.rs`. */\nexport const MAX_RANGE_ITEMS = 10_000\n\n/** One expression: `len(path)`, `range(n)`, `path|fallback`, `!path`, `path`.\n * The function forms wrap the whole expression and are tried first, so a\n * fallback inside their parentheses stays theirs. */\nexport function evalExpr(expr: string, ctx: ExprContext): unknown {\n const text = expr.trim()\n const fn = FUNCTION.exec(text)\n if (fn) {\n const inner = evalExpr(fn[2], ctx)\n if (fn[1] === `len`) {\n if (isDynamic(inner)) return call(`len`, { value: inner })\n return Array.isArray(inner) ? inner.length : typeof inner === `string` ? inner.length : 0\n }\n // range: the indexes 0..n-1 (at most MAX_RANGE_ITEMS; NaN = 0); a bound\n // count cannot be expanded (→ no items).\n if (isDynamic(inner)) return undefined\n const n = Math.min(MAX_RANGE_ITEMS, Math.max(0, Math.floor(toNumber(inner))) || 0)\n return Array.from({ length: n }, (_, i) => i)\n }\n const bar = text.indexOf(`|`)\n if (bar >= 0) {\n const value = evalExpr(text.slice(0, bar), ctx)\n const fallback = parseLiteral(text.slice(bar + 1))\n if (value === undefined || value === null) return fallback\n if (isDynamic(value)) return call(`fallback`, { value, default: fallback })\n return value\n }\n if (text.startsWith(`!`)) {\n const value = evalExpr(text.slice(1), ctx)\n if (isDynamic(value)) return call(`not`, { value })\n return !truthy(value)\n }\n return lookup(text, ctx)\n}\n\n/** The member rule: a dynamic value passes through untouched; the\n * `fallback` a `|fallback` wrapped it in is unwrapped again. */\nfunction passThrough(value: unknown): unknown {\n if (isCall(value) && value.call === `fallback` && isDynamic(value.args?.value)) return value.args?.value\n return value\n}\n\n/** An operand of a `$`-object (or its result): a whole string evaluates as\n * its expression, keeping a `|fallback` as `fallback{…}` when dynamic. */\nfunction evalOperand(value: unknown, ctx: ExprContext): unknown {\n if (typeof value === `string`) {\n const whole = WHOLE.exec(value)\n if (whole) return evalExpr(whole[1], ctx)\n }\n return evalValue(value, ctx)\n}\n\n/** A condition: a string expression or a value object ($eq …). `true` or\n * `false` when it can be decided now; the dynamic value when it cannot. */\nexport function evalConditionValue(cond: unknown, ctx: ExprContext): boolean | Dynamic {\n const value = typeof cond === `string` ? evalExpr(cond, ctx) : evalOperand(cond, ctx)\n if (isDynamic(value)) return value\n return truthy(value)\n}\n\n/** A condition decided NOW: a dynamic condition counts as true (the part\n * exists; `visible` carries the bound test, see macros.ts). */\nexport function evalCondition(cond: unknown, ctx: ExprContext): boolean {\n const value = evalConditionValue(cond, ctx)\n return value === true || isDynamic(value)\n}\n\nfunction interpolate(value: string, ctx: ExprContext): unknown {\n const parts: unknown[] = []\n let dynamic = false\n let last = 0\n for (const match of value.matchAll(EMBEDDED)) {\n const at = match.index ?? 0\n if (at > last) parts.push(value.slice(last, at))\n const v = evalExpr(match[1], ctx)\n if (isDynamic(v)) dynamic = true\n parts.push(v)\n last = at + match[0].length\n }\n if (last < value.length) parts.push(value.slice(last))\n if (dynamic) return call(`concat`, { values: parts.filter((p) => p !== undefined && p !== null && p !== ``) })\n return parts.map((p) => (p === undefined || p === null ? `` : String(p))).join(``)\n}\n\n/** Any template value: strings interpolate, arrays and objects recurse, the\n * `$`-objects compute (or emit a call when an input is dynamic). `undefined`\n * results are dropped by the caller. */\nexport function evalValue(value: unknown, ctx: ExprContext): unknown {\n if (typeof value === `string`) {\n const whole = WHOLE.exec(value)\n if (whole) return passThrough(evalExpr(whole[1], ctx))\n return interpolate(value, ctx)\n }\n if (Array.isArray(value)) {\n return value.map((item) => evalValue(item, ctx)).filter((item) => item !== undefined)\n }\n if (typeof value !== `object` || value === null) return value\n const obj = value as Record<string, unknown>\n if (`$map` in obj) {\n const spec = obj.$map as { from: string; cases: Record<string, unknown>; default?: unknown }\n const from = evalExpr(spec.from, ctx)\n if (isDynamic(from)) {\n const cases: Record<string, unknown> = {}\n for (const [k, v] of Object.entries(spec.cases)) {\n const evaluated = evalOperand(v, ctx)\n if (evaluated !== undefined) cases[k] = evaluated\n }\n return call(`map`, { value: from, cases, default: evalOperand(spec.default, ctx) })\n }\n const key = from === undefined || from === null ? `` : String(from)\n const hit = Object.prototype.hasOwnProperty.call(spec.cases, key) ? spec.cases[key] : spec.default\n return evalOperand(hit, ctx)\n }\n if (`$cond` in obj) {\n const [cond, then, otherwise] = obj.$cond as [unknown, unknown, unknown]\n const decided = evalConditionValue(cond, ctx)\n if (isDynamic(decided)) return call(`cond`, { if: decided, then: evalOperand(then, ctx), else: evalOperand(otherwise, ctx) })\n return evalOperand(decided ? then : otherwise, ctx)\n }\n if (`$eq` in obj) {\n const [a, b] = (obj.$eq as [unknown, unknown]).map((x) => evalOperand(x, ctx))\n if (isDynamic(a) || isDynamic(b)) return call(`eq`, { a, b })\n return valuesEqual(a, b)\n }\n if (`$lt` in obj) {\n const [a, b] = (obj.$lt as [unknown, unknown]).map((x) => evalOperand(x, ctx))\n if (isDynamic(a) || isDynamic(b)) return call(`lt`, { a, b })\n return toNumber(a) < toNumber(b)\n }\n if (`$add` in obj) {\n const [a, b] = (obj.$add as [unknown, unknown]).map((x) => evalOperand(x, ctx))\n if (isDynamic(a) || isDynamic(b)) return call(`add`, { a, b })\n return toNumber(a) + toNumber(b)\n }\n if (`$sub` in obj) {\n const [a, b] = (obj.$sub as [unknown, unknown]).map((x) => evalOperand(x, ctx))\n if (isDynamic(a) || isDynamic(b)) return call(`sub`, { a, b })\n return toNumber(a) - toNumber(b)\n }\n if (`$clamp` in obj) {\n const [v, min, max] = (obj.$clamp as [unknown, unknown, unknown]).map((x) => evalOperand(x, ctx))\n if (isDynamic(v) || isDynamic(min) || isDynamic(max)) return call(`clamp`, { value: v, min, max })\n return clampNumber(v, min, max)\n }\n if (`$fill` in obj) {\n // Always emitted: the template is (usually) a `$string.<id>` only the\n // surface's string table can resolve, at bind time.\n const [template, params] = obj.$fill as [unknown, Record<string, unknown> | undefined]\n const filled: Record<string, unknown> = {}\n for (const [k, v] of Object.entries(params ?? {})) {\n const evaluated = evalOperand(v, ctx)\n if (evaluated !== undefined) filled[k] = evaluated\n }\n return call(`fill`, { template: evalOperand(template, ctx), params: filled })\n }\n if (`$percent` in obj) {\n const [v, max] = (obj.$percent as [unknown, unknown]).map((x) => evalOperand(x, ctx))\n if (isDynamic(v) || isDynamic(max)) return call(`percent`, { value: v, max })\n return percent(v, max)\n }\n if (`$text` in obj) {\n const spec = obj.$text\n const v = typeof spec === `string` ? evalExpr(spec, ctx) : evalOperand(spec, ctx)\n if (isDynamic(v)) return call(`text`, { value: v })\n return v === undefined || v === null ? undefined : String(v)\n }\n if (`$coalesce` in obj) {\n const out: unknown[] = []\n for (const candidate of obj.$coalesce as unknown[]) {\n const v = evalOperand(candidate, ctx)\n if (v === undefined) continue\n if (isDynamic(v)) {\n out.push(v)\n continue\n }\n if (!truthy(v)) continue\n if (out.length === 0) return v\n out.push(v)\n break\n }\n if (out.length === 0) return undefined\n if (out.length === 1) return out[0]\n return call(`coalesce`, { values: out })\n }\n if (`$not` in obj) {\n const decided = evalConditionValue(obj.$not, ctx)\n if (isDynamic(decided)) return call(`not`, { value: decided })\n return !decided\n }\n const out: Record<string, unknown> = {}\n for (const [k, v] of Object.entries(obj)) {\n const evaluated = evalValue(v, ctx)\n if (evaluated === undefined) continue\n const key = k.includes(`{`) ? evalValue(k, ctx) : k\n out[typeof key === `string` ? key : k] = evaluated\n }\n return out\n}\n\n/** `$percent`'s arithmetic, shared with the core `percent` function: the\n * share of `max` as \"N%\", clamped to 0..100, two decimals. */\nexport function percent(value: unknown, max: unknown): string {\n const m = toNumber(max)\n const pct = m > 0 ? (toNumber(value) / m) * 100 : 0\n const clamped = Math.min(100, Math.max(0, pct))\n return `${Math.round(clamped * 100) / 100}%`\n}\n\n/** Round 4 (VAPP-103) `filter`: the items of an array that match, in order,\n * so a List or Table binds to a filtered view without an agent round trip.\n * `where` = field → value, every entry must hold (`eq` equality); an entry\n * whose value is missing, null or \"\" does NOT constrain (a bound \"all\"\n * choice). `query` = a case-insensitive substring of ANY of `fields` (the\n * item's own string and number values when `fields` is absent; a string or\n * number item matches itself); a missing, null or blank query does not\n * constrain. Not an array → []. */\nexport function filterItems(items: unknown, query: unknown, fields: unknown, where: unknown): unknown[] {\n if (!Array.isArray(items)) return []\n const needle = typeof query === `string` ? query.trim().toLowerCase() : typeof query === `number` ? String(query) : ``\n const keys = Array.isArray(fields) ? fields.filter((f): f is string => typeof f === `string`) : null\n const conditions = typeof where === `object` && where !== null && !Array.isArray(where) ? Object.entries(where as Record<string, unknown>).filter(([, v]) => v !== undefined && v !== null && v !== ``) : []\n const searchable = (v: unknown) => (typeof v === `string` ? v : typeof v === `number` ? String(v) : null)\n return items.filter((item) => {\n const record = typeof item === `object` && item !== null && !Array.isArray(item) ? (item as Record<string, unknown>) : null\n for (const [field, want] of conditions) if (!valuesEqual(record?.[field], want)) return false\n if (needle === ``) return true\n const values = record ? (keys ?? Object.keys(record)).map((k) => record[k]) : [item]\n return values.some((v) => searchable(v)?.toLowerCase().includes(needle) ?? false)\n })\n}\n\n/** The core value functions (core.catalog.json `functions.core`; `set` is\n * an action, src/dynamic.ts runAction) as the renderer\n * evaluates them once the arguments are resolved: the reference every\n * client function table mirrors. `undefined` = no value. */\nexport const CORE_FUNCTIONS: Record<string, (args: Record<string, unknown>) => unknown> = {\n percent: ({ value, max }) => percent(value, max),\n add: ({ a, b }) => toNumber(a) + toNumber(b),\n sub: ({ a, b }) => toNumber(a) - toNumber(b),\n eq: ({ a, b }) => valuesEqual(a, b),\n lt: ({ a, b }) => toNumber(a) < toNumber(b),\n clamp: ({ value, min, max }) => clampNumber(value, min, max),\n cond: ({ if: test, then, else: otherwise }) => (truthy(test) ? then : otherwise),\n fallback: ({ value, default: fallback }) => (value === undefined || value === null ? fallback : value),\n concat: ({ values }) => (Array.isArray(values) ? values.map((v) => (v === undefined || v === null ? `` : String(v))).join(``) : ``),\n coalesce: ({ values }) => (Array.isArray(values) ? values.find(truthy) : undefined),\n text: ({ value }) => (value === undefined || value === null ? undefined : String(value)),\n map: ({ value, cases, default: fallback }) => {\n const key = value === undefined || value === null ? `` : String(value)\n const table = (cases ?? {}) as Record<string, unknown>\n return Object.prototype.hasOwnProperty.call(table, key) ? table[key] : fallback\n },\n len: ({ value }) => (Array.isArray(value) ? value.length : typeof value === `string` ? value.length : 0),\n fill: ({ template, params }) => fillTemplate(template, params),\n filter: ({ items, query, fields, where }) => filterItems(items, query, fields, where),\n // Round 2 (docs/round-2-contract.md §3): the two core format functions, here\n // through the English fallback; a renderer runs them (and the basic\n // format* ones) through the surface's Formatter (src/dynamic.ts).\n formatPercent: ENGLISH_FORMAT_FUNCTIONS.formatPercent,\n formatRelativeTime: ENGLISH_FORMAT_FUNCTIONS.formatRelativeTime,\n}\nexport const CORE_FUNCTION_NAMES: readonly string[] = Object.keys(CORE_FUNCTIONS)\n",
|
|
@@ -20,12 +20,13 @@
|
|
|
20
20
|
"// VAPP-161: the format's NEUTRAL records (docs/package-format.md \"Records\").\n// A surface reads a kind through the binding `records:<kind>?query` and\n// writes through the host functions `records.upsert` / `records.delete`;\n// the HOST provides the store (Exponential: its synced store, spezl: a p2p\n// store over eNet). `RecordStore` is what a host implements;\n// `MemoryRecordStore` + `recordsHost` are the reference, `recordsValue` the\n// derivation fixtures/host-package.json `recordsValue` locks.\n\nimport type { AppPackage } from \"./package\"\nimport { validateRecord } from \"./records\"\nimport type { ParsedSource, SourceResolver } from \"./sources\"\n\n/** The binding scheme: `records:<kind>[?query]`. */\nexport const RECORDS_SCHEME = `records`\n/** The write functions (no consent card: the app's own rows). */\nexport const RECORDS_FUNCTIONS: readonly string[] = [`records.upsert`, `records.delete`]\n/** The neutral query's defaults (catalog/host.json `package.records.query`). */\nexport const RECORDS_QUERY = { sortDefault: `createdAt`, orderDefault: `desc`, limitDefault: 100, limitMax: 500 } as const\n/** Query keys a host may give a meaning (Exponential does); never a field filter. */\nexport const RECORDS_RESERVED_PARAMS: readonly string[] = [`app`, `by`, `kind`, `limit`, `mine`, `month`, `order`, `sort`, `sum`, `user`]\n\nexport interface RecordRow {\n id: string\n kind: string\n data: Record<string, unknown>\n createdBy: string | null\n createdAt: string\n updatedAt: string\n}\n\nexport type RecordsFilterOp = `eq` | `gt` | `gte` | `lt` | `lte`\n\nexport interface RecordsQuery {\n kind: string\n mine: boolean\n sort: string\n order: `asc` | `desc`\n limit: number\n /** By field, then operator. */\n filters: { field: string; op: RecordsFilterOp; value: string }[]\n}\n\nexport interface RecordsValue {\n rows: Record<string, unknown>[]\n count: number\n}\n\nconst OPS: readonly RecordsFilterOp[] = [`gt`, `gte`, `lt`, `lte`]\n\n/** `records:<kind>?…` (as `parseSource` gives it) → the query; null = not\n * a records source. */\nexport function parseRecordsSource(source: Pick<ParsedSource, `scheme` | `name` | `params`>): RecordsQuery | null {\n if (source.scheme !== RECORDS_SCHEME) return null\n const p = source.params\n const limitRaw = Number(p.limit)\n const filters: RecordsQuery[`filters`] = []\n for (const key of Object.keys(p).sort()) {\n if (RECORDS_RESERVED_PARAMS.includes(key)) continue\n const dot = key.lastIndexOf(`.`)\n const suffix = dot >= 0 ? key.slice(dot + 1) : ``\n if (dot > 0 && (OPS as readonly string[]).includes(suffix)) filters.push({ field: key.slice(0, dot), op: suffix as RecordsFilterOp, value: p[key]! })\n else filters.push({ field: key, op: `eq`, value: p[key]! })\n }\n filters.sort((a, b) => (a.field < b.field ? -1 : a.field > b.field ? 1 : a.op < b.op ? -1 : a.op > b.op ? 1 : 0))\n return {\n kind: source.name,\n mine: p.mine === `1` || p.mine === `true`,\n sort: p.sort?.trim() || RECORDS_QUERY.sortDefault,\n order: p.order === `asc` ? `asc` : p.order === `desc` ? `desc` : RECORDS_QUERY.orderDefault,\n limit: Number.isInteger(limitRaw) && limitRaw > 0 ? Math.min(limitRaw, RECORDS_QUERY.limitMax) : RECORDS_QUERY.limitDefault,\n filters,\n }\n}\n\nconst num = (v: unknown): number | null => {\n if (typeof v === `number`) return Number.isFinite(v) ? v : null\n if (typeof v === `string` && v.trim() !== ``) {\n const n = Number(v)\n return Number.isFinite(n) ? n : null\n }\n return null\n}\nconst text = (v: unknown): string => (v === null || v === undefined ? `` : typeof v === `string` ? v : typeof v === `object` ? JSON.stringify(v) : String(v))\n\n/** Numbers when both parse, else text (code points, no locale). */\nfunction compare(a: unknown, b: unknown): number {\n const na = num(a)\n const nb = num(b)\n if (na !== null && nb !== null) return na < nb ? -1 : na > nb ? 1 : 0\n const ta = text(a)\n const tb = text(b)\n return ta < tb ? -1 : ta > tb ? 1 : 0\n}\n\n/** The value a `records:` binding emits over `rows` (any kind): the kind's\n * matching rows sorted (ties by id) then cut at the limit, `count` before\n * the limit. `names` = user id → the display name (`author`). */\nexport function recordsValue(rows: readonly RecordRow[], query: RecordsQuery, ctx: { me: string | null; names?: Record<string, string> }): RecordsValue {\n const field = (row: RecordRow, name: string): unknown =>\n name === `createdAt` ? row.createdAt : name === `updatedAt` ? row.updatedAt : name === `id` ? row.id : name === `createdBy` ? row.createdBy : row.data[name]\n const matched = rows\n .filter((row) => {\n if (row.kind !== query.kind) return false\n if (query.mine && (ctx.me === null || row.createdBy !== ctx.me)) return false\n return query.filters.every((f) => {\n const v = field(row, f.field)\n if (f.op === `eq`) return text(v) === f.value\n const c = compare(v, f.value)\n return f.op === `gt` ? c > 0 : f.op === `gte` ? c >= 0 : f.op === `lt` ? c < 0 : c <= 0\n })\n })\n .sort((a, b) => {\n const c = compare(field(a, query.sort), field(b, query.sort))\n if (c !== 0) return query.order === `asc` ? c : -c\n return a.id < b.id ? -1 : a.id > b.id ? 1 : 0\n })\n return {\n rows: matched.slice(0, query.limit).map((row) => ({\n ...row.data,\n id: row.id,\n createdAt: row.createdAt,\n updatedAt: row.updatedAt,\n createdBy: row.createdBy,\n author: (row.createdBy && ctx.names?.[row.createdBy]) || ``,\n })),\n count: matched.length,\n }\n}\n\n/** What a host provides: one package's records, any transport. */\nexport interface RecordStore {\n /** Every row of the package (any kind) now, then on every change; returns the cancel. */\n subscribe(emit: (rows: readonly RecordRow[]) => void): () => void\n /** Create (no id) or shallow-patch `data` (id); resolves the row's id. The\n * caller has validated the result against the kind's schema. */\n upsert(input: { kind: string; data: Record<string, unknown>; id?: string }): Promise<{ id: string }>\n delete(id: string): Promise<void>\n /** One row by id (the patch base). */\n get(id: string): RecordRow | undefined\n}\n\n/** The reference store: in memory, `now` + `newId` injectable. */\nexport class MemoryRecordStore implements RecordStore {\n private rows: RecordRow[] = []\n private listeners = new Set<(rows: readonly RecordRow[]) => void>()\n private seq = 0\n\n constructor(\n private readonly options: { me?: string | null; now?: () => string; newId?: () => string; rows?: readonly RecordRow[] } = {}\n ) {\n this.rows = [...(options.rows ?? [])]\n }\n\n subscribe(emit: (rows: readonly RecordRow[]) => void): () => void {\n this.listeners.add(emit)\n emit(this.rows)\n return () => void this.listeners.delete(emit)\n }\n\n get(id: string): RecordRow | undefined {\n return this.rows.find((r) => r.id === id)\n }\n\n async upsert(input: { kind: string; data: Record<string, unknown>; id?: string }): Promise<{ id: string }> {\n const now = this.options.now?.() ?? new Date().toISOString()\n if (input.id !== undefined) {\n const row = this.get(input.id)\n if (!row) throw new Error(`record ${input.id} not found`)\n this.rows = this.rows.map((r) => (r.id === input.id ? { ...r, data: { ...r.data, ...input.data }, updatedAt: now } : r))\n this.changed()\n return { id: input.id }\n }\n const id = this.options.newId?.() ?? `r${++this.seq}`\n this.rows = [...this.rows, { id, kind: input.kind, data: input.data, createdBy: this.options.me ?? null, createdAt: now, updatedAt: now }]\n this.changed()\n return { id }\n }\n\n async delete(id: string): Promise<void> {\n if (!this.get(id)) throw new Error(`record ${id} not found`)\n this.rows = this.rows.filter((r) => r.id !== id)\n this.changed()\n }\n\n private changed(): void {\n for (const emit of this.listeners) emit(this.rows)\n }\n}\n\nconst isObject = (v: unknown): v is Record<string, unknown> => !!v && typeof v === `object` && !Array.isArray(v)\n\n/** A package's records on a host: the `records` source resolver and the\n * two write functions (pass them to `ExponentialHost` as `sources` /\n * `functions`). A write is validated against the kind's schema (a patch:\n * the merged data) before the store sees it; a refusal throws. */\nexport function recordsHost(\n pkg: Pick<AppPackage, `records`>,\n store: RecordStore,\n ctx: { me: string | null; names?: Record<string, string> } = { me: null }\n): { sources: Record<string, SourceResolver>; functions: Record<string, (args: Record<string, unknown>) => Promise<unknown>> } {\n const schemaOf = (kind: string) => {\n const def = pkg.records?.[kind]\n if (!def) throw new Error(`records: no kind ${kind}`)\n return def.schema\n }\n return {\n sources: {\n [RECORDS_SCHEME]: (source, emit) => {\n const query = parseRecordsSource(source)\n if (!query || !pkg.records?.[query.kind]) return void emit(null)\n return store.subscribe((rows) => emit(recordsValue(rows, query, ctx)))\n },\n },\n functions: {\n \"records.upsert\": async (args) => {\n const id = typeof args.id === `string` && args.id ? args.id : undefined\n const data = isObject(args.data) ? args.data : {}\n const base = id ? store.get(id) : undefined\n if (id && !base) throw new Error(`record ${id} not found`)\n const kind = base?.kind ?? String(args.kind ?? ``)\n const issues = validateRecord(schemaOf(kind), base ? { ...base.data, ...data } : data)\n if (issues.length) throw new Error(`records: ${issues.map((i) => `${i.path || `/`} ${i.message}`).join(`; `)}`)\n return store.upsert({ kind, data, ...(id ? { id } : {}) })\n },\n \"records.delete\": async (args) => {\n await store.delete(String(args.id ?? ``))\n return null\n },\n },\n }\n}\n",
|
|
21
21
|
"// VAPP-161: the PACKAGE FILE's author + signature (docs/package-format.md\n// \"The package file\"): Ed25519 (RFC 8032) over a context line + the RFC 8785\n// canonical JSON of the whole file without `signature`. WebCrypto, so the\n// same code runs in Bun, Node and every current browser; the Rust core\n// mirrors `canonicalJson` + `packageFileSignedBytes` (`host/signature.rs`)\n// and leaves the curve to the host's own Ed25519. fixtures/host-package.json\n// `canonical` + `signatures` replay it (signed with the RFC 8032 §7.1 TEST 1\n// keypair, never a real key).\n\nimport type { PackageIssue } from \"./package\"\n\n/** The context the signed bytes start with. */\nexport const PACKAGE_FILE_SIGNATURE_CONTEXT = `exponential-ui/package-file/v1\\n`\nexport const PACKAGE_FILE_SIGNATURE_ALG = `ed25519`\nexport const AUTHOR_KEY_PREFIX = `ed25519:`\nexport const AUTHOR_NAME_MAX = 80\n\nexport interface PackageFileAuthor {\n name: string\n /** `ed25519:` + the 32-byte public key, unpadded base64url. */\n key: string\n}\n\nexport interface PackageFileSignature {\n alg: `ed25519`\n /** The 64-byte signature, unpadded base64url. */\n value: string\n}\n\nexport type PackageFileVerification =\n | { status: `unsigned` }\n | { status: `valid`; author: PackageFileAuthor }\n | { status: `invalid`; issues: PackageIssue[] }\n\nconst isObject = (v: unknown): v is Record<string, unknown> => !!v && typeof v === `object` && !Array.isArray(v)\n\n/** RFC 8785 (JCS): no whitespace, keys sorted by UTF-16 code units, strings\n * and numbers as ECMAScript's JSON.stringify writes them (`1`, `1e+21`, `-0`\n * = `0`); an undefined member is skipped. Throws on a non-finite number or a\n * value JSON has no form for. */\nexport function canonicalJson(value: unknown): string {\n if (value === null || typeof value === `boolean` || typeof value === `string`) return JSON.stringify(value)\n if (typeof value === `number`) {\n if (!Number.isFinite(value)) throw new Error(`canonicalJson: ${value} has no JSON form`)\n return JSON.stringify(value)\n }\n if (Array.isArray(value)) return `[${value.map((v) => (v === undefined ? `null` : canonicalJson(v))).join(`,`)}]`\n if (isObject(value)) {\n const keys = Object.keys(value)\n .filter((k) => value[k] !== undefined)\n .sort()\n return `{${keys.map((k) => `${JSON.stringify(k)}:${canonicalJson(value[k])}`).join(`,`)}}`\n }\n throw new Error(`canonicalJson: a ${typeof value} has no JSON form`)\n}\n\n/** What the signature covers: the context line + the canonical JSON of the\n * file without `signature`, as UTF-8. */\nexport function packageFileSignedBytes(file: Record<string, unknown>): Uint8Array<ArrayBuffer> {\n const { signature: _signature, ...rest } = file\n return new TextEncoder().encode(PACKAGE_FILE_SIGNATURE_CONTEXT + canonicalJson(rest))\n}\n\nexport function base64UrlEncode(bytes: Uint8Array): string {\n let s = ``\n for (const b of bytes) s += String.fromCharCode(b)\n return btoa(s).replace(/\\+/g, `-`).replace(/\\//g, `_`).replace(/=+$/, ``)\n}\n\n/** Strict: the url-safe alphabet, no padding; null otherwise. */\nexport function base64UrlDecode(text: string): Uint8Array<ArrayBuffer> | null {\n if (!/^[A-Za-z0-9_-]*$/.test(text) || text.length % 4 === 1) return null\n const bin = atob(text.replace(/-/g, `+`).replace(/_/g, `/`) + `===`.slice((text.length + 3) % 4))\n return Uint8Array.from(bin, (c) => c.charCodeAt(0))\n}\n\n/** The 32-byte public key of `author.key`; null when malformed. */\nexport function authorPublicKey(key: unknown): Uint8Array<ArrayBuffer> | null {\n if (typeof key !== `string` || !key.startsWith(AUTHOR_KEY_PREFIX)) return null\n const bytes = base64UrlDecode(key.slice(AUTHOR_KEY_PREFIX.length))\n return bytes?.length === 32 ? bytes : null\n}\n\nconst PKCS8_ED25519_PREFIX = Uint8Array.from([0x30, 0x2e, 0x02, 0x01, 0x00, 0x30, 0x05, 0x06, 0x03, 0x2b, 0x65, 0x70, 0x04, 0x22, 0x04, 0x20])\n\n/** The file signed by the holder of the 32-byte Ed25519 `seed`, as\n * `author` `name`: every key but `signature` kept, then `author` and\n * `signature` (replaced when present). */\nexport async function signPackageFile<T extends Record<string, unknown>>(\n file: T,\n signer: { name: string; seed: Uint8Array }\n): Promise<Omit<T, `author` | `signature`> & { author: PackageFileAuthor; signature: PackageFileSignature }> {\n if (signer.seed.length !== 32) throw new Error(`signPackageFile: the seed is 32 bytes`)\n const pkcs8 = new Uint8Array(48)\n pkcs8.set(PKCS8_ED25519_PREFIX)\n pkcs8.set(signer.seed, 16)\n const privateKey = await crypto.subtle.importKey(`pkcs8`, pkcs8, { name: `Ed25519` }, true, [`sign`])\n const jwk = await crypto.subtle.exportKey(`jwk`, privateKey)\n const { author: _author, signature: _signature, ...rest } = file\n const author: PackageFileAuthor = { name: signer.name, key: `${AUTHOR_KEY_PREFIX}${jwk.x}` }\n const unsigned = { ...rest, author }\n const sig = new Uint8Array(await crypto.subtle.sign({ name: `Ed25519` }, privateKey, packageFileSignedBytes(unsigned)))\n return { ...unsigned, signature: { alg: `ed25519`, value: base64UrlEncode(sig) } } as never\n}\n\n/** Is the file signed, and by whom: `unsigned` without `signature` (an\n * `author` alone is an unverified claim), `valid` with the author, or\n * `invalid` with every problem as a JSON pointer. */\nexport async function verifyPackageFile(file: unknown): Promise<PackageFileVerification> {\n if (!isObject(file)) return { status: `invalid`, issues: [{ path: ``, message: `a package file is an object` }] }\n if (file.signature === undefined) return { status: `unsigned` }\n const issues: PackageIssue[] = []\n const sig = file.signature\n let value: Uint8Array<ArrayBuffer> | null = null\n if (!isObject(sig)) issues.push({ path: `/signature`, message: `signature is {alg: \"ed25519\", value}` })\n else {\n if (sig.alg !== PACKAGE_FILE_SIGNATURE_ALG) issues.push({ path: `/signature/alg`, message: `alg is ed25519` })\n value = typeof sig.value === `string` ? base64UrlDecode(sig.value) : null\n if (value?.length !== 64) issues.push({ path: `/signature/value`, message: `value is 64 bytes, base64url` })\n }\n const author = file.author\n let key: Uint8Array<ArrayBuffer> | null = null\n if (!isObject(author)) issues.push({ path: `/author`, message: `a signed file names its author {name, key}` })\n else {\n const name = author.name\n if (typeof name !== `string` || !name.trim() || [...name].length > AUTHOR_NAME_MAX) issues.push({ path: `/author/name`, message: `name is 1 to ${AUTHOR_NAME_MAX} characters` })\n key = authorPublicKey(author.key)\n if (!key) issues.push({ path: `/author/key`, message: `key is ed25519: and 32 bytes, base64url` })\n }\n if (issues.length) return { status: `invalid`, issues }\n let ok = false\n try {\n const publicKey = await crypto.subtle.importKey(`raw`, key!, { name: `Ed25519` }, false, [`verify`])\n ok = await crypto.subtle.verify({ name: `Ed25519` }, publicKey, value!, packageFileSignedBytes(file))\n } catch {\n ok = false\n }\n if (!ok) return { status: `invalid`, issues: [{ path: `/signature`, message: `does not verify against /author/key` }] }\n const a = author as Record<string, unknown>\n return { status: `valid`, author: { name: a.name as string, key: a.key as string } }\n}\n",
|
|
22
22
|
"// VAPP-161: a package's TOOLS (docs/package-format.md \"Tools\"): the MCP\n// servers and scripts its functions call (`tools.<id>.<name>` for an MCP\n// tool, `tools.<id>` for a script), each behind the consent card the host\n// MUST show before the first call. Pure, so the Rust core mirrors it\n// (`host/tools.rs`); fixtures/host-router.json (validation) and\n// fixtures/host-package.json `consent` replay it.\n\nimport type { PackageIssue } from \"./package\"\nimport { canonicalJson } from \"./signature\"\n\n/** `^[a-z][a-z0-9_-]{0,31}$`: a tool's id. */\nexport const TOOL_ID_PATTERN = /^[a-z][a-z0-9_-]{0,31}$/\nexport const TOOL_KINDS: readonly string[] = [`mcp`, `script`]\nconst ENV_NAME = /^[A-Za-z_][A-Za-z0-9_]*$/\n\nexport interface PackageTool {\n kind: `mcp` | `script`\n title: string\n description?: string\n /** A remote MCP server (Streamable HTTP). */\n url?: string\n /** A local MCP server (stdio) or the script's process. */\n command?: string\n args?: string[]\n /** Variable NAMES the host passes through, never values. */\n env?: string[]\n}\n\n/** One row of the consent card. */\nexport interface ToolConsentRow {\n id: string\n kind: `mcp` | `script`\n transport: `http` | `stdio` | `script`\n title: string\n description: string | null\n /** The url, or the command line exactly as it runs. */\n target: string\n env: string[]\n}\n\nconst isObject = (v: unknown): v is Record<string, unknown> => !!v && typeof v === `object` && !Array.isArray(v)\nconst isStringList = (v: unknown): v is string[] => Array.isArray(v) && v.every((s) => typeof s === `string`)\n\nfunction isHttpUrl(s: string): boolean {\n try {\n const u = new URL(s)\n return (u.protocol === `https:` || u.protocol === `http:`) && !!u.host\n } catch {\n return false\n }\n}\n\n/** Every problem with a package's `tools`, ids in sorted order. */\nexport function validateTools(tools: unknown): PackageIssue[] {\n if (!isObject(tools)) return [{ path: `/tools`, message: `tools is an object of tools` }]\n const issues: PackageIssue[] = []\n for (const id of Object.keys(tools).sort()) {\n const tool = tools[id]\n const at = `/tools/${id}`\n if (!TOOL_ID_PATTERN.test(id)) issues.push({ path: at, message: `a tool id is lowercase letters, digits, - and _` })\n if (!isObject(tool)) {\n issues.push({ path: at, message: `a tool is {kind, title, url | command}` })\n continue\n }\n if (typeof tool.kind !== `string` || !TOOL_KINDS.includes(tool.kind)) issues.push({ path: `${at}/kind`, message: `kind is mcp or script` })\n if (typeof tool.title !== `string` || !tool.title.trim()) issues.push({ path: `${at}/title`, message: `title is a required string` })\n if (tool.description !== undefined && typeof tool.description !== `string`) issues.push({ path: `${at}/description`, message: `description is a string` })\n const hasUrl = tool.url !== undefined\n const hasCommand = tool.command !== undefined\n if (tool.kind === `mcp` && hasUrl === hasCommand) issues.push({ path: at, message: `an mcp tool has a url or a command` })\n if (tool.kind === `script` && hasUrl) issues.push({ path: `${at}/url`, message: `a script runs a command, not a url` })\n if (tool.kind === `script` && !hasCommand) issues.push({ path: `${at}/command`, message: `command is a non-empty string` })\n if (hasUrl && (typeof tool.url !== `string` || !isHttpUrl(tool.url))) issues.push({ path: `${at}/url`, message: `url is an absolute http(s) url` })\n if (hasCommand && (typeof tool.command !== `string` || !tool.command.trim())) issues.push({ path: `${at}/command`, message: `command is a non-empty string` })\n if (tool.args !== undefined && (!isStringList(tool.args) || hasUrl)) issues.push({ path: `${at}/args`, message: `args is a list of strings beside a command` })\n if (tool.env !== undefined && (!isStringList(tool.env) || tool.env.some((n) => !ENV_NAME.test(n)) || hasUrl)) issues.push({ path: `${at}/env`, message: `env is a list of variable names beside a command` })\n }\n return issues\n}\n\n/** An arg as the consent card shows it: as is, or JSON-quoted when it is\n * empty or holds a space, a quote or a backslash. */\nfunction shellArg(arg: string): string {\n return arg === `` || /[\\s\"'\\\\]/.test(arg) ? JSON.stringify(arg) : arg\n}\n\n/** The consent card's rows for a (valid) package's tools, by id. */\nexport function toolConsent(pkg: { tools?: Record<string, PackageTool> }): ToolConsentRow[] {\n return Object.keys(pkg.tools ?? {})\n .sort()\n .map((id) => {\n const tool = pkg.tools![id]!\n const transport = tool.kind === `script` ? `script` : tool.url !== undefined ? `http` : `stdio`\n const target = tool.url ?? [tool.command ?? ``, ...(tool.args ?? [])].map(shellArg).join(` `)\n return { id, kind: tool.kind, transport, title: tool.title, description: tool.description ?? null, target, env: [...(tool.env ?? [])] }\n })\n}\n\n/** The key a remembered grant is stored under: ANY change to the tool's\n * definition is a new key (the card asks again). */\nexport function toolConsentKey(packageId: string, toolId: string, tool: PackageTool): string {\n return `${packageId}/${toolId}:${canonicalJson(tool)}`\n}\n\n/** The tool a host function name calls: `tools.<id>` (a script) or\n * `tools.<id>.<name>` (an MCP server's tool); null = not a tool call. */\nexport function toolCall(name: string): { toolId: string; tool: string | null } | null {\n const m = /^tools\\.([a-z][a-z0-9_-]{0,31})(?:\\.(.+))?$/.exec(name)\n return m ? { toolId: m[1]!, tool: m[2] ?? null } : null\n}\n",
|
|
23
|
-
"// VAPP-91: catalog negotiation and declarative app packages (VAPP-82: a\n// manifest + A2UI templates + bindings, data never code).\n\nimport { A2UI_BASIC_CATALOG_ID, CORE_CATALOG_ID, CORE_LITE_CATALOG_ID } from \"../catalog\"\nimport { A2UI_VERSION } from \"../catalog\"\nimport type { FlatComponent } from \"../types\"\nimport type { ServerMessage } from \"./contract\"\nimport { matchesPattern } from \"./policy\"\nimport { parseSource } from \"./sources\"\nimport { RECORD_KIND_PATTERN, validateRecordSchema } from \"./records\"\nimport type { RecordKind } from \"./records\"\nimport { RECORDS_SCHEME } from \"./record-store\"\nimport { validateTools } from \"./tools\"\nimport type { PackageTool } from \"./tools\"\n\n/** VAPP-161: the package format version this host reads\n * (catalog/host.json `package.formatVersion`; docs/package-format.md).\n * A package without `formatVersion` is version 1; every version-1\n * package is a valid version-2 package. */\nexport const PACKAGE_FORMAT_VERSION = 2\n\n/** The core, the core lite, the A2UI basic catalog, then every registered\n * extension id in order, de-duplicated. */\nexport function supportedCatalogIds(extensionIds: readonly string[] = []): string[] {\n const out: string[] = []\n for (const id of [CORE_CATALOG_ID, CORE_LITE_CATALOG_ID, A2UI_BASIC_CATALOG_ID, ...extensionIds]) if (!out.includes(id)) out.push(id)\n return out\n}\n\n/** A2UI's `a2uiClientCapabilities`. */\nexport function clientCapabilities(extensionIds: readonly string[] = []): { \"v0.9\": { supportedCatalogIds: string[] } } {\n return { \"v0.9\": { supportedCatalogIds: supportedCatalogIds(extensionIds) } }\n}\n\nexport interface TemplateBinding {\n path: string\n source: string\n}\n\nexport interface AppTemplate {\n components: FlatComponent[]\n data?: unknown\n bindings?: TemplateBinding[]\n}\n\nexport interface AppPackage {\n id: string\n name: string\n version: string\n catalogId: string\n templates: Record<string, AppTemplate>\n /** Function patterns the package's surfaces may call (allowlist). */\n functions?: string[]\n /** VAPP-107: the binding sources the package's surfaces may follow\n * (`exp:devices`, or a prefix `exp:*`); unset = any registered scheme.\n * Set, a template binding or a later `bindDataModel` outside it is\n * refused (`sourceAllowed`). */\n sources?: string[]\n /** A built-in theme id or a theme JSON. */\n theme?: unknown\n icon?: { glyph?: string; color?: string }\n description?: string\n /** VAPP-122: the app's own data, one JSON Schema subset per kind\n * (`host/records.ts`); a record is validated against its kind before\n * it is stored. A kind's name follows `RECORD_KIND_PATTERN`. */\n records?: Record<string, RecordKind>\n /** VAPP-161: the format version the package was written for (default 1). */\n formatVersion?: number\n /** VAPP-161: MCP servers and scripts its functions call (`tools.<id>…`),\n * each behind the host's consent card (`host/tools.ts`). */\n tools?: Record<string, PackageTool>\n /** VAPP-161: the extension catalogs it needs beyond `catalogId`. */\n extensions?: PackageExtension[]\n}\n\n/** VAPP-161: an extension catalog a package needs: its id, the minimum\n * `MAJOR.MINOR.PATCH` (caret) and the components it uses from it. */\nexport interface PackageExtension {\n id: string\n version: string\n components?: string[]\n}\n\n/** An extension as a host registered it (`availableExtensions`). */\nexport interface AvailableExtension {\n id: string\n /** Unset = satisfies any version. */\n version?: string\n /** Unset = not checked. */\n components?: readonly string[]\n}\n\n/** A host's extension catalogs as `validatePackage` checks them. */\nexport function availableExtensions(defs: readonly { id: string; version?: string; components: Record<string, unknown>; macros?: Record<string, unknown> }[]): AvailableExtension[] {\n return defs.map((d) => ({ id: d.id, ...(d.version ? { version: d.version } : {}), components: [...Object.keys(d.components), ...Object.keys(d.macros ?? {})] }))\n}\n\nconst SEMVER = /^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)$/\n\n/** Caret: `have` has `want`'s major and is not lower. */\nexport function versionSatisfies(have: string, want: string): boolean {\n const h = SEMVER.exec(have)\n const w = SEMVER.exec(want)\n if (!h || !w) return false\n const [hM, hm, hp] = [Number(h[1]), Number(h[2]), Number(h[3])]\n const [wM, wm, wp] = [Number(w[1]), Number(w[2]), Number(w[3])]\n return hM === wM && (hm > wm || (hm === wm && hp >= wp))\n}\n\nexport interface PackageIssue {\n path: string\n message: string\n}\n\nconst isObject = (v: unknown): v is Record<string, unknown> => !!v && typeof v === `object` && !Array.isArray(v)\nconst POINTER = /^(\\/([^/~]|~[01])*)*$/\n\n/** Every problem with a package, each with a JSON pointer into it.\n * `extensions` = the host's registered extensions (versions and\n * components); unset, a declared extension only has to be in `catalogIds`. */\nexport function validatePackage(pkg: unknown, catalogIds: readonly string[] = supportedCatalogIds(), extensions?: readonly AvailableExtension[]): PackageIssue[] {\n const issues: PackageIssue[] = []\n if (!isObject(pkg)) return [{ path: ``, message: `a package is an object` }]\n if (pkg.formatVersion !== undefined) {\n if (typeof pkg.formatVersion !== `number` || !Number.isInteger(pkg.formatVersion) || pkg.formatVersion < 1) issues.push({ path: `/formatVersion`, message: `formatVersion is a positive integer` })\n else if (pkg.formatVersion > PACKAGE_FORMAT_VERSION) issues.push({ path: `/formatVersion`, message: `format version ${pkg.formatVersion} is newer than this host (${PACKAGE_FORMAT_VERSION})` })\n }\n for (const key of [`id`, `name`, `version`, `catalogId`])\n if (typeof pkg[key] !== `string` || !(pkg[key] as string)) issues.push({ path: `/${key}`, message: `${key} is a required string` })\n if (typeof pkg.catalogId === `string` && pkg.catalogId && !catalogIds.includes(pkg.catalogId))\n issues.push({ path: `/catalogId`, message: `unsupported catalog ${pkg.catalogId}` })\n if (!isObject(pkg.templates) || !Object.keys(pkg.templates).length) issues.push({ path: `/templates`, message: `templates is a non-empty object` })\n else\n for (const [id, template] of Object.entries(pkg.templates)) {\n const at = `/templates/${id}`\n if (!isObject(template)) {\n issues.push({ path: at, message: `a template is an object` })\n continue\n }\n const components = template.components\n if (!Array.isArray(components) || !components.length) issues.push({ path: `${at}/components`, message: `components is a non-empty array` })\n else {\n const ids = new Set<string>()\n components.forEach((c, i) => {\n if (!isObject(c) || typeof c.id !== `string` || typeof c.component !== `string`) issues.push({ path: `${at}/components/${i}`, message: `a component needs an id and a component` })\n else if (ids.has(c.id)) issues.push({ path: `${at}/components/${i}/id`, message: `duplicate id ${c.id}` })\n else ids.add(c.id)\n })\n if (!ids.has(`root`)) issues.push({ path: `${at}/components`, message: `no component has the id root` })\n }\n if (template.bindings !== undefined) {\n if (!Array.isArray(template.bindings)) issues.push({ path: `${at}/bindings`, message: `bindings is an array` })\n else\n template.bindings.forEach((b, i) => {\n const bp = `${at}/bindings/${i}`\n if (!isObject(b) || typeof b.path !== `string` || !POINTER.test(b.path)) issues.push({ path: `${bp}/path`, message: `path is a JSON pointer` })\n if (!isObject(b) || typeof b.source !== `string` || !parseSource(b.source)) issues.push({ path: `${bp}/source`, message: `source is a scheme:name URI` })\n })\n }\n }\n if (pkg.functions !== undefined && (!Array.isArray(pkg.functions) || pkg.functions.some((f) => typeof f !== `string` || !f)))\n issues.push({ path: `/functions`, message: `functions is a list of names or prefix* patterns` })\n if (pkg.records !== undefined) {\n if (!isObject(pkg.records)) issues.push({ path: `/records`, message: `records is an object of kinds` })\n else\n for (const kind of Object.keys(pkg.records).sort()) {\n const def = (pkg.records as Record<string, unknown>)[kind]\n const at = `/records/${kind}`\n if (!RECORD_KIND_PATTERN.test(kind)) issues.push({ path: at, message: `a kind is lowercase letters, digits and underscores` })\n if (!isObject(def)) issues.push({ path: at, message: `a kind is {schema, title?}` })\n else issues.push(...validateRecordSchema(def.schema, `${at}/schema`))\n }\n }\n if (pkg.sources !== undefined && (!Array.isArray(pkg.sources) || pkg.sources.some((f) => typeof f !== `string` || !f)))\n issues.push({ path: `/sources`, message: `sources is a list of scheme:name sources or prefix* patterns` })\n else if (Array.isArray(pkg.sources) && isObject(pkg.templates))\n for (const [id, template] of Object.entries(pkg.templates)) {\n if (!isObject(template) || !Array.isArray(template.bindings)) continue\n template.bindings.forEach((b, i) => {\n if (isObject(b) && typeof b.source === `string` && parseSource(b.source) && !sourceAllowed(pkg.sources as string[], b.source))\n issues.push({ path: `/templates/${id}/bindings/${i}/source`, message: `source ${b.source} is not in the package's sources` })\n })\n }\n // VAPP-161: a `records:<kind>` binding names a declared kind.\n if (isObject(pkg.templates))\n for (const [id, template] of Object.entries(pkg.templates)) {\n if (!isObject(template) || !Array.isArray(template.bindings)) continue\n template.bindings.forEach((b, i) => {\n const parsed = isObject(b) && typeof b.source === `string` ? parseSource(b.source) : null\n if (parsed?.scheme !== RECORDS_SCHEME) return\n if (!isObject(pkg.records) || !Object.prototype.hasOwnProperty.call(pkg.records, parsed.name))\n issues.push({ path: `/templates/${id}/bindings/${i}/source`, message: `records:${parsed.name} names no declared kind` })\n })\n }\n if (pkg.tools !== undefined) issues.push(...validateTools(pkg.tools))\n if (pkg.extensions !== undefined) issues.push(...validateExtensions(pkg.extensions, catalogIds, extensions))\n return issues\n}\n\nfunction validateExtensions(list: unknown, catalogIds: readonly string[], available: readonly AvailableExtension[] | undefined): PackageIssue[] {\n if (!Array.isArray(list)) return [{ path: `/extensions`, message: `extensions is a list of {id, version, components?}` }]\n const issues: PackageIssue[] = []\n const seen = new Set<string>()\n list.forEach((ext, i) => {\n const at = `/extensions/${i}`\n if (!isObject(ext)) return void issues.push({ path: at, message: `an extension is {id, version, components?}` })\n const id = typeof ext.id === `string` && ext.id ? ext.id : null\n if (!id) issues.push({ path: `${at}/id`, message: `id is a required string` })\n const version = typeof ext.version === `string` && SEMVER.test(ext.version) ? ext.version : null\n if (!version) issues.push({ path: `${at}/version`, message: `version is MAJOR.MINOR.PATCH` })\n const components = ext.components === undefined ? [] : Array.isArray(ext.components) && ext.components.every((c) => typeof c === `string` && c) ? (ext.components as string[]) : null\n if (!components) issues.push({ path: `${at}/components`, message: `components is a list of component names` })\n if (!id) return\n if (seen.has(id)) return void issues.push({ path: `${at}/id`, message: `duplicate extension ${id}` })\n seen.add(id)\n const have = available?.find((a) => a.id === id)\n if (!catalogIds.includes(id) || (available && !have)) return void issues.push({ path: `${at}/id`, message: `extension ${id} is not available on this host` })\n if (!have) return\n if (version && have.version !== undefined && !versionSatisfies(have.version, version)) issues.push({ path: `${at}/version`, message: `extension ${id} ${have.version} does not satisfy ^${version}` })\n if (have.components)\n (components ?? []).forEach((name, j) => {\n if (!have.components!.includes(name)) issues.push({ path: `${at}/components/${j}`, message: `extension ${id} has no component ${name}` })\n })\n })\n return issues\n}\n\n/** VAPP-107: may a package whose `sources` list is `allowed` follow this\n * source URI? Unset = yes; else the URI's `scheme:name` (scheme\n * lower-cased, the query dropped) must match a listed source exactly or a\n * `prefix*` pattern. */\nexport function sourceAllowed(allowed: readonly string[] | undefined, source: string): boolean {\n if (allowed === undefined) return true\n const parsed = parseSource(source)\n if (!parsed) return false\n const name = `${parsed.scheme}:${parsed.name}`\n return allowed.some((p) => matchesPattern(p, name) || matchesPattern(p, source))\n}\n\n/** A template as the messages that create it: createSurface, the\n * components, the merged initial data, one bindDataModel per binding. */\nexport function templateMessages(pkg: AppPackage, templateId: string, surfaceId: string, data?: unknown): ServerMessage[] | null {\n const template = pkg.templates[templateId]\n if (!template) return null\n const version = A2UI_VERSION\n const out: ServerMessage[] = [\n { version, createSurface: { surfaceId, catalogId: pkg.catalogId } },\n { version, updateComponents: { surfaceId, components: template.components } },\n ]\n const merged = mergeData(template.data, data)\n if (merged !== undefined) out.push({ version, updateDataModel: { surfaceId, path: `/`, value: merged } })\n for (const b of template.bindings ?? []) out.push({ version, bindDataModel: { surfaceId, path: b.path, source: b.source } })\n return out\n}\n\n/** The template's data under the caller's (objects merge one level deep in\n * key order; anything else: the caller's wins). */\nexport function mergeData(base: unknown, over: unknown): unknown {\n if (over === undefined) return base\n if (isObject(base) && isObject(over)) return { ...base, ...over }\n return over\n}\n",
|
|
23
|
+
"// VAPP-180: the MCP tools a package EXPOSES (docs/package-format.md\n// \"Exposes\"): declarative bindings `{name, title, description, input, access,\n// run}` a host's MCP broker lists and runs as the calling person, never code.\n// The format half of the eMCP contract (packages/emcp `fixtures/exposes.json`\n// in the Exponential repo, replayed by `exposes.test.ts`): what any host can\n// check from the package alone. What a run may reach on a given host (which\n// actions exist, which are owner-only or destructive by their arguments,\n// which upstream servers the team has) is that host's own check. Pure, so the\n// Rust core mirrors it (`host/exposes.rs`); fixtures/host-router.json\n// (validation) replays it.\n\nimport host from \"../../catalog/host.json\" with { type: \"json\" }\nimport type { PackageIssue } from \"./package\"\n\nexport const EXPOSES_LIMITS = host.package.exposes.limits\nexport const EXPOSE_RUN_KINDS: readonly string[] = host.package.exposes.runKinds\nconst RECORD_OPS: readonly string[] = host.package.exposes.recordOps\nconst READ_RECORD_OPS: readonly string[] = host.package.exposes.readRecordOps\nconst READ_OP_WORDS: readonly string[] = host.package.exposes.readOpWords\nconst DESTRUCTIVE_WORDS: readonly string[] = host.package.exposes.destructiveWords\n\nexport type ExposeAccess = `read` | `write`\n\nexport interface PackageExpose {\n /** `^[a-z][a-z0-9_]*$`, at most `limits.nameMax`, never `__`. */\n name: string\n title: string\n description: string\n /** A JSON Schema of `type: \"object\"`: the tool's inputSchema. */\n input: { type: `object`; properties?: Record<string, unknown>; required?: string[] }\n access: ExposeAccess\n /** Exactly one of `records`, `action`, `upstream`; every string may hold\n * `${input.<path>}` templates. */\n run:\n | { records: { op: `list` | `get` | `upsert`; kind: string; id?: unknown; where?: Record<string, unknown>; data?: Record<string, unknown>; limit?: unknown } }\n | { action: string; args?: Record<string, unknown> }\n | { upstream: string; tool: string; args?: Record<string, unknown> }\n}\n\n/** One problem with a binding: the eMCP error `code` (`fixtures/exposes.json`\n * `errors`), the binding's `index` (null = the list) and the package issue. */\nexport interface ExposeIssue extends PackageIssue {\n index: number | null\n code: string\n}\n\nconst isObject = (v: unknown): v is Record<string, unknown> => !!v && typeof v === `object` && !Array.isArray(v)\nconst NAME = new RegExp(EXPOSES_LIMITS.namePattern)\nconst ACTION = new RegExp(host.package.exposes.actionPattern)\nconst TEMPLATE = /\\$\\{input\\.([A-Za-z_][A-Za-z0-9_]*(?:\\.[A-Za-z_][A-Za-z0-9_]*)*)\\}/g\n\n/** The input paths a run's templates name (`${input.a.b}` → `a.b`), in\n * document order. */\nexport function exposeTemplatePaths(value: unknown): string[] {\n const out: string[] = []\n const walk = (v: unknown) => {\n if (typeof v === `string`) for (const m of v.matchAll(TEMPLATE)) out.push(m[1]!)\n else if (Array.isArray(v)) v.forEach(walk)\n else if (isObject(v)) Object.values(v).forEach(walk)\n }\n walk(value)\n return out\n}\n\n/** The words of a function or tool name (`issues.update_status` → issues,\n * update, status). */\nconst words = (name: string): string[] => name.toLowerCase().split(/[^a-z]+/).filter(Boolean)\n\n/** An action reads when the last word of its name is a read word\n * (`exponential.issues.list`); a verb writes. */\nexport function exposeActionAccess(action: string): ExposeAccess {\n const last = words(action.split(`.`).at(-1) ?? ``).at(-1)\n return last !== undefined && READ_OP_WORDS.includes(last) ? `read` : `write`\n}\n\n/** A tool or action name holding a destructive word (delete, merge, close,\n * end, remove, trash) is never exposed. */\nexport function exposeNameDestructive(name: string): boolean {\n return words(name).some((word) => DESTRUCTIVE_WORDS.includes(word))\n}\n\n/** The package's declared upstreams (valid entries only). */\nfunction upstreamNames(upstreams: unknown): string[] {\n return Array.isArray(upstreams) ? upstreams.filter((u): u is string => typeof u === `string` && u !== ``) : []\n}\n\n/** Every problem with a package's `upstreams`: the team MCP server names\n * its upstream bindings may call. */\nexport function validateUpstreams(upstreams: unknown): PackageIssue[] {\n if (!Array.isArray(upstreams) || upstreams.some((u) => typeof u !== `string` || u === ``)) return [{ path: `/upstreams`, message: `upstreams is a list of MCP server names` }]\n const issues: PackageIssue[] = []\n upstreams.forEach((name, i) => {\n if (upstreams.indexOf(name) !== i) issues.push({ path: `/upstreams/${i}`, message: `duplicate upstream ${name}` })\n })\n return issues\n}\n\n/** Every problem with a package's `exposes`, in binding order, with its\n * eMCP code. `records` and `upstreams` = the package's (a binding reads\n * only its own kinds and calls only its own upstreams). */\nexport function exposeIssues(exposes: unknown, records: unknown, upstreams: unknown): ExposeIssue[] {\n if (!Array.isArray(exposes)) return [{ index: null, code: `run`, path: `/exposes`, message: `exposes is a list of tools` }]\n const issues: ExposeIssue[] = []\n if (exposes.length > EXPOSES_LIMITS.maxTools) issues.push({ index: null, code: `tooMany`, path: `/exposes`, message: `exposes lists at most ${EXPOSES_LIMITS.maxTools} tools` })\n const kinds = isObject(records) ? Object.keys(records) : []\n const servers = upstreamNames(upstreams)\n const seen = new Set<string>()\n exposes.forEach((expose, index) => {\n const at = `/exposes/${index}`\n const fail = (code: string, path: string, message: string) => void issues.push({ index, code, path: `${at}${path}`, message })\n if (!isObject(expose)) return fail(`run`, ``, `a tool is {name, title, description, input, access, run}`)\n const name = expose.name\n if (typeof name !== `string` || !NAME.test(name) || name.length > EXPOSES_LIMITS.nameMax || name.includes(EXPOSES_LIMITS.separator))\n fail(`name`, `/name`, `name is lowercase letters, digits and _ (at most ${EXPOSES_LIMITS.nameMax}, no ${EXPOSES_LIMITS.separator})`)\n else if (seen.has(name)) fail(`duplicate`, `/name`, `duplicate tool ${name}`)\n else seen.add(name)\n if (typeof expose.title !== `string` || !expose.title.trim() || expose.title.length > EXPOSES_LIMITS.titleMax)\n fail(`title`, `/title`, `title is a non-blank string of at most ${EXPOSES_LIMITS.titleMax} characters`)\n if (typeof expose.description !== `string` || !expose.description.trim() || expose.description.length > EXPOSES_LIMITS.descriptionMax)\n fail(`description`, `/description`, `description is a non-blank string of at most ${EXPOSES_LIMITS.descriptionMax} characters`)\n const input = expose.input\n if (!isObject(input) || input.type !== `object` || (input.properties !== undefined && !isObject(input.properties)))\n fail(`input`, `/input`, `input is a JSON Schema of type object`)\n if (expose.access !== `read` && expose.access !== `write`) fail(`access`, `/access`, `access is read or write`)\n const properties = isObject(input) && isObject(input.properties) ? input.properties : {}\n const run = expose.run\n if (!isObject(run) || EXPOSE_RUN_KINDS.filter((k) => k in run).length !== 1) return fail(`run`, `/run`, `run holds exactly one of records, action, upstream`)\n for (const path of exposeTemplatePaths(run))\n if (!Object.prototype.hasOwnProperty.call(properties, path.split(`.`)[0]!)) fail(`template`, `/run`, `\\${input.${path}} names no input property`)\n let level: ExposeAccess\n if (`records` in run) {\n const records = run.records\n const op = isObject(records) ? records.op : undefined\n if (typeof op !== `string` || !RECORD_OPS.includes(op))\n return op === `delete` ? fail(`destructive`, `/run/records/op`, `a records delete is destructive: never exposed`) : fail(`run`, `/run/records/op`, `op is ${RECORD_OPS.join(`, `)}`)\n if (typeof (records as Record<string, unknown>).kind !== `string` || !kinds.includes((records as Record<string, string>).kind))\n fail(`kind`, `/run/records/kind`, `kind names no declared record kind`)\n level = READ_RECORD_OPS.includes(op) ? `read` : `write`\n } else if (`action` in run) {\n const action = run.action\n if (typeof action !== `string` || !ACTION.test(action)) return fail(`action`, `/run/action`, `action is a function name like namespace.function`)\n if (exposeNameDestructive(action)) return fail(`destructive`, `/run/action`, `a destructive action is never exposed`)\n level = exposeActionAccess(action)\n } else {\n if (typeof run.upstream !== `string` || !servers.includes(run.upstream)) fail(`upstream`, `/run/upstream`, `upstream names none of the package's upstreams`)\n if (typeof run.tool !== `string` || run.tool === ``) return fail(`run`, `/run/tool`, `tool is a non-empty string`)\n if (exposeNameDestructive(run.tool)) return fail(`destructive`, `/run/tool`, `a destructive tool is never exposed`)\n // An upstream tool's level is its live annotations': the host checks it at call.\n return\n }\n if (expose.access === `read` && level === `write`) fail(`accessTooLow`, `/access`, `the run writes: access is write`)\n })\n return issues\n}\n\n/** Every problem with a package's `exposes` (`exposeIssues` as package\n * issues). */\nexport function validatePackageExposes(exposes: unknown, records: unknown, upstreams: unknown): PackageIssue[] {\n return exposeIssues(exposes, records, upstreams).map(({ path, message }) => ({ path, message }))\n}\n",
|
|
24
|
+
"// VAPP-91: catalog negotiation and declarative app packages (VAPP-82: a\n// manifest + A2UI templates + bindings, data never code).\n\nimport { A2UI_BASIC_CATALOG_ID, CORE_CATALOG_ID, CORE_LITE_CATALOG_ID } from \"../catalog\"\nimport { A2UI_VERSION } from \"../catalog\"\nimport type { FlatComponent } from \"../types\"\nimport type { ServerMessage } from \"./contract\"\nimport { matchesPattern } from \"./policy\"\nimport { parseSource } from \"./sources\"\nimport { RECORD_KIND_PATTERN, validateRecordSchema } from \"./records\"\nimport type { RecordKind } from \"./records\"\nimport { RECORDS_SCHEME } from \"./record-store\"\nimport { validateTools } from \"./tools\"\nimport type { PackageTool } from \"./tools\"\nimport { validatePackageExposes, validateUpstreams } from \"./exposes\"\nimport type { PackageExpose } from \"./exposes\"\n\n/** VAPP-161: the package format version this host reads\n * (catalog/host.json `package.formatVersion`; docs/package-format.md).\n * A package without `formatVersion` is version 1; every version-1\n * package is a valid version-2 package. */\nexport const PACKAGE_FORMAT_VERSION = 2\n\n/** The core, the core lite, the A2UI basic catalog, then every registered\n * extension id in order, de-duplicated. */\nexport function supportedCatalogIds(extensionIds: readonly string[] = []): string[] {\n const out: string[] = []\n for (const id of [CORE_CATALOG_ID, CORE_LITE_CATALOG_ID, A2UI_BASIC_CATALOG_ID, ...extensionIds]) if (!out.includes(id)) out.push(id)\n return out\n}\n\n/** A2UI's `a2uiClientCapabilities`. */\nexport function clientCapabilities(extensionIds: readonly string[] = []): { \"v0.9\": { supportedCatalogIds: string[] } } {\n return { \"v0.9\": { supportedCatalogIds: supportedCatalogIds(extensionIds) } }\n}\n\nexport interface TemplateBinding {\n path: string\n source: string\n}\n\nexport interface AppTemplate {\n components: FlatComponent[]\n data?: unknown\n bindings?: TemplateBinding[]\n}\n\nexport interface AppPackage {\n id: string\n name: string\n version: string\n catalogId: string\n templates: Record<string, AppTemplate>\n /** Function patterns the package's surfaces may call (allowlist). */\n functions?: string[]\n /** VAPP-107: the binding sources the package's surfaces may follow\n * (`exp:devices`, or a prefix `exp:*`); unset = any registered scheme.\n * Set, a template binding or a later `bindDataModel` outside it is\n * refused (`sourceAllowed`). */\n sources?: string[]\n /** A built-in theme id or a theme JSON. */\n theme?: unknown\n icon?: { glyph?: string; color?: string }\n description?: string\n /** VAPP-122: the app's own data, one JSON Schema subset per kind\n * (`host/records.ts`); a record is validated against its kind before\n * it is stored. A kind's name follows `RECORD_KIND_PATTERN`. */\n records?: Record<string, RecordKind>\n /** VAPP-161: the format version the package was written for (default 1). */\n formatVersion?: number\n /** VAPP-161: MCP servers and scripts its functions call (`tools.<id>…`),\n * each behind the host's consent card (`host/tools.ts`). */\n tools?: Record<string, PackageTool>\n /** VAPP-161: the extension catalogs it needs beyond `catalogId`. */\n extensions?: PackageExtension[]\n /** VAPP-180: the MCP tools it exposes to a host's MCP broker\n * (`host/exposes.ts`): declarative bindings over its records, the host's\n * actions or its upstreams, run as the calling person. */\n exposes?: PackageExpose[]\n /** VAPP-180: the MCP server names (the host's, e.g. a team's servers) its\n * `upstream` bindings call. */\n upstreams?: string[]\n}\n\n/** VAPP-161: an extension catalog a package needs: its id, the minimum\n * `MAJOR.MINOR.PATCH` (caret) and the components it uses from it. */\nexport interface PackageExtension {\n id: string\n version: string\n components?: string[]\n}\n\n/** An extension as a host registered it (`availableExtensions`). */\nexport interface AvailableExtension {\n id: string\n /** Unset = satisfies any version. */\n version?: string\n /** Unset = not checked. */\n components?: readonly string[]\n}\n\n/** A host's extension catalogs as `validatePackage` checks them. */\nexport function availableExtensions(defs: readonly { id: string; version?: string; components: Record<string, unknown>; macros?: Record<string, unknown> }[]): AvailableExtension[] {\n return defs.map((d) => ({ id: d.id, ...(d.version ? { version: d.version } : {}), components: [...Object.keys(d.components), ...Object.keys(d.macros ?? {})] }))\n}\n\nconst SEMVER = /^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)$/\n\n/** Caret: `have` has `want`'s major and is not lower. */\nexport function versionSatisfies(have: string, want: string): boolean {\n const h = SEMVER.exec(have)\n const w = SEMVER.exec(want)\n if (!h || !w) return false\n const [hM, hm, hp] = [Number(h[1]), Number(h[2]), Number(h[3])]\n const [wM, wm, wp] = [Number(w[1]), Number(w[2]), Number(w[3])]\n return hM === wM && (hm > wm || (hm === wm && hp >= wp))\n}\n\nexport interface PackageIssue {\n path: string\n message: string\n}\n\nconst isObject = (v: unknown): v is Record<string, unknown> => !!v && typeof v === `object` && !Array.isArray(v)\nconst POINTER = /^(\\/([^/~]|~[01])*)*$/\n\n/** Every problem with a package, each with a JSON pointer into it.\n * `extensions` = the host's registered extensions (versions and\n * components); unset, a declared extension only has to be in `catalogIds`. */\nexport function validatePackage(pkg: unknown, catalogIds: readonly string[] = supportedCatalogIds(), extensions?: readonly AvailableExtension[]): PackageIssue[] {\n const issues: PackageIssue[] = []\n if (!isObject(pkg)) return [{ path: ``, message: `a package is an object` }]\n if (pkg.formatVersion !== undefined) {\n if (typeof pkg.formatVersion !== `number` || !Number.isInteger(pkg.formatVersion) || pkg.formatVersion < 1) issues.push({ path: `/formatVersion`, message: `formatVersion is a positive integer` })\n else if (pkg.formatVersion > PACKAGE_FORMAT_VERSION) issues.push({ path: `/formatVersion`, message: `format version ${pkg.formatVersion} is newer than this host (${PACKAGE_FORMAT_VERSION})` })\n }\n for (const key of [`id`, `name`, `version`, `catalogId`])\n if (typeof pkg[key] !== `string` || !(pkg[key] as string)) issues.push({ path: `/${key}`, message: `${key} is a required string` })\n if (typeof pkg.catalogId === `string` && pkg.catalogId && !catalogIds.includes(pkg.catalogId))\n issues.push({ path: `/catalogId`, message: `unsupported catalog ${pkg.catalogId}` })\n if (!isObject(pkg.templates) || !Object.keys(pkg.templates).length) issues.push({ path: `/templates`, message: `templates is a non-empty object` })\n else\n for (const [id, template] of Object.entries(pkg.templates)) {\n const at = `/templates/${id}`\n if (!isObject(template)) {\n issues.push({ path: at, message: `a template is an object` })\n continue\n }\n const components = template.components\n if (!Array.isArray(components) || !components.length) issues.push({ path: `${at}/components`, message: `components is a non-empty array` })\n else {\n const ids = new Set<string>()\n components.forEach((c, i) => {\n if (!isObject(c) || typeof c.id !== `string` || typeof c.component !== `string`) issues.push({ path: `${at}/components/${i}`, message: `a component needs an id and a component` })\n else if (ids.has(c.id)) issues.push({ path: `${at}/components/${i}/id`, message: `duplicate id ${c.id}` })\n else ids.add(c.id)\n })\n if (!ids.has(`root`)) issues.push({ path: `${at}/components`, message: `no component has the id root` })\n }\n if (template.bindings !== undefined) {\n if (!Array.isArray(template.bindings)) issues.push({ path: `${at}/bindings`, message: `bindings is an array` })\n else\n template.bindings.forEach((b, i) => {\n const bp = `${at}/bindings/${i}`\n if (!isObject(b) || typeof b.path !== `string` || !POINTER.test(b.path)) issues.push({ path: `${bp}/path`, message: `path is a JSON pointer` })\n if (!isObject(b) || typeof b.source !== `string` || !parseSource(b.source)) issues.push({ path: `${bp}/source`, message: `source is a scheme:name URI` })\n })\n }\n }\n if (pkg.functions !== undefined && (!Array.isArray(pkg.functions) || pkg.functions.some((f) => typeof f !== `string` || !f)))\n issues.push({ path: `/functions`, message: `functions is a list of names or prefix* patterns` })\n if (pkg.records !== undefined) {\n if (!isObject(pkg.records)) issues.push({ path: `/records`, message: `records is an object of kinds` })\n else\n for (const kind of Object.keys(pkg.records).sort()) {\n const def = (pkg.records as Record<string, unknown>)[kind]\n const at = `/records/${kind}`\n if (!RECORD_KIND_PATTERN.test(kind)) issues.push({ path: at, message: `a kind is lowercase letters, digits and underscores` })\n if (!isObject(def)) issues.push({ path: at, message: `a kind is {schema, title?}` })\n else issues.push(...validateRecordSchema(def.schema, `${at}/schema`))\n }\n }\n if (pkg.sources !== undefined && (!Array.isArray(pkg.sources) || pkg.sources.some((f) => typeof f !== `string` || !f)))\n issues.push({ path: `/sources`, message: `sources is a list of scheme:name sources or prefix* patterns` })\n else if (Array.isArray(pkg.sources) && isObject(pkg.templates))\n for (const [id, template] of Object.entries(pkg.templates)) {\n if (!isObject(template) || !Array.isArray(template.bindings)) continue\n template.bindings.forEach((b, i) => {\n if (isObject(b) && typeof b.source === `string` && parseSource(b.source) && !sourceAllowed(pkg.sources as string[], b.source))\n issues.push({ path: `/templates/${id}/bindings/${i}/source`, message: `source ${b.source} is not in the package's sources` })\n })\n }\n // VAPP-161: a `records:<kind>` binding names a declared kind.\n if (isObject(pkg.templates))\n for (const [id, template] of Object.entries(pkg.templates)) {\n if (!isObject(template) || !Array.isArray(template.bindings)) continue\n template.bindings.forEach((b, i) => {\n const parsed = isObject(b) && typeof b.source === `string` ? parseSource(b.source) : null\n if (parsed?.scheme !== RECORDS_SCHEME) return\n if (!isObject(pkg.records) || !Object.prototype.hasOwnProperty.call(pkg.records, parsed.name))\n issues.push({ path: `/templates/${id}/bindings/${i}/source`, message: `records:${parsed.name} names no declared kind` })\n })\n }\n if (pkg.tools !== undefined) issues.push(...validateTools(pkg.tools))\n if (pkg.upstreams !== undefined) issues.push(...validateUpstreams(pkg.upstreams))\n if (pkg.exposes !== undefined) issues.push(...validatePackageExposes(pkg.exposes, pkg.records, pkg.upstreams))\n if (pkg.extensions !== undefined) issues.push(...validateExtensions(pkg.extensions, catalogIds, extensions))\n return issues\n}\n\nfunction validateExtensions(list: unknown, catalogIds: readonly string[], available: readonly AvailableExtension[] | undefined): PackageIssue[] {\n if (!Array.isArray(list)) return [{ path: `/extensions`, message: `extensions is a list of {id, version, components?}` }]\n const issues: PackageIssue[] = []\n const seen = new Set<string>()\n list.forEach((ext, i) => {\n const at = `/extensions/${i}`\n if (!isObject(ext)) return void issues.push({ path: at, message: `an extension is {id, version, components?}` })\n const id = typeof ext.id === `string` && ext.id ? ext.id : null\n if (!id) issues.push({ path: `${at}/id`, message: `id is a required string` })\n const version = typeof ext.version === `string` && SEMVER.test(ext.version) ? ext.version : null\n if (!version) issues.push({ path: `${at}/version`, message: `version is MAJOR.MINOR.PATCH` })\n const components = ext.components === undefined ? [] : Array.isArray(ext.components) && ext.components.every((c) => typeof c === `string` && c) ? (ext.components as string[]) : null\n if (!components) issues.push({ path: `${at}/components`, message: `components is a list of component names` })\n if (!id) return\n if (seen.has(id)) return void issues.push({ path: `${at}/id`, message: `duplicate extension ${id}` })\n seen.add(id)\n const have = available?.find((a) => a.id === id)\n if (!catalogIds.includes(id) || (available && !have)) return void issues.push({ path: `${at}/id`, message: `extension ${id} is not available on this host` })\n if (!have) return\n if (version && have.version !== undefined && !versionSatisfies(have.version, version)) issues.push({ path: `${at}/version`, message: `extension ${id} ${have.version} does not satisfy ^${version}` })\n if (have.components)\n (components ?? []).forEach((name, j) => {\n if (!have.components!.includes(name)) issues.push({ path: `${at}/components/${j}`, message: `extension ${id} has no component ${name}` })\n })\n })\n return issues\n}\n\n/** VAPP-107: may a package whose `sources` list is `allowed` follow this\n * source URI? Unset = yes; else the URI's `scheme:name` (scheme\n * lower-cased, the query dropped) must match a listed source exactly or a\n * `prefix*` pattern. */\nexport function sourceAllowed(allowed: readonly string[] | undefined, source: string): boolean {\n if (allowed === undefined) return true\n const parsed = parseSource(source)\n if (!parsed) return false\n const name = `${parsed.scheme}:${parsed.name}`\n return allowed.some((p) => matchesPattern(p, name) || matchesPattern(p, source))\n}\n\n/** A template as the messages that create it: createSurface, the\n * components, the merged initial data, one bindDataModel per binding. */\nexport function templateMessages(pkg: AppPackage, templateId: string, surfaceId: string, data?: unknown): ServerMessage[] | null {\n const template = pkg.templates[templateId]\n if (!template) return null\n const version = A2UI_VERSION\n const out: ServerMessage[] = [\n { version, createSurface: { surfaceId, catalogId: pkg.catalogId } },\n { version, updateComponents: { surfaceId, components: template.components } },\n ]\n const merged = mergeData(template.data, data)\n if (merged !== undefined) out.push({ version, updateDataModel: { surfaceId, path: `/`, value: merged } })\n for (const b of template.bindings ?? []) out.push({ version, bindDataModel: { surfaceId, path: b.path, source: b.source } })\n return out\n}\n\n/** The template's data under the caller's (objects merge one level deep in\n * key order; anything else: the caller's wins). */\nexport function mergeData(base: unknown, over: unknown): unknown {\n if (over === undefined) return base\n if (isObject(base) && isObject(over)) return { ...base, ...over }\n return over\n}\n",
|
|
24
25
|
"// VAPP-91: the host router. Server messages in, ops out (`catalog/host.json`\n// ops); the platform host performs them on its surfaces. Pure and\n// synchronous, so fixtures/host-router.json locks the same behaviour on\n// every platform (the Rust core's `host::HostRouter`, which Swift and Kotlin\n// reach through the facade).\n\nimport { A2UI_VERSION } from \"../catalog\"\nimport { errorMessage, MESSAGE_KINDS } from \"./contract\"\nimport type { HostOp, ServerMessage } from \"./contract\"\nimport { sourceAllowed, supportedCatalogIds, templateMessages, validatePackage } from \"./package\"\nimport type { AvailableExtension, PackageIssue, AppPackage } from \"./package\"\nimport { parseSource } from \"./sources\"\nimport { LIMIT_ISSUES, MAX_MESSAGE_BYTES } from \"../limits\"\n\nconst isObject = (v: unknown): v is Record<string, unknown> => !!v && typeof v === `object` && !Array.isArray(v)\n\nexport interface HostRouterOptions {\n /** Extension catalog ids the host registered (negotiation). */\n extensionIds?: readonly string[]\n /** VAPP-161: their versions and components (a package's `extensions`\n * are checked against them; unset = only that the id is registered). */\n extensions?: readonly AvailableExtension[]\n}\n\nexport interface SurfaceInfo {\n surfaceId: string\n catalogId: string\n /** The package whose template created it (its function policy). */\n packageId?: string\n}\n\nexport class HostRouter {\n private extensionIds: string[]\n private surfaces = new Map<string, SurfaceInfo>()\n private packages = new Map<string, AppPackage>()\n private extensions: AvailableExtension[] | undefined\n\n constructor(options: HostRouterOptions = {}) {\n this.extensionIds = [...(options.extensionIds ?? [])]\n this.extensions = options.extensions ? [...options.extensions] : undefined\n }\n\n get supportedCatalogIds(): string[] {\n return supportedCatalogIds(this.extensionIds)\n }\n\n registerExtension(id: string, available?: AvailableExtension): void {\n if (!this.extensionIds.includes(id)) this.extensionIds.push(id)\n if (this.extensions && !this.extensions.some((e) => e.id === id)) this.extensions.push(available ?? { id })\n }\n\n /** Install a declarative package: its templates become `applyTemplate`\n * targets. Returns the validation issues (installed only when none). */\n installPackage(pkg: AppPackage): PackageIssue[] {\n const issues = validatePackage(pkg, this.supportedCatalogIds, this.extensions)\n if (!issues.length) this.packages.set(pkg.id, pkg)\n return issues\n }\n\n package(id: string): AppPackage | undefined {\n return this.packages.get(id)\n }\n\n surface(id: string): SurfaceInfo | undefined {\n return this.surfaces.get(id)\n }\n\n surfaceIds(): string[] {\n return [...this.surfaces.keys()]\n }\n\n /** One server message → the ops to perform, in order. Never throws. */\n route(message: unknown): HostOp[] {\n // VAPP-103: a message past `maxMessageBytes` (as UTF-8 JSON) is refused.\n if (oversized(message)) return [this.invalid(isObject(message) ? surfaceIdOf(message) : ``, LIMIT_ISSUES.messageBytes)]\n if (!isObject(message)) return [this.invalid(``, `a message is a JSON object`)]\n if (message.version !== undefined && message.version !== A2UI_VERSION) return [this.invalid(surfaceIdOf(message), `unsupported version ${String(message.version)}`)]\n const kinds = Object.keys(message).filter((k) => k !== `version`)\n if (kinds.length !== 1 || !MESSAGE_KINDS.includes(kinds[0]!)) return [this.invalid(surfaceIdOf(message), `expected exactly one of ${MESSAGE_KINDS.join(`, `)}`)]\n const kind = kinds[0] as keyof ServerMessage\n const body = message[kind]\n if (!isObject(body) || typeof body.surfaceId !== `string` || !body.surfaceId) return [this.invalid(``, `${kind}.surfaceId is required`)]\n const surfaceId = body.surfaceId\n switch (kind) {\n case `createSurface`: {\n if (typeof body.catalogId !== `string`) return [this.invalid(surfaceId, `createSurface.catalogId is required`)]\n if (!this.supportedCatalogIds.includes(body.catalogId))\n return [{ op: `send`, message: errorMessage(`UNSUPPORTED_CATALOG`, surfaceId, `catalog ${body.catalogId} is not supported`) }]\n this.surfaces.set(surfaceId, { surfaceId, catalogId: body.catalogId })\n const op: HostOp = { op: `create`, surfaceId, catalogId: body.catalogId }\n if (body.theme !== undefined) op.theme = body.theme\n if (body.sendDataModel === true) op.sendDataModel = true\n return [op]\n }\n case `updateComponents`: {\n if (!Array.isArray(body.components)) return [this.invalid(surfaceId, `updateComponents.components is required`)]\n if (!this.surfaces.has(surfaceId)) return [this.missing(surfaceId)]\n return [{ op: `components`, surfaceId, components: body.components as never }]\n }\n case `updateDataModel`: {\n if (!this.surfaces.has(surfaceId)) return [this.missing(surfaceId)]\n if (body.path !== undefined && typeof body.path !== `string`) return [this.invalid(surfaceId, `updateDataModel.path is a string`)]\n const path = normalizePath(body.path as string | undefined)\n return [`value` in body ? { op: `data`, surfaceId, path, value: body.value } : { op: `data`, surfaceId, path }]\n }\n case `deleteSurface`: {\n if (!this.surfaces.has(surfaceId)) return [this.missing(surfaceId)]\n this.surfaces.delete(surfaceId)\n return [{ op: `delete`, surfaceId }]\n }\n case `bindDataModel`: {\n const info = this.surfaces.get(surfaceId)\n if (!info) return [this.missing(surfaceId)]\n if (typeof body.path !== `string` || typeof body.source !== `string` || !parseSource(body.source))\n return [this.invalid(surfaceId, `bindDataModel needs a path and a scheme:name source`)]\n // VAPP-107: a package surface follows only the sources its package lists.\n const pkg = info.packageId ? this.packages.get(info.packageId) : undefined\n if (pkg && !sourceAllowed(pkg.sources, body.source))\n return [{ op: `send`, message: errorMessage(`SOURCE_DENIED`, surfaceId, `source ${body.source} is not in package ${pkg.id}'s sources`, normalizePath(body.path) || `/`) }]\n return [{ op: `bind`, surfaceId, path: normalizePath(body.path), source: body.source }]\n }\n case `applyTemplate`: {\n if (typeof body.templateId !== `string`) return [this.invalid(surfaceId, `applyTemplate.templateId is required`)]\n const pkg = this.findPackage(body.templateId, typeof body.packageId === `string` ? body.packageId : undefined)\n if (!pkg) return [{ op: `send`, message: errorMessage(`TEMPLATE_NOT_FOUND`, surfaceId, `no installed package has the template ${body.templateId}`) }]\n const ops: HostOp[] = []\n for (const m of templateMessages(pkg, body.templateId, surfaceId, body.data) ?? []) {\n ops.push(...this.route(m))\n // The surface belongs to the package from its creation on (its\n // function policy and source allowlist apply to the template's own binds).\n const info = this.surfaces.get(surfaceId)\n if (info) info.packageId = pkg.id\n }\n return ops\n }\n }\n return [this.invalid(surfaceId, `unknown message`)]\n }\n\n private findPackage(templateId: string, packageId?: string): AppPackage | undefined {\n if (packageId !== undefined) {\n const pkg = this.packages.get(packageId)\n return pkg && pkg.templates[templateId] ? pkg : undefined\n }\n for (const pkg of this.packages.values()) if (pkg.templates[templateId]) return pkg\n return undefined\n }\n\n private invalid(surfaceId: string, message: string): HostOp {\n return { op: `send`, message: errorMessage(`INVALID_MESSAGE`, surfaceId, message) }\n }\n\n private missing(surfaceId: string): HostOp {\n return { op: `send`, message: errorMessage(`SURFACE_NOT_FOUND`, surfaceId, `no surface ${surfaceId}; send createSurface first`) }\n }\n}\n\n/** Is the message's JSON past `maxMessageBytes`? (A string's UTF-8 size is\n * at most 3 bytes per UTF-16 unit: the exact count only near the limit.) */\nfunction oversized(message: unknown): boolean {\n let text: string | undefined\n try {\n text = JSON.stringify(message)\n } catch {\n return false\n }\n if (text === undefined || text.length * 3 <= MAX_MESSAGE_BYTES) return false\n return text.length > MAX_MESSAGE_BYTES || new TextEncoder().encode(text).length > MAX_MESSAGE_BYTES\n}\n\nfunction surfaceIdOf(message: Record<string, unknown>): string {\n for (const v of Object.values(message)) if (isObject(v) && typeof v.surfaceId === `string`) return v.surfaceId\n return ``\n}\n\n/** A2UI: an omitted path or `/` is the whole data model (`\"\"` in JSON\n * pointer terms, which every surface's setPointer takes). */\nexport function normalizePath(path: string | undefined): string {\n return path === undefined || path === `/` ? `` : path\n}\n",
|
|
25
26
|
"// VAPP-91: the framework-agnostic host runtime for TypeScript renderers.\n// It owns the transport, the router, one SurfaceStore per surface, the\n// source subscriptions, the function registry and the policy hooks; a\n// renderer (React: `@exponential_app/eui-react` `<HostSurface>`) paints a\n// store and hands its interactions back through `dispatch`.\n\nimport { writePointer } from \"../dynamic\"\nimport { reduceSurface } from \"../reducer\"\nimport { tryLoadTheme } from \"../theme\"\nimport type { ResolvedTheme } from \"../theme-types\"\nimport { BUILTIN_THEME_IDS, BUILTIN_THEMES, builtinTheme } from \"../themes\"\nimport type { ExtensionDef, FlatComponent, ReduceIssue, UiNode } from \"../types\"\nimport { RENDER_FAILED, actionMessage, errorMessage } from \"./contract\"\nimport type { ClientMessage, HostOp } from \"./contract\"\nimport { availableExtensions, clientCapabilities } from \"./package\"\nimport type { PackageIssue, AppPackage } from \"./package\"\nimport { combineDecisions, decideFunction, decideUrl, mediaRequest, packagePolicy } from \"./policy\"\nimport type { FunctionDecision, FunctionPolicy, MediaOptions, MediaRequest, UrlPolicy } from \"./policy\"\nimport { HostRouter } from \"./router\"\nimport { parseSource, sourceWithParams } from \"./sources\"\nimport { A2UI_VERSION } from \"../catalog\"\nimport type { SourceResolvers } from \"./sources\"\n\nexport type TransportStatus = `connecting` | `open` | `closed` | `error`\n\n/** Messages in, client messages out. Adapters: `transports.ts`. */\nexport interface Transport {\n /** Start delivering messages; report the connection state. */\n start(receive: (message: unknown) => void, status: (status: TransportStatus, detail?: string) => void): void\n send(message: ClientMessage): void | Promise<void>\n close(): void\n}\n\nexport interface FunctionCallInfo {\n surfaceId: string\n componentId: string\n name: string\n args: Record<string, unknown>\n}\n\nexport type HostFunction = (args: Record<string, unknown>, call: FunctionCallInfo) => unknown | Promise<unknown>\n\nexport interface HostPolicy {\n /** The declarative gate; `ask` decisions go to onFunctionCall. */\n functions?: FunctionPolicy\n /** The consent hook: true runs the call. Unset = `ask` is denied. */\n onFunctionCall?: (call: FunctionCallInfo) => boolean | Promise<boolean>\n urls?: UrlPolicy\n /** Opens an allowed url (default: `window.open(url, \"_blank\")`). */\n openUrl?: (url: string) => void\n media?: MediaOptions\n}\n\nexport interface HostOptions {\n transport?: Transport\n functions?: Record<string, HostFunction>\n sources?: SourceResolvers\n extensions?: readonly ExtensionDef[]\n packages?: readonly AppPackage[]\n policy?: HostPolicy\n /** Every client message that leaves (after the transport got it). */\n onSend?: (message: ClientMessage) => void\n /** Ops the host performs (tests, logging). */\n onOp?: (op: HostOp) => void\n /** Every problem the host meets (a package that failed validation, an\n * error it answered a message with, an invalid surface theme). A\n * transport-less host has no server to tell: this is where they land. */\n onIssue?: (issue: HostIssue) => void\n}\n\n/** One problem the host met; `host.issues` keeps the latest ones. */\nexport interface HostIssue {\n /** A host error code (`TEMPLATE_NOT_FOUND`…) or `PACKAGE_INVALID`. */\n code: string\n message: string\n surfaceId?: string\n /** A JSON pointer (into the package or the message). */\n path?: string\n packageId?: string\n}\n\n/** A package passed in `HostOptions.packages` that failed validation. */\nexport class PackageError extends Error {\n constructor(\n readonly packageId: string,\n readonly issues: PackageIssue[]\n ) {\n super(`exponential-ui: package ${packageId} is unusable: ${issues.map((i) => `${i.path || `/`} ${i.message}`).join(`; `)}`)\n this.name = `PackageError`\n }\n}\n\nconst MAX_ISSUES = 100\n\n/** A `createSurface.theme` (a built-in id or a theme JSON) → the resolved\n * theme, or why it is unusable. */\nexport function resolveSurfaceTheme(input: unknown): { theme: ResolvedTheme | null; issues: string[] } {\n if (typeof input === `string`) {\n if (!BUILTIN_THEME_IDS.includes(input)) return { theme: null, issues: [`unknown built-in theme \"${input}\"; known: ${BUILTIN_THEME_IDS.join(`|`)}`] }\n return { theme: builtinTheme(input), issues: [] }\n }\n const { theme, issues } = tryLoadTheme(input, { themes: BUILTIN_THEMES })\n return { theme, issues: issues.map((i) => (i.path ? `${i.path}: ${i.message}` : i.message)) }\n}\n\nexport interface FunctionOutcome {\n decision: FunctionDecision\n result?: unknown\n error?: string\n}\n\ntype Listener = () => void\n\n/** One surface's state: the flat components, the data model, the reduced\n * tree. Mutations notify subscribers; `root` is reduced lazily. */\nexport class SurfaceStore {\n readonly surfaceId: string\n catalogId: string\n packageId?: string\n sendDataModel = false\n /** The flat components, mutated in place while nothing holds them. */\n private list: FlatComponent[] = []\n /** `list` was handed out (`components`): the next update copies first. */\n private shared = false\n private positions = new Map<string, number>()\n data: Record<string, unknown> = {}\n /** The server's `createSurface.theme`, resolved (undefined = the\n * renderer's own theme). */\n theme?: ResolvedTheme\n private reduced: { root: UiNode | null; issues: ReduceIssue[]; templates?: Record<string, UiNode> } | null = null\n private listeners = new Set<Listener>()\n version = 0\n\n constructor(surfaceId: string, catalogId: string, private extensions: () => readonly ExtensionDef[]) {\n this.surfaceId = surfaceId\n this.catalogId = catalogId\n }\n\n /** The flat components as a SNAPSHOT: an array handed out here is never\n * mutated afterwards (the next update copies first), so a renderer that\n * keeps it sees a stable value; a stream nobody reads stays linear. */\n get components(): readonly FlatComponent[] {\n this.shared = true\n return this.list\n }\n\n /** The flat component with this id (undefined = none). */\n component(id: string): FlatComponent | undefined {\n const at = this.positions.get(id)\n return at === undefined ? undefined : this.list[at]\n }\n\n get root(): UiNode | null {\n return this.reduce().root\n }\n\n get issues(): ReduceIssue[] {\n return this.reduce().issues\n }\n\n /** Round 2 §4: the reducer's lifted data templates (absent without any). */\n get templates(): Record<string, UiNode> | undefined {\n return this.reduce().templates\n }\n\n private reduce() {\n if (!this.reduced)\n this.reduced = this.list.length ? reduceSurface(this.list, { catalogId: this.catalogId, extensions: this.extensions() }) : { root: null, issues: [] }\n return this.reduced\n }\n\n /** A2UI: a later update replaces components BY ID and keeps the rest\n * (an id → position map: a streamed surface costs linear, VAPP-103). */\n setComponents(components: readonly FlatComponent[]): void {\n if (this.shared) {\n this.list = this.list.slice()\n this.shared = false\n }\n for (const c of components) {\n const at = this.positions.get(c.id)\n if (at === undefined) {\n this.positions.set(c.id, this.list.length)\n this.list.push(c)\n } else this.list[at] = c\n }\n this.reduced = null\n this.notify()\n }\n\n /** Re-reduce on the next read (the extension set changed). */\n invalidate(): void {\n this.reduced = null\n this.notify()\n }\n\n /** Write the data model at `pointer` (`undefined` removes); a refused\n * write (writePointer) changes nothing and returns the reason. */\n setData(pointer: string, value: unknown): string | undefined {\n const written = writePointer(this.data, pointer, value)\n if (written.error) return written.error\n this.data = written.data as Record<string, unknown>\n this.notify()\n return undefined\n }\n\n subscribe(listener: Listener): () => void {\n this.listeners.add(listener)\n return () => this.listeners.delete(listener)\n }\n\n notify(): void {\n this.version += 1\n for (const l of [...this.listeners]) l()\n }\n}\n\nexport class ExponentialHost {\n readonly router: HostRouter\n private stores = new Map<string, SurfaceStore>()\n /** Per surface, one entry per bound path (VAPP-122: a re-bind of a path\n * cancels the earlier subscription at that path). */\n private subscriptions = new Map<string, { path: string; cancel: () => void }[]>()\n /** Per surface: the FLAT component owning a failed node → that\n * component as it was when it failed + the node ids already reported. */\n private paintErrors = new Map<string, Map<string, { component: FlatComponent | undefined; ids: Set<string> }>>()\n private listeners = new Set<Listener>()\n private functions: Record<string, HostFunction>\n private sources: SourceResolvers\n private extensions: ExtensionDef[]\n status: TransportStatus = `closed`\n statusDetail?: string\n /** The last UNSUPPORTED_CATALOG id seen (the catalog-update banner). */\n unsupportedCatalog?: string\n /** The latest problems (newest last, capped); a new array per change. */\n issues: readonly HostIssue[] = []\n\n constructor(private options: HostOptions = {}) {\n this.extensions = [...(options.extensions ?? [])]\n this.router = new HostRouter({ extensionIds: this.extensions.map((e) => e.id), extensions: availableExtensions(this.extensions) })\n this.functions = { ...(options.functions ?? {}) }\n this.sources = { ...(options.sources ?? {}) }\n for (const pkg of options.packages ?? []) {\n const issues = this.installPackage(pkg)\n if (issues.length) throw new PackageError(typeof pkg?.id === `string` && pkg.id ? pkg.id : `?`, issues)\n }\n }\n\n /** False for a local-only host (packages, in-memory feeds): no\n * `host_offline` state to show. */\n get hasTransport(): boolean {\n return this.options.transport !== undefined\n }\n\n // --- negotiation + registration ----------------------------------------\n\n get supportedCatalogIds(): string[] {\n return this.router.supportedCatalogIds\n }\n\n clientCapabilities() {\n return clientCapabilities(this.extensions.map((e) => e.id))\n }\n\n get extensionDefs(): readonly ExtensionDef[] {\n return this.extensions\n }\n\n registerExtension(ext: ExtensionDef): void {\n if (this.extensions.some((e) => e.id === ext.id)) return\n this.extensions.push(ext)\n this.router.registerExtension(ext.id, availableExtensions([ext])[0])\n for (const store of this.stores.values()) store.invalidate()\n }\n\n registerFunction(name: string, fn: HostFunction): void {\n this.functions[name] = fn\n }\n\n registerSource(scheme: string, resolver: SourceResolvers[string]): void {\n this.sources[scheme.toLowerCase()] = resolver\n }\n\n /** Install a package; its validation issues are returned AND reported\n * (`issues`, `onIssue`). A package with issues is not installed. */\n installPackage(pkg: AppPackage): PackageIssue[] {\n const issues = this.router.installPackage(pkg)\n const packageId = typeof pkg?.id === `string` ? pkg.id : undefined\n for (const i of issues) this.report({ code: `PACKAGE_INVALID`, message: i.message, path: i.path, ...(packageId ? { packageId } : {}) })\n return issues\n }\n\n private report(issue: HostIssue): void {\n const next = [...this.issues, issue]\n this.issues = next.length > MAX_ISSUES ? next.slice(next.length - MAX_ISSUES) : next\n this.options.onIssue?.(issue)\n this.notify()\n }\n\n // --- surfaces -----------------------------------------------------------\n\n surface(id: string): SurfaceStore | undefined {\n return this.stores.get(id)\n }\n\n surfaceIds(): string[] {\n return [...this.stores.keys()]\n }\n\n subscribe(listener: Listener): () => void {\n this.listeners.add(listener)\n return () => this.listeners.delete(listener)\n }\n\n private notify(): void {\n for (const l of [...this.listeners]) l()\n }\n\n // --- transport ----------------------------------------------------------\n\n connect(): void {\n const t = this.options.transport\n if (!t) return\n t.start(\n (m) => this.receive(m),\n (status, detail) => {\n this.status = status\n this.statusDetail = detail\n this.notify()\n }\n )\n }\n\n close(): void {\n this.options.transport?.close()\n for (const id of this.surfaceIds()) this.perform({ op: `delete`, surfaceId: id })\n }\n\n /** One server message (a transport calls this; tests and in-memory hosts\n * may call it directly). */\n receive(message: unknown): HostOp[] {\n const ops = this.router.route(message)\n for (const op of ops) this.perform(op)\n return ops\n }\n\n send(message: ClientMessage): void {\n void this.options.transport?.send(message)\n this.options.onSend?.(message)\n if (`error` in message) {\n const e = message.error\n this.report({ code: e.code, message: e.message, ...(e.surfaceId ? { surfaceId: e.surfaceId } : {}), ...(e.path !== undefined ? { path: e.path } : {}) })\n }\n }\n\n private perform(op: HostOp): void {\n this.options.onOp?.(op)\n switch (op.op) {\n case `create`: {\n this.unbind(op.surfaceId)\n this.forgetPaintErrors(op.surfaceId)\n const store = new SurfaceStore(op.surfaceId, op.catalogId, () => this.extensions)\n store.sendDataModel = op.sendDataModel === true\n store.packageId = this.router.surface(op.surfaceId)?.packageId\n if (op.theme !== undefined && op.theme !== null) {\n const { theme, issues } = resolveSurfaceTheme(op.theme)\n if (theme) store.theme = theme\n else this.send(errorMessage(`VALIDATION_FAILED`, op.surfaceId, `createSurface.theme is unusable: ${issues.join(`; `)}`, `/createSurface/theme`))\n }\n this.stores.set(op.surfaceId, store)\n this.notify()\n return\n }\n case `components`: {\n // An updated component's failures are forgotten (its props\n // changed: it may paint now, or fail anew); the rest stay reported.\n const failed = this.paintErrors.get(op.surfaceId)\n if (failed) for (const c of op.components) failed.delete(c.id)\n this.stores.get(op.surfaceId)?.setComponents(op.components)\n return\n }\n case `data`: {\n const error = this.stores.get(op.surfaceId)?.setData(op.path, op.value)\n if (error) this.send(errorMessage(`VALIDATION_FAILED`, op.surfaceId, error, op.path || `/`))\n return\n }\n case `bind`: {\n const store = this.stores.get(op.surfaceId)\n const source = parseSource(op.source)\n const resolver = source ? this.sources[source.scheme] : undefined\n if (!store || !source) return\n if (!resolver) {\n this.send(errorMessage(`VALIDATION_FAILED`, op.surfaceId, `no resolver for the source scheme ${source.scheme}`, op.path || `/`))\n return\n }\n const earlier = this.subscriptions.get(op.surfaceId) ?? []\n for (const sub of earlier) if (sub.path === op.path) sub.cancel()\n const kept = earlier.filter((sub) => sub.path !== op.path)\n const cancel = resolver(source, (value) => this.stores.get(op.surfaceId)?.setData(op.path, value))\n this.subscriptions.set(op.surfaceId, cancel ? [...kept, { path: op.path, cancel }] : kept)\n return\n }\n case `delete`:\n this.unbind(op.surfaceId)\n this.forgetPaintErrors(op.surfaceId)\n this.stores.delete(op.surfaceId)\n this.notify()\n return\n case `send`: {\n const err = `error` in op.message ? op.message.error : undefined\n if (err?.code === `UNSUPPORTED_CATALOG`) {\n this.unsupportedCatalog = err.message.replace(/^catalog (\\S+).*$/, `$1`)\n this.notify()\n }\n this.send(op.message)\n return\n }\n }\n }\n\n private unbind(surfaceId: string): void {\n for (const sub of this.subscriptions.get(surfaceId) ?? []) sub.cancel()\n this.subscriptions.delete(surfaceId)\n }\n\n // --- interactions out ---------------------------------------------------\n\n /** A component's server event: the A2UI client action message. */\n action(event: { surfaceId: string; componentId: string; name: string; context?: Record<string, unknown>; payload?: Record<string, unknown>; timestamp?: string }): ClientMessage {\n const message = actionMessage({\n name: event.name,\n surfaceId: event.surfaceId,\n sourceComponentId: event.componentId,\n timestamp: event.timestamp ?? new Date().toISOString(),\n context: event.context ?? {},\n payload: event.payload,\n })\n this.send(message)\n return message\n }\n\n /** The policy decision for a call, before any consent hook. */\n decide(surfaceId: string, name: string): FunctionDecision {\n // Own names only: `constructor` is not a registered function (VAPP-107).\n const registered = Object.prototype.hasOwnProperty.call(this.functions, name)\n let decision = decideFunction(this.options.policy?.functions, name, registered)\n const pkgId = this.stores.get(surfaceId)?.packageId\n const pkg = pkgId ? this.router.package(pkgId) : undefined\n if (pkg) decision = combineDecisions(decision, decideFunction(packagePolicy(pkg.functions), name, registered))\n return decision\n }\n\n /** An action `functionCall` to a host function: gate, consent, run. A\n * built-in other than openUrl and bind has no effect as an action. */\n async callFunction(call: FunctionCallInfo): Promise<FunctionOutcome> {\n if (call.name === `openUrl`) {\n const url = typeof call.args.url === `string` ? call.args.url : ``\n return { decision: this.openUrl(url) ? `allow` : `deny` }\n }\n if (call.name === `bind`) return { decision: this.bind(call.surfaceId, call.args) ? `allow` : `deny` }\n let decision = this.decide(call.surfaceId, call.name)\n if (decision === `not_found`) {\n this.send(errorMessage(`FUNCTION_NOT_FOUND`, call.surfaceId, `no function ${call.name}`))\n return { decision }\n }\n let consentError: string | undefined\n if (decision === `ask`) {\n // A throwing/rejecting consent hook is a deny, never a rejected call\n // (the painter's pending control must settle).\n let ok = false\n try {\n ok = (await this.options.policy?.onFunctionCall?.(call)) === true\n } catch (e) {\n consentError = e instanceof Error ? e.message : String(e)\n }\n if (!ok) decision = `deny`\n }\n if (decision === `deny`) {\n this.send(errorMessage(`FUNCTION_DENIED`, call.surfaceId, consentError === undefined ? `${call.name} was not allowed` : `${call.name} was not allowed: the consent hook failed: ${consentError}`))\n return consentError === undefined ? { decision } : { decision, error: consentError }\n }\n const fn = Object.prototype.hasOwnProperty.call(this.functions, call.name) ? this.functions[call.name] : undefined\n if (!fn) return { decision: `allow` }\n try {\n return { decision: `allow`, result: await fn(call.args, call) }\n } catch (e) {\n return { decision: `allow`, error: e instanceof Error ? e.message : String(e) }\n }\n }\n\n /** VAPP-122: the `bind` action: re-follow `path` from `source` with\n * `params` appended (`sourceWithParams`), through the router like a\n * server's bindDataModel (the surface's package allowlist applies; a\n * refusal is the usual SOURCE_DENIED / VALIDATION_FAILED error). True\n * when the bind op ran. */\n bind(surfaceId: string, args: Record<string, unknown>): boolean {\n const path = typeof args.path === `string` ? args.path : ``\n const source = typeof args.source === `string` ? args.source : ``\n if (!source || !this.stores.has(surfaceId)) return false\n const params = args.params && typeof args.params === `object` && !Array.isArray(args.params) ? (args.params as Record<string, unknown>) : undefined\n const ops = this.receive({ version: A2UI_VERSION, bindDataModel: { surfaceId, path, source: sourceWithParams(source, params) } })\n return ops.some((op) => op.op === `bind`)\n }\n\n /** The URL policy every href passes (relative urls against the urls' or\n * the media `baseUrl`). */\n urlPolicy(): UrlPolicy {\n return { baseUrl: this.options.policy?.media?.baseUrl, ...this.options.policy?.urls }\n }\n\n /** openUrl / Link through the URL policy. True when it opened. */\n openUrl(url: string): boolean {\n const d = decideUrl(this.urlPolicy(), url)\n if (!d.allowed || !d.url) return false\n const open = this.options.policy?.openUrl ?? ((u: string) => globalThis.window?.open(u, `_blank`, `noopener`))\n open(d.url)\n return true\n }\n\n /** A renderer's painter for `componentId` failed. Reported ONCE per\n * surface + component id (whatever the message) as an A2UI\n * `RENDER_FAILED` error (and so a host issue), and not again until that\n * component's props change (an `updateComponents` naming it, or the\n * surface re-created). A part or template-instance id counts under the\n * flat component it belongs to (`card.body` → `card`), so the record is\n * bounded by the surface's components. */\n paintError(error: { surfaceId: string; componentId: string; message: string }): void {\n const store = this.stores.get(error.surfaceId)\n let owner = error.componentId\n while (store && !store.component(owner) && owner.includes(`.`)) owner = owner.slice(0, owner.lastIndexOf(`.`))\n const current = store?.component(owner)\n let failed = this.paintErrors.get(error.surfaceId)\n if (!failed) this.paintErrors.set(error.surfaceId, (failed = new Map()))\n let entry = failed.get(owner)\n if (!entry || entry.component !== current) failed.set(owner, (entry = { component: current, ids: new Set() }))\n if (entry.ids.has(error.componentId)) return\n entry.ids.add(error.componentId)\n this.send(errorMessage(RENDER_FAILED, error.surfaceId, error.message, `/components/${error.componentId}`))\n }\n\n private forgetPaintErrors(surfaceId: string): void {\n this.paintErrors.delete(surfaceId)\n }\n\n /** The media policy every src passes (`policy.media`). */\n mediaOptions(): MediaOptions | undefined {\n return this.options.policy?.media\n }\n\n /** The image loader's request (absolute url + auth headers). */\n mediaRequest(url: string): MediaRequest | null {\n return mediaRequest(url, this.options.policy?.media)\n }\n}\n",
|
|
26
27
|
"// VAPP-91: the transport adapters the TS SDK ships. Each speaks A2UI\n// messages in and client messages out through the shared decoders; none\n// knows anything about the host behind it. Web platform APIs only (fetch,\n// WebSocket, TextDecoder): browsers, Bun, Node ≥ 22.\n\nimport type { ClientMessage } from \"./contract\"\nimport { JsonlDecoder, SseDecoder, decodeJsonl, mcpActionCall, messagesFromMcpResult } from \"./decoders\"\nimport type { Decoded } from \"./decoders\"\nimport type { Transport, TransportStatus } from \"./runtime\"\n\ntype Receive = (message: unknown) => void\ntype Status = (status: TransportStatus, detail?: string) => void\n\n/** In-memory: `feed` messages in, read what the host sent from `sent`. */\nexport class MemoryTransport implements Transport {\n readonly sent: ClientMessage[] = []\n private receiveFn?: Receive\n private pending: unknown[] = []\n onSend?: (message: ClientMessage) => void\n\n start(receive: Receive, status: Status): void {\n this.receiveFn = receive\n status(`open`)\n const queued = this.pending\n this.pending = []\n queued.forEach(receive)\n }\n\n feed(...messages: unknown[]): void {\n if (!this.receiveFn) this.pending.push(...messages)\n else messages.forEach(this.receiveFn)\n }\n\n /** JSONL text, as a stream server would send it. */\n feedJsonl(text: string): void {\n this.feed(...decodeJsonl(text).messages)\n }\n\n send(message: ClientMessage): void {\n this.sent.push(message)\n this.onSend?.(message)\n }\n\n close(): void {\n this.receiveFn = undefined\n }\n}\n\nexport interface HttpTransportOptions {\n /** The stream to read (GET). */\n url: string\n /** Where client messages go (POST, JSON body); default `url`. */\n postUrl?: string\n headers?: Record<string, string>\n /** Reconnect after a drop (an error or an aborted stream), ms (0 =\n * never). Default 2000. */\n reconnectMs?: number\n /** Reconnect after a CLEAN end of the stream too (the server resumes it).\n * Default false: a stream that ends is done (status `closed`). An SSE\n * stream that sent a `retry:` field signals this itself. */\n resumable?: boolean\n fetch?: typeof fetch\n}\n\nabstract class StreamTransport implements Transport {\n private controller?: AbortController\n /** Bumped by every start/close: a loop whose generation is stale exits\n * (an old loop asleep in its reconnect wait never runs beside a new\n * one). */\n private generation = 0\n\n constructor(protected options: HttpTransportOptions) {}\n\n protected abstract decoder(): { push(chunk: string): Decoded; end(): Decoded; retryMs?: number }\n protected abstract accept(): string\n\n start(receive: Receive, status: Status): void {\n this.controller?.abort()\n const gen = ++this.generation\n void this.run(gen, receive, status)\n }\n\n private async run(gen: number, receive: Receive, status: Status): Promise<void> {\n const f = this.options.fetch ?? fetch\n const live = () => gen === this.generation\n while (live()) {\n const controller = new AbortController()\n this.controller = controller\n status(`connecting`)\n let wait = this.options.reconnectMs ?? 2000\n try {\n const res = await f(this.options.url, { headers: { accept: this.accept(), ...this.options.headers }, signal: controller.signal })\n if (!live()) return\n if (!res.ok || !res.body) throw new Error(`HTTP ${res.status}`)\n status(`open`)\n const reader = res.body.getReader()\n const text = new TextDecoder()\n const dec = this.decoder()\n for (;;) {\n const { done, value } = await reader.read()\n if (!live()) return\n if (done) break\n dec.push(text.decode(value, { stream: true })).messages.forEach(receive)\n }\n dec.end().messages.forEach(receive)\n status(`closed`)\n // A clean end: done, unless the server said it resumes the stream.\n const resumable = this.options.resumable === true || dec.retryMs !== undefined\n if (!resumable) {\n if (live()) this.generation += 1\n return\n }\n if (dec.retryMs !== undefined && this.options.reconnectMs === undefined) wait = dec.retryMs\n } catch (e) {\n if (!live()) return\n status(`error`, e instanceof Error ? e.message : String(e))\n }\n if (!wait || !live()) return\n await new Promise((r) => setTimeout(r, wait))\n }\n }\n\n async send(message: ClientMessage): Promise<void> {\n const f = this.options.fetch ?? fetch\n await f(this.options.postUrl ?? this.options.url, { method: `POST`, headers: { \"content-type\": `application/json`, ...this.options.headers }, body: JSON.stringify(message) })\n }\n\n close(): void {\n this.generation += 1\n this.controller?.abort()\n }\n}\n\n/** A2UI JSONL over a streamed HTTP response (`application/jsonl`). */\nexport class JsonlStreamTransport extends StreamTransport {\n protected decoder() {\n return new JsonlDecoder()\n }\n protected accept() {\n return `application/jsonl, application/x-ndjson`\n }\n}\n\n/** Server-Sent Events read through fetch (headers allowed, unlike\n * EventSource). */\nexport class SseTransport extends StreamTransport {\n protected decoder() {\n return new SseDecoder()\n }\n protected accept() {\n return `text/event-stream`\n }\n}\n\n/** One A2UI message (or JSONL) per frame; client messages go back as\n * frames. */\nexport class WebSocketTransport implements Transport {\n private socket?: WebSocket\n /** Bumped by every start/close: a stale socket's reconnect timer is a\n * no-op. */\n private generation = 0\n\n constructor(private options: { url: string; protocols?: string | string[]; reconnectMs?: number; WebSocket?: typeof WebSocket }) {}\n\n start(receive: Receive, status: Status): void {\n const gen = ++this.generation\n const live = () => gen === this.generation\n const WS = this.options.WebSocket ?? WebSocket\n status(`connecting`)\n const socket = new WS(this.options.url, this.options.protocols)\n this.socket = socket\n socket.onopen = () => live() && status(`open`)\n socket.onmessage = (ev) => {\n if (live() && typeof ev.data === `string`) decodeJsonl(ev.data).messages.forEach(receive)\n }\n socket.onerror = () => live() && status(`error`, `websocket error`)\n socket.onclose = () => {\n if (!live()) return\n status(`closed`)\n const wait = this.options.reconnectMs ?? 2000\n if (wait) setTimeout(() => live() && this.start(receive, status), wait)\n }\n }\n\n send(message: ClientMessage): void {\n if (this.socket?.readyState === 1) this.socket.send(JSON.stringify(message))\n }\n\n close(): void {\n this.generation += 1\n this.socket?.close()\n }\n}\n\nexport interface McpTransportOptions {\n /** The MCP server's streamable-HTTP endpoint. */\n url: string\n /** The tool whose result carries the surface (called once at start). */\n tool: string\n arguments?: Record<string, unknown>\n /** The tool client messages go to; default `a2ui_event`. */\n actionTool?: string\n headers?: Record<string, string>\n fetch?: typeof fetch\n}\n\n/** A2UI over MCP: calls `tool`, delivers the A2UI resources in its result,\n * and sends every client message as a tools/call to `actionTool` (its\n * result may carry more messages). JSON-RPC over plain POST; an SSE\n * response body is read through the SSE decoder. */\nexport class McpTransport implements Transport {\n private id = 0\n private receiveFn?: Receive\n private session?: string\n\n constructor(private options: McpTransportOptions) {}\n\n start(receive: Receive, status: Status): void {\n this.receiveFn = receive\n status(`connecting`)\n void (async () => {\n try {\n await this.rpc(`initialize`, { protocolVersion: `2025-06-18`, capabilities: {}, clientInfo: { name: `exponential-ui`, version: `0.1.0` } })\n const result = await this.rpc(`tools/call`, { name: this.options.tool, arguments: this.options.arguments ?? {} })\n status(`open`)\n messagesFromMcpResult(result).messages.forEach(receive)\n } catch (e) {\n status(`error`, e instanceof Error ? e.message : String(e))\n }\n })()\n }\n\n async send(message: ClientMessage): Promise<void> {\n const call = mcpActionCall(message, this.options.actionTool)\n const result = await this.rpc(call.method, call.params)\n if (this.receiveFn) messagesFromMcpResult(result).messages.forEach(this.receiveFn)\n }\n\n close(): void {\n this.receiveFn = undefined\n }\n\n private async rpc(method: string, params: unknown): Promise<unknown> {\n const f = this.options.fetch ?? fetch\n const id = ++this.id\n const res = await f(this.options.url, {\n method: `POST`,\n headers: { \"content-type\": `application/json`, accept: `application/json, text/event-stream`, ...(this.session ? { \"mcp-session-id\": this.session } : {}), ...this.options.headers },\n body: JSON.stringify({ jsonrpc: `2.0`, id, method, params }),\n })\n const session = res.headers.get(`mcp-session-id`)\n if (session) this.session = session\n if (!res.ok) throw new Error(`MCP HTTP ${res.status}`)\n const type = res.headers.get(`content-type`) ?? ``\n const body = await res.text()\n const replies = type.includes(`text/event-stream`) ? (() => {\n const d = new SseDecoder()\n return [...d.push(body).messages, ...d.end().messages]\n })() : [JSON.parse(body)]\n const reply = replies.find((r) => (r as { id?: number })?.id === id) as { result?: unknown; error?: { message?: string } } | undefined\n if (!reply) throw new Error(`MCP: no reply to ${method}`)\n if (reply.error) throw new Error(`MCP: ${reply.error.message ?? `error`}`)\n return reply.result\n }\n}\n"
|
|
27
28
|
],
|
|
28
|
-
"mappings": "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",
|
|
29
|
-
"debugId": "
|
|
29
|
+
"mappings": "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",
|
|
30
|
+
"debugId": "6B9F22BC0C90043D64756E2164756E21",
|
|
30
31
|
"names": []
|
|
31
32
|
}
|