@exponential_app/eui 0.2.1 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (452) hide show
  1. package/catalog/a11y.json +25 -1
  2. package/catalog/core.catalog.json +426 -6
  3. package/catalog/core.schema.json +634 -4
  4. package/catalog/host.json +10 -0
  5. package/catalog/layout.json +3 -2
  6. package/catalog/limits.json +10 -1
  7. package/catalog/macros.json +542 -1
  8. package/catalog/recipes.json +4 -2
  9. package/catalog/strings.json +14 -2
  10. package/catalog/style.json +21 -0
  11. package/catalog/theme.schema.json +3950 -1337
  12. package/conformance/manifest.json +5 -5
  13. package/conformance/motion/build-corpus.ts +232 -0
  14. package/conformance/motion/corpus/SOURCES.md +117 -0
  15. package/conformance/motion/corpus/images/footage_0.json +1 -0
  16. package/conformance/motion/corpus/images/img_0.jpg +0 -0
  17. package/conformance/motion/corpus/images/img_1.jpg +0 -0
  18. package/conformance/motion/corpus/images/triangle.png +0 -0
  19. package/conformance/motion/corpus/skottie-3d-parenting-nocamera.json +367 -0
  20. package/conformance/motion/corpus/skottie-auto-orient-2.json +292 -0
  21. package/conformance/motion/corpus/skottie-auto-orient.json +717 -0
  22. package/conformance/motion/corpus/skottie-bezier-extranormal.json +199 -0
  23. package/conformance/motion/corpus/skottie-blendmode-hardmix.json +558 -0
  24. package/conformance/motion/corpus/skottie-chained-mattes.json +259 -0
  25. package/conformance/motion/corpus/skottie-dropshadow-ramp.json +852 -0
  26. package/conformance/motion/corpus/skottie-dropshadow-style.json +278 -0
  27. package/conformance/motion/corpus/skottie-effects-transform.json +385 -0
  28. package/conformance/motion/corpus/skottie-fill-effect.json +358 -0
  29. package/conformance/motion/corpus/skottie-fill-rule.json +457 -0
  30. package/conformance/motion/corpus/skottie-gaussian-blur.json +670 -0
  31. package/conformance/motion/corpus/skottie-gradient-opacity.json +451 -0
  32. package/conformance/motion/corpus/skottie-gradient-radial-highlight.json +581 -0
  33. package/conformance/motion/corpus/skottie-hidden-shapes-layers.json +381 -0
  34. package/conformance/motion/corpus/skottie-huesaturation-effect.json +1117 -0
  35. package/conformance/motion/corpus/skottie-invert-effect.json +665 -0
  36. package/conformance/motion/corpus/skottie-luma-matte.json +239 -0
  37. package/conformance/motion/corpus/skottie-mask-feather.json +892 -0
  38. package/conformance/motion/corpus/skottie-masking-opaque.json +2376 -0
  39. package/conformance/motion/corpus/skottie-masking-translucent.json +2376 -0
  40. package/conformance/motion/corpus/skottie-matte-blendmode.json +196 -0
  41. package/conformance/motion/corpus/skottie-matte-nonsequential.json +722 -0
  42. package/conformance/motion/corpus/skottie-matte-visible.json +666 -0
  43. package/conformance/motion/corpus/skottie-mergepaths-effect.json +722 -0
  44. package/conformance/motion/corpus/skottie-motion-blur-mask.json +120 -0
  45. package/conformance/motion/corpus/skottie-nested-animation.json +253 -0
  46. package/conformance/motion/corpus/skottie-offsetpaths-effect.json +525 -0
  47. package/conformance/motion/corpus/skottie-phonehub-connecting.json +947 -0
  48. package/conformance/motion/corpus/skottie-puckerbloat-effect.json +339 -0
  49. package/conformance/motion/corpus/skottie-repeater.json +234 -0
  50. package/conformance/motion/corpus/skottie-sample-1.json +168 -0
  51. package/conformance/motion/corpus/skottie-sample-search.json +329 -0
  52. package/conformance/motion/corpus/skottie-spatial-supernormal.json +898 -0
  53. package/conformance/motion/corpus/skottie-text-animator-1.json +1286 -0
  54. package/conformance/motion/corpus/skottie-text-fill-over-stroke.json +1014 -0
  55. package/conformance/motion/corpus/skottie-text-tracking.json +950 -0
  56. package/conformance/motion/corpus/skottie-text-valign.json +484 -0
  57. package/conformance/motion/corpus/skottie-time-reverse.json +297 -0
  58. package/conformance/motion/corpus/skottie-transform-skew.json +290 -0
  59. package/conformance/motion/corpus/skottie-trimpath-fill.json +933 -0
  60. package/conformance/motion/corpus/skottie-trimpath-modes.json +266 -0
  61. package/conformance/motion/corpus/skottie-tritone-effect.json +379 -0
  62. package/conformance/motion/corpus/spec-blend-mode.json +531 -0
  63. package/conformance/motion/corpus/spec-ellipse.json +142 -0
  64. package/conformance/motion/corpus/spec-fill.json +193 -0
  65. package/conformance/motion/corpus/spec-gradient-stroke.json +1263 -0
  66. package/conformance/motion/corpus/spec-gradient.json +1255 -0
  67. package/conformance/motion/corpus/spec-mask.json +773 -0
  68. package/conformance/motion/corpus/spec-masks.json +676 -0
  69. package/conformance/motion/corpus/spec-matte.json +390 -0
  70. package/conformance/motion/corpus/spec-metadata.json +1 -0
  71. package/conformance/motion/corpus/spec-path.json +177 -0
  72. package/conformance/motion/corpus/spec-pucker-bloat.json +179 -0
  73. package/conformance/motion/corpus/spec-rectangle.json +145 -0
  74. package/conformance/motion/corpus/spec-rounded-corners.json +187 -0
  75. package/conformance/motion/corpus/spec-slots.json +325 -0
  76. package/conformance/motion/corpus/spec-star.json +159 -0
  77. package/conformance/motion/corpus/spec-stroke.json +156 -0
  78. package/conformance/motion/corpus/spec-test-ellipse-xy-pos.json +141 -0
  79. package/conformance/motion/corpus/spec-test-gradient-fill.json +1 -0
  80. package/conformance/motion/corpus/spec-test-gradient-stroke.json +229 -0
  81. package/conformance/motion/corpus/spec-test-unknown-shape.json +63 -0
  82. package/conformance/motion/corpus/spec-time-remap.json +1090 -0
  83. package/conformance/motion/corpus/spec-time-stretch.json +594 -0
  84. package/conformance/motion/corpus/spec-transform.json +273 -0
  85. package/conformance/motion/corpus/spec-trim-path.json +209 -0
  86. package/conformance/motion/corpus/web-adrock.json +1 -0
  87. package/conformance/motion/corpus/web-bacon.json +1 -0
  88. package/conformance/motion/corpus/web-banner.json +1 -0
  89. package/conformance/motion/corpus/web-bodymovin.json +1 -0
  90. package/conformance/motion/corpus/web-dalek.json +1 -0
  91. package/conformance/motion/corpus/web-footage-data.json +1 -0
  92. package/conformance/motion/corpus/web-lights.json +1 -0
  93. package/conformance/motion/corpus/web-ripple.json +1 -0
  94. package/conformance/motion/corpus/web-starfish.json +1 -0
  95. package/conformance/motion/known-gaps.json +35 -0
  96. package/conformance/motion/parity/group-transforms-parenting@0.png +0 -0
  97. package/conformance/motion/parity/group-transforms-parenting@10.png +0 -0
  98. package/conformance/motion/parity/hidden-unknown-inactive@0.png +0 -0
  99. package/conformance/motion/parity/keyframes-transform@0.png +0 -0
  100. package/conformance/motion/parity/keyframes-transform@10.png +0 -0
  101. package/conformance/motion/parity/keyframes-transform@15.png +0 -0
  102. package/conformance/motion/parity/keyframes-transform@5.png +0 -0
  103. package/conformance/motion/parity/layer-opacity-blend@0.png +0 -0
  104. package/conformance/motion/parity/linear-gradient@0.png +0 -0
  105. package/conformance/motion/parity/masks-modes@0.png +0 -0
  106. package/conformance/motion/parity/matte-alpha@0.png +0 -0
  107. package/conformance/motion/parity/matte-luma@0.png +0 -0
  108. package/conformance/motion/parity/matte-parent-tp@0.png +0 -0
  109. package/conformance/motion/parity/path-evenodd@0.png +0 -0
  110. package/conformance/motion/parity/precomp-clip-offset@0.png +0 -0
  111. package/conformance/motion/parity/precomp-clip-offset@15.png +0 -0
  112. package/conformance/motion/parity/precomp-clip-offset@5.png +0 -0
  113. package/conformance/motion/parity/radial-gradient-highlight@0.png +0 -0
  114. package/conformance/motion/parity/rect-solid-fill@0.png +0 -0
  115. package/conformance/motion/parity/repeater@0.png +0 -0
  116. package/conformance/motion/parity/rounded-rect-ellipse@0.png +0 -0
  117. package/conformance/motion/parity/solid-and-image@0.png +0 -0
  118. package/conformance/motion/parity/split-position-skew@0.png +0 -0
  119. package/conformance/motion/parity/split-position-skew@10.png +0 -0
  120. package/conformance/motion/parity/star-polygon@0.png +0 -0
  121. package/conformance/motion/parity/stroke-caps-joins@0.png +0 -0
  122. package/conformance/motion/parity/stroke-dashes@0.png +0 -0
  123. package/conformance/motion/parity/stroke-dashes@10.png +0 -0
  124. package/conformance/motion/parity/time-remap@0.png +0 -0
  125. package/conformance/motion/parity/time-remap@10.png +0 -0
  126. package/conformance/motion/parity/time-remap@19.png +0 -0
  127. package/conformance/motion/parity/time-stretch@0.png +0 -0
  128. package/conformance/motion/parity/time-stretch@10.png +0 -0
  129. package/conformance/motion/parity/trim-individually@0.png +0 -0
  130. package/conformance/motion/parity/trim-path@0.png +0 -0
  131. package/conformance/motion/parity/trim-path@10.png +0 -0
  132. package/conformance/motion/refs/index.json +688 -0
  133. package/conformance/motion/refs/skottie-3d-parenting-nocamera@0.png +0 -0
  134. package/conformance/motion/refs/skottie-3d-parenting-nocamera@150.png +0 -0
  135. package/conformance/motion/refs/skottie-3d-parenting-nocamera@270.png +0 -0
  136. package/conformance/motion/refs/skottie-auto-orient-2@0.png +0 -0
  137. package/conformance/motion/refs/skottie-auto-orient-2@210.png +0 -0
  138. package/conformance/motion/refs/skottie-auto-orient-2@378.png +0 -0
  139. package/conformance/motion/refs/skottie-auto-orient@0.png +0 -0
  140. package/conformance/motion/refs/skottie-auto-orient@300.png +0 -0
  141. package/conformance/motion/refs/skottie-auto-orient@540.png +0 -0
  142. package/conformance/motion/refs/skottie-bezier-extranormal@0.png +0 -0
  143. package/conformance/motion/refs/skottie-bezier-extranormal@150.png +0 -0
  144. package/conformance/motion/refs/skottie-bezier-extranormal@270.png +0 -0
  145. package/conformance/motion/refs/skottie-blendmode-hardmix@0.png +0 -0
  146. package/conformance/motion/refs/skottie-blendmode-hardmix@150.png +0 -0
  147. package/conformance/motion/refs/skottie-blendmode-hardmix@270.png +0 -0
  148. package/conformance/motion/refs/skottie-chained-mattes@0.png +0 -0
  149. package/conformance/motion/refs/skottie-chained-mattes@300.png +0 -0
  150. package/conformance/motion/refs/skottie-chained-mattes@540.png +0 -0
  151. package/conformance/motion/refs/skottie-dropshadow-ramp@0.png +0 -0
  152. package/conformance/motion/refs/skottie-dropshadow-ramp@135.png +0 -0
  153. package/conformance/motion/refs/skottie-dropshadow-ramp@75.png +0 -0
  154. package/conformance/motion/refs/skottie-dropshadow-style@0.png +0 -0
  155. package/conformance/motion/refs/skottie-dropshadow-style@300.png +0 -0
  156. package/conformance/motion/refs/skottie-dropshadow-style@540.png +0 -0
  157. package/conformance/motion/refs/skottie-effects-transform@0.png +0 -0
  158. package/conformance/motion/refs/skottie-effects-transform@450.png +0 -0
  159. package/conformance/motion/refs/skottie-effects-transform@810.png +0 -0
  160. package/conformance/motion/refs/skottie-fill-effect@0.png +0 -0
  161. package/conformance/motion/refs/skottie-fill-effect@300.png +0 -0
  162. package/conformance/motion/refs/skottie-fill-effect@540.png +0 -0
  163. package/conformance/motion/refs/skottie-fill-rule@0.png +0 -0
  164. package/conformance/motion/refs/skottie-fill-rule@150.png +0 -0
  165. package/conformance/motion/refs/skottie-fill-rule@270.png +0 -0
  166. package/conformance/motion/refs/skottie-gaussian-blur@0.png +0 -0
  167. package/conformance/motion/refs/skottie-gaussian-blur@150.png +0 -0
  168. package/conformance/motion/refs/skottie-gaussian-blur@270.png +0 -0
  169. package/conformance/motion/refs/skottie-gradient-opacity@0.png +0 -0
  170. package/conformance/motion/refs/skottie-gradient-opacity@150.png +0 -0
  171. package/conformance/motion/refs/skottie-gradient-opacity@270.png +0 -0
  172. package/conformance/motion/refs/skottie-gradient-radial-highlight@0.png +0 -0
  173. package/conformance/motion/refs/skottie-gradient-radial-highlight@135.png +0 -0
  174. package/conformance/motion/refs/skottie-gradient-radial-highlight@75.png +0 -0
  175. package/conformance/motion/refs/skottie-hidden-shapes-layers@0.png +0 -0
  176. package/conformance/motion/refs/skottie-hidden-shapes-layers@150.png +0 -0
  177. package/conformance/motion/refs/skottie-hidden-shapes-layers@270.png +0 -0
  178. package/conformance/motion/refs/skottie-huesaturation-effect@0.png +0 -0
  179. package/conformance/motion/refs/skottie-huesaturation-effect@30.png +0 -0
  180. package/conformance/motion/refs/skottie-huesaturation-effect@54.png +0 -0
  181. package/conformance/motion/refs/skottie-invert-effect@0.png +0 -0
  182. package/conformance/motion/refs/skottie-invert-effect@300.png +0 -0
  183. package/conformance/motion/refs/skottie-invert-effect@540.png +0 -0
  184. package/conformance/motion/refs/skottie-luma-matte@0.png +0 -0
  185. package/conformance/motion/refs/skottie-luma-matte@150.png +0 -0
  186. package/conformance/motion/refs/skottie-luma-matte@270.png +0 -0
  187. package/conformance/motion/refs/skottie-mask-feather@0.png +0 -0
  188. package/conformance/motion/refs/skottie-mask-feather@150.png +0 -0
  189. package/conformance/motion/refs/skottie-mask-feather@270.png +0 -0
  190. package/conformance/motion/refs/skottie-masking-opaque@0.png +0 -0
  191. package/conformance/motion/refs/skottie-masking-opaque@135.png +0 -0
  192. package/conformance/motion/refs/skottie-masking-opaque@75.png +0 -0
  193. package/conformance/motion/refs/skottie-masking-translucent@0.png +0 -0
  194. package/conformance/motion/refs/skottie-masking-translucent@135.png +0 -0
  195. package/conformance/motion/refs/skottie-masking-translucent@75.png +0 -0
  196. package/conformance/motion/refs/skottie-matte-blendmode@0.png +0 -0
  197. package/conformance/motion/refs/skottie-matte-blendmode@150.png +0 -0
  198. package/conformance/motion/refs/skottie-matte-blendmode@270.png +0 -0
  199. package/conformance/motion/refs/skottie-matte-nonsequential@0.png +0 -0
  200. package/conformance/motion/refs/skottie-matte-nonsequential@150.png +0 -0
  201. package/conformance/motion/refs/skottie-matte-nonsequential@270.png +0 -0
  202. package/conformance/motion/refs/skottie-matte-visible@0.png +0 -0
  203. package/conformance/motion/refs/skottie-matte-visible@150.png +0 -0
  204. package/conformance/motion/refs/skottie-matte-visible@270.png +0 -0
  205. package/conformance/motion/refs/skottie-mergepaths-effect@0.png +0 -0
  206. package/conformance/motion/refs/skottie-mergepaths-effect@210.png +0 -0
  207. package/conformance/motion/refs/skottie-mergepaths-effect@378.png +0 -0
  208. package/conformance/motion/refs/skottie-motion-blur-mask@0.png +0 -0
  209. package/conformance/motion/refs/skottie-motion-blur-mask@150.png +0 -0
  210. package/conformance/motion/refs/skottie-motion-blur-mask@270.png +0 -0
  211. package/conformance/motion/refs/skottie-nested-animation@0.png +0 -0
  212. package/conformance/motion/refs/skottie-nested-animation@300.png +0 -0
  213. package/conformance/motion/refs/skottie-nested-animation@540.png +0 -0
  214. package/conformance/motion/refs/skottie-offsetpaths-effect@0.png +0 -0
  215. package/conformance/motion/refs/skottie-offsetpaths-effect@150.png +0 -0
  216. package/conformance/motion/refs/skottie-offsetpaths-effect@270.png +0 -0
  217. package/conformance/motion/refs/skottie-phonehub-connecting@0.png +0 -0
  218. package/conformance/motion/refs/skottie-puckerbloat-effect@0.png +0 -0
  219. package/conformance/motion/refs/skottie-puckerbloat-effect@210.png +0 -0
  220. package/conformance/motion/refs/skottie-puckerbloat-effect@378.png +0 -0
  221. package/conformance/motion/refs/skottie-repeater@0.png +0 -0
  222. package/conformance/motion/refs/skottie-repeater@300.png +0 -0
  223. package/conformance/motion/refs/skottie-repeater@540.png +0 -0
  224. package/conformance/motion/refs/skottie-sample-1@0.png +0 -0
  225. package/conformance/motion/refs/skottie-sample-1@100.png +0 -0
  226. package/conformance/motion/refs/skottie-sample-1@180.png +0 -0
  227. package/conformance/motion/refs/skottie-sample-search@0.png +0 -0
  228. package/conformance/motion/refs/skottie-sample-search@27.png +0 -0
  229. package/conformance/motion/refs/skottie-sample-search@48.png +0 -0
  230. package/conformance/motion/refs/skottie-spatial-supernormal@0.png +0 -0
  231. package/conformance/motion/refs/skottie-spatial-supernormal@200.png +0 -0
  232. package/conformance/motion/refs/skottie-spatial-supernormal@360.png +0 -0
  233. package/conformance/motion/refs/skottie-text-animator-1@0.png +0 -0
  234. package/conformance/motion/refs/skottie-text-animator-1@150.png +0 -0
  235. package/conformance/motion/refs/skottie-text-animator-1@270.png +0 -0
  236. package/conformance/motion/refs/skottie-text-fill-over-stroke@0.png +0 -0
  237. package/conformance/motion/refs/skottie-text-fill-over-stroke@210.png +0 -0
  238. package/conformance/motion/refs/skottie-text-fill-over-stroke@378.png +0 -0
  239. package/conformance/motion/refs/skottie-text-tracking@0.png +0 -0
  240. package/conformance/motion/refs/skottie-text-tracking@108.png +0 -0
  241. package/conformance/motion/refs/skottie-text-tracking@60.png +0 -0
  242. package/conformance/motion/refs/skottie-text-valign@0.png +0 -0
  243. package/conformance/motion/refs/skottie-text-valign@150.png +0 -0
  244. package/conformance/motion/refs/skottie-text-valign@270.png +0 -0
  245. package/conformance/motion/refs/skottie-time-reverse@0.png +0 -0
  246. package/conformance/motion/refs/skottie-time-reverse@300.png +0 -0
  247. package/conformance/motion/refs/skottie-time-reverse@540.png +0 -0
  248. package/conformance/motion/refs/skottie-transform-skew@0.png +0 -0
  249. package/conformance/motion/refs/skottie-transform-skew@300.png +0 -0
  250. package/conformance/motion/refs/skottie-transform-skew@540.png +0 -0
  251. package/conformance/motion/refs/skottie-trimpath-fill@0.png +0 -0
  252. package/conformance/motion/refs/skottie-trimpath-fill@300.png +0 -0
  253. package/conformance/motion/refs/skottie-trimpath-fill@540.png +0 -0
  254. package/conformance/motion/refs/skottie-trimpath-modes@0.png +0 -0
  255. package/conformance/motion/refs/skottie-trimpath-modes@300.png +0 -0
  256. package/conformance/motion/refs/skottie-trimpath-modes@540.png +0 -0
  257. package/conformance/motion/refs/skottie-tritone-effect@0.png +0 -0
  258. package/conformance/motion/refs/skottie-tritone-effect@300.png +0 -0
  259. package/conformance/motion/refs/skottie-tritone-effect@540.png +0 -0
  260. package/conformance/motion/refs/spec-blend-mode@0.png +0 -0
  261. package/conformance/motion/refs/spec-blend-mode@162.png +0 -0
  262. package/conformance/motion/refs/spec-blend-mode@90.png +0 -0
  263. package/conformance/motion/refs/spec-ellipse@0.png +0 -0
  264. package/conformance/motion/refs/spec-ellipse@162.png +0 -0
  265. package/conformance/motion/refs/spec-ellipse@90.png +0 -0
  266. package/conformance/motion/refs/spec-fill@0.png +0 -0
  267. package/conformance/motion/refs/spec-fill@162.png +0 -0
  268. package/conformance/motion/refs/spec-fill@90.png +0 -0
  269. package/conformance/motion/refs/spec-gradient-stroke@0.png +0 -0
  270. package/conformance/motion/refs/spec-gradient-stroke@162.png +0 -0
  271. package/conformance/motion/refs/spec-gradient-stroke@90.png +0 -0
  272. package/conformance/motion/refs/spec-gradient@0.png +0 -0
  273. package/conformance/motion/refs/spec-gradient@162.png +0 -0
  274. package/conformance/motion/refs/spec-gradient@90.png +0 -0
  275. package/conformance/motion/refs/spec-mask@0.png +0 -0
  276. package/conformance/motion/refs/spec-mask@300.png +0 -0
  277. package/conformance/motion/refs/spec-mask@540.png +0 -0
  278. package/conformance/motion/refs/spec-masks@0.png +0 -0
  279. package/conformance/motion/refs/spec-masks@135.png +0 -0
  280. package/conformance/motion/refs/spec-masks@75.png +0 -0
  281. package/conformance/motion/refs/spec-matte@0.png +0 -0
  282. package/conformance/motion/refs/spec-matte@162.png +0 -0
  283. package/conformance/motion/refs/spec-matte@90.png +0 -0
  284. package/conformance/motion/refs/spec-metadata@0.png +0 -0
  285. package/conformance/motion/refs/spec-metadata@162.png +0 -0
  286. package/conformance/motion/refs/spec-metadata@90.png +0 -0
  287. package/conformance/motion/refs/spec-path@0.png +0 -0
  288. package/conformance/motion/refs/spec-path@162.png +0 -0
  289. package/conformance/motion/refs/spec-path@90.png +0 -0
  290. package/conformance/motion/refs/spec-pucker-bloat@0.png +0 -0
  291. package/conformance/motion/refs/spec-pucker-bloat@162.png +0 -0
  292. package/conformance/motion/refs/spec-pucker-bloat@90.png +0 -0
  293. package/conformance/motion/refs/spec-rectangle@0.png +0 -0
  294. package/conformance/motion/refs/spec-rectangle@162.png +0 -0
  295. package/conformance/motion/refs/spec-rectangle@90.png +0 -0
  296. package/conformance/motion/refs/spec-rounded-corners@0.png +0 -0
  297. package/conformance/motion/refs/spec-rounded-corners@162.png +0 -0
  298. package/conformance/motion/refs/spec-rounded-corners@90.png +0 -0
  299. package/conformance/motion/refs/spec-slots@0.png +0 -0
  300. package/conformance/motion/refs/spec-slots@450.png +0 -0
  301. package/conformance/motion/refs/spec-slots@810.png +0 -0
  302. package/conformance/motion/refs/spec-star@0.png +0 -0
  303. package/conformance/motion/refs/spec-star@162.png +0 -0
  304. package/conformance/motion/refs/spec-star@90.png +0 -0
  305. package/conformance/motion/refs/spec-stroke@0.png +0 -0
  306. package/conformance/motion/refs/spec-stroke@162.png +0 -0
  307. package/conformance/motion/refs/spec-stroke@90.png +0 -0
  308. package/conformance/motion/refs/spec-test-ellipse-xy-pos@0.png +0 -0
  309. package/conformance/motion/refs/spec-test-ellipse-xy-pos@162.png +0 -0
  310. package/conformance/motion/refs/spec-test-ellipse-xy-pos@90.png +0 -0
  311. package/conformance/motion/refs/spec-test-gradient-fill@0.png +0 -0
  312. package/conformance/motion/refs/spec-test-gradient-fill@30.png +0 -0
  313. package/conformance/motion/refs/spec-test-gradient-fill@54.png +0 -0
  314. package/conformance/motion/refs/spec-test-gradient-stroke@0.png +0 -0
  315. package/conformance/motion/refs/spec-test-gradient-stroke@30.png +0 -0
  316. package/conformance/motion/refs/spec-test-gradient-stroke@54.png +0 -0
  317. package/conformance/motion/refs/spec-test-unknown-shape@0.png +0 -0
  318. package/conformance/motion/refs/spec-test-unknown-shape@162.png +0 -0
  319. package/conformance/motion/refs/spec-test-unknown-shape@90.png +0 -0
  320. package/conformance/motion/refs/spec-time-remap@0.png +0 -0
  321. package/conformance/motion/refs/spec-time-remap@300.png +0 -0
  322. package/conformance/motion/refs/spec-time-remap@540.png +0 -0
  323. package/conformance/motion/refs/spec-time-stretch@0.png +0 -0
  324. package/conformance/motion/refs/spec-time-stretch@300.png +0 -0
  325. package/conformance/motion/refs/spec-time-stretch@540.png +0 -0
  326. package/conformance/motion/refs/spec-transform@0.png +0 -0
  327. package/conformance/motion/refs/spec-transform@162.png +0 -0
  328. package/conformance/motion/refs/spec-transform@90.png +0 -0
  329. package/conformance/motion/refs/spec-trim-path@0.png +0 -0
  330. package/conformance/motion/refs/spec-trim-path@162.png +0 -0
  331. package/conformance/motion/refs/spec-trim-path@90.png +0 -0
  332. package/conformance/motion/refs/web-adrock@0.png +0 -0
  333. package/conformance/motion/refs/web-adrock@10.png +0 -0
  334. package/conformance/motion/refs/web-adrock@18.png +0 -0
  335. package/conformance/motion/refs/web-bacon@0.png +0 -0
  336. package/conformance/motion/refs/web-bacon@126.png +0 -0
  337. package/conformance/motion/refs/web-bacon@70.png +0 -0
  338. package/conformance/motion/refs/web-banner@0.png +0 -0
  339. package/conformance/motion/refs/web-banner@301.png +0 -0
  340. package/conformance/motion/refs/web-banner@542.png +0 -0
  341. package/conformance/motion/refs/web-bodymovin@0.png +0 -0
  342. package/conformance/motion/refs/web-bodymovin@51.png +0 -0
  343. package/conformance/motion/refs/web-bodymovin@92.png +0 -0
  344. package/conformance/motion/refs/web-dalek@0.png +0 -0
  345. package/conformance/motion/refs/web-dalek@145.png +0 -0
  346. package/conformance/motion/refs/web-dalek@261.png +0 -0
  347. package/conformance/motion/refs/web-footage-data@0.png +0 -0
  348. package/conformance/motion/refs/web-footage-data@180.png +0 -0
  349. package/conformance/motion/refs/web-footage-data@324.png +0 -0
  350. package/conformance/motion/refs/web-lights@0.png +0 -0
  351. package/conformance/motion/refs/web-lights@150.png +0 -0
  352. package/conformance/motion/refs/web-lights@270.png +0 -0
  353. package/conformance/motion/refs/web-ripple@0.png +0 -0
  354. package/conformance/motion/refs/web-ripple@180.png +0 -0
  355. package/conformance/motion/refs/web-ripple@324.png +0 -0
  356. package/conformance/motion/refs/web-starfish@0.png +0 -0
  357. package/conformance/motion/refs/web-starfish@150.png +0 -0
  358. package/conformance/motion/refs/web-starfish@270.png +0 -0
  359. package/conformance/motion/render-refs.ts +126 -0
  360. package/conformance/motion/report.json +1367 -0
  361. package/conformance/motion/web-parity-gaps.json +12 -0
  362. package/conformance/motion-parity-entry.ts +3 -0
  363. package/conformance/motion-parity.ts +101 -0
  364. package/dist/chunks/{index-gtk2gwsb.js → index-4xczxey5.js} +187 -40
  365. package/dist/chunks/{index-gtk2gwsb.js.map → index-4xczxey5.js.map} +7 -6
  366. package/dist/chunks/{index-62yzr94z.js → index-5sjj5p84.js} +270 -8
  367. package/dist/chunks/{index-62yzr94z.js.map → index-5sjj5p84.js.map} +2 -2
  368. package/dist/chunks/{index-fy7y2nz8.js → index-cvf7bbs5.js} +23 -2
  369. package/dist/chunks/{index-fy7y2nz8.js.map → index-cvf7bbs5.js.map} +1 -1
  370. package/dist/chunks/index-dgkf6yw5.js +48 -0
  371. package/dist/chunks/index-dgkf6yw5.js.map +10 -0
  372. package/dist/chunks/{index-5fmaa0xq.js → index-f9wkb6aq.js} +851 -36
  373. package/dist/chunks/{index-5fmaa0xq.js.map → index-f9wkb6aq.js.map} +2 -2
  374. package/dist/chunks/index-t2mwfbb6.js +1515 -0
  375. package/dist/chunks/index-t2mwfbb6.js.map +15 -0
  376. package/dist/chunks/{index-bg2jsgjq.js → index-vkn82srs.js} +479 -10
  377. package/dist/chunks/{index-bg2jsgjq.js.map → index-vkn82srs.js.map} +2 -2
  378. package/dist/chunks/wasm-ctcc3cma.js +424 -0
  379. package/dist/chunks/wasm-ctcc3cma.js.map +11 -0
  380. package/dist/conformance.js +10941 -563
  381. package/dist/conformance.js.map +2 -2
  382. package/dist/entries/prompt.js +2 -2
  383. package/dist/entries/schema.js +3 -3
  384. package/dist/host/index.js +20 -4
  385. package/dist/host/index.js.map +1 -1
  386. package/dist/index.js +364 -99
  387. package/dist/index.js.map +4 -4
  388. package/dist/types/src/catalog.generated.d.ts +71 -5
  389. package/dist/types/src/host/contract.d.ts +17 -0
  390. package/dist/types/src/host/exposes.d.ts +68 -0
  391. package/dist/types/src/host/index.d.ts +1 -0
  392. package/dist/types/src/host/package.d.ts +8 -0
  393. package/dist/types/src/index.d.ts +2 -0
  394. package/dist/types/src/layout.d.ts +2 -0
  395. package/dist/types/src/limits.d.ts +1 -0
  396. package/dist/types/src/motion/index.d.ts +1 -0
  397. package/dist/types/src/motion/server.d.ts +9 -0
  398. package/dist/types/src/motion/wasm.d.ts +11 -0
  399. package/dist/types/src/web/coerce.d.ts +3 -0
  400. package/dist/types/src/web/focus.d.ts +8 -0
  401. package/dist/types/src/web/index.d.ts +5 -2
  402. package/dist/types/src/web/primitives/carousel.d.ts +17 -0
  403. package/dist/types/src/web/primitives/dock.d.ts +5 -2
  404. package/dist/types/src/web/primitives/index.d.ts +5 -0
  405. package/dist/types/src/web/primitives/mosaic.d.ts +30 -0
  406. package/dist/types/src/web/primitives/motion-paint.d.ts +36 -0
  407. package/dist/types/src/web/primitives/motion.d.ts +162 -0
  408. package/dist/types/src/web/primitives/outline.d.ts +22 -0
  409. package/dist/types/src/web/primitives/zoomable-image.d.ts +158 -0
  410. package/dist/types/src/web/table.d.ts +8 -0
  411. package/dist/types/src/zoom.d.ts +128 -0
  412. package/dist/types/wasm/motion/bytes.d.ts +1 -0
  413. package/dist/web/index.js +171 -230
  414. package/dist/web/index.js.map +9 -10
  415. package/dist/web/primitives/index.js +641 -6
  416. package/dist/web/primitives/index.js.map +9 -5
  417. package/docs/components.generated.json +542 -5
  418. package/docs/package-format.md +56 -1
  419. package/docs/round-6-contract.md +110 -0
  420. package/docs/themes.generated.json +66 -2
  421. package/fixtures/bind-time.json +1468 -0
  422. package/fixtures/catalog-components.json +1026 -16
  423. package/fixtures/catalog-macros.json +1279 -157
  424. package/fixtures/conformance-baseline.json +48893 -47200
  425. package/fixtures/conformance-known.json +140 -134
  426. package/fixtures/host-router.json +539 -1
  427. package/fixtures/kitchen-sink.expanded.json +686 -1
  428. package/fixtures/kitchen-sink.json +102 -1
  429. package/fixtures/layout-geometry-round1.json +42 -42
  430. package/fixtures/motion-frames.json +2618 -0
  431. package/fixtures/motion-playback.json +528 -0
  432. package/fixtures/motion-state.json +722 -0
  433. package/fixtures/motion-validate.json +138 -0
  434. package/fixtures/primitive-specimens.json +4 -0
  435. package/fixtures/prompt-budget.json +16 -16
  436. package/fixtures/specimens.json +839 -21
  437. package/fixtures/theme-recipes.json +32808 -28396
  438. package/fixtures/theme-resolved.json +2114 -286
  439. package/fixtures/zoom.json +1382 -0
  440. package/generated/ExponentialUICatalog.generated.kt +21 -21
  441. package/generated/ExponentialUICatalog.generated.swift +21 -21
  442. package/generated/ExponentialUIThemes.generated.kt +7 -7
  443. package/generated/ExponentialUIThemes.generated.swift +7 -7
  444. package/generated/catalog.descriptions.generated.rs +1 -1
  445. package/generated/catalog.generated.rs +30 -30
  446. package/generated/catalog.themes.generated.rs +8 -8
  447. package/generated/core.descriptions.json +267 -5
  448. package/generated/core.runtime.json +275 -1
  449. package/package.json +1 -1
  450. package/themes/neutral.theme.json +460 -3
  451. package/dist/chunks/index-t6qz1770.js +0 -95
  452. package/dist/chunks/index-t6qz1770.js.map +0 -11
@@ -1,12 +1,12 @@
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\",\"ZoomableImage\",\"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\",\"Motion\"] as const\nexport type ComponentName = (typeof COMPONENT_NAMES)[number]\nexport const NATIVE_COMPONENTS = [\"Box\",\"List\",\"Resizable\",\"Text\",\"Markdown\",\"CodeBlock\",\"Image\",\"ZoomableImage\",\"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\",\"Motion\"] 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\",\"Motion\"] 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\",\"ZoomableImage\":\"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\",\"Motion\":\"media\"}\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\",\"ZoomableImage\":\"exponential-ui-zoomable-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\",\"Motion\":\"exponential-ui-motion\"}\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 zoomInitial: [\"auto\",\"fit\",\"fitWidth\",\"actual\"],\n zoomControls: [\"auto\",\"always\",\"none\"],\n motionDirection: [\"forward\",\"reverse\",\"alternate\"],\n motionFit: [\"contain\",\"cover\",\"fill\"],\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]\nexport type ZoomInitialValue = (typeof ENUMS)[\"zoomInitial\"][number]\nexport type ZoomControlsValue = (typeof ENUMS)[\"zoomControls\"][number]\nexport type MotionDirectionValue = (typeof ENUMS)[\"motionDirection\"][number]\nexport type MotionFitValue = (typeof ENUMS)[\"motionFit\"][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\",\"ci-failed\",\"ci-passed\",\"ci-queued\",\"ci-running\",\"ci-skipped\",\"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-agent-signed-out\",\"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; truncate?: boolean }\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 ZoomableImage: { src: string | Dynamic; alt: string | Dynamic; naturalWidth?: number; naturalHeight?: number; initial?: ZoomInitialValue; maxScale?: number; controls?: ZoomControlsValue; scale?: number | Dynamic; 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 Motion: { layers?: Record<string, unknown>[]; size?: number[]; duration?: number; fps?: number; assets?: Record<string, unknown>; markers?: Record<string, unknown>[]; lottie?: Record<string, unknown>; src?: string; autoplay?: boolean; loop?: boolean; plays?: number; direction?: MotionDirectionValue; speed?: number; segment?: number[]; marker?: string; progress?: number | Dynamic; play?: boolean | Dynamic; poster?: number; fit?: MotionFitValue; slots?: Record<string, unknown>; stateMachine?: Record<string, unknown>; inputs?: Record<string, unknown> | Dynamic; label?: string; style?: Style }\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",
9
- "// VAPP-103: the input limits (catalog/limits.json), one place for the TS\n// reference and the generated constants of every target. Past a limit the\n// core reports an issue and does no work.\n\nimport limitsJson from \"../catalog/limits.json\" with { type: \"json\" }\n\nexport const LIMITS: Readonly<Record<string, number>> = Object.fromEntries(Object.entries(limitsJson).filter(([k]) => !k.startsWith(`$`))) as Record<string, number>\n/** Nodes the reducer places in one surface's tree (template nodes included). */\nexport const MAX_COMPONENTS: number = limitsJson.maxComponents\n/** Component nesting levels (the root = 1). */\nexport const MAX_DEPTH: number = limitsJson.maxDepth\n/** One server message as UTF-8 JSON. */\nexport const MAX_MESSAGE_BYTES: number = limitsJson.maxMessageBytes\n/** Template items one surface instantiates. */\nexport const MAX_TEMPLATE_ITEMS: number = limitsJson.maxTemplateItems\n/** A data pointer's length in UTF-8 bytes. */\nexport const MAX_POINTER_BYTES: number = limitsJson.maxPointerBytes\n/** A data pointer's token count. */\nexport const MAX_POINTER_SEGMENTS: number = limitsJson.maxPointerSegments\n\n/** The issue messages, byte-identical in every core. */\nexport const LIMIT_ISSUES = {\n usedTwice: `id used twice; only its first place renders`,\n depth: `nesting deeper than ${MAX_DEPTH} levels`,\n components: `surface: more than ${MAX_COMPONENTS} components; the rest is dropped`,\n templateItems: `template: more than ${MAX_TEMPLATE_ITEMS} items; the rest is not rendered`,\n messageBytes: `message larger than ${MAX_MESSAGE_BYTES} bytes`,\n} as const\n",
9
+ "// VAPP-103: the input limits (catalog/limits.json), one place for the TS\n// reference and the generated constants of every target. Past a limit the\n// core reports an issue and does no work.\n\nimport limitsJson from \"../catalog/limits.json\" with { type: \"json\" }\n\n/** The surface limits (numbers; sections such as `motion` are their own). */\nexport const LIMITS: Readonly<Record<string, number>> = Object.fromEntries(Object.entries(limitsJson).filter(([k, v]) => !k.startsWith(`$`) && typeof v === `number`)) as Record<string, number>\n/** Nodes the reducer places in one surface's tree (template nodes included). */\nexport const MAX_COMPONENTS: number = limitsJson.maxComponents\n/** Component nesting levels (the root = 1). */\nexport const MAX_DEPTH: number = limitsJson.maxDepth\n/** One server message as UTF-8 JSON. */\nexport const MAX_MESSAGE_BYTES: number = limitsJson.maxMessageBytes\n/** Template items one surface instantiates. */\nexport const MAX_TEMPLATE_ITEMS: number = limitsJson.maxTemplateItems\n/** A data pointer's length in UTF-8 bytes. */\nexport const MAX_POINTER_BYTES: number = limitsJson.maxPointerBytes\n/** A data pointer's token count. */\nexport const MAX_POINTER_SEGMENTS: number = limitsJson.maxPointerSegments\n\n/** The issue messages, byte-identical in every core. */\nexport const LIMIT_ISSUES = {\n usedTwice: `id used twice; only its first place renders`,\n depth: `nesting deeper than ${MAX_DEPTH} levels`,\n components: `surface: more than ${MAX_COMPONENTS} components; the rest is dropped`,\n templateItems: `template: more than ${MAX_TEMPLATE_ITEMS} items; the rest is not rendered`,\n messageBytes: `message larger than ${MAX_MESSAGE_BYTES} bytes`,\n} as const\n",
10
10
  "// Round 1 (docs/round-1-contract.md §1): the BIND-TIME half of the macro\n// contract. The expander leaves a data binding `{path}` or a function call\n// `{call, args}` wherever an input was bound; a renderer resolves those\n// against its data model when it binds a node. This module is the reference\n// every renderer's resolver mirrors: JSON-pointer lookup (absolute, relative\n// to the node's data scope, or inside a literal row), the core functions plus\n// the basic catalog's logic functions, values resolved at ANY depth EXCEPT\n// inside DATA (a shape-less object prop such as Table `rows`, and anything a\n// binding returns), `$string.<id>` built-in copy through the surface's string\n// table (never inside data), the action order (evaluate everything, then\n// `set`, then the event), and the per-ROW binding of row-scoped slot cells\n// (Table). Pure.\n\nimport { sharedCatalogView, type CatalogView } from \"./catalog\"\nimport { CORE_FUNCTIONS, isBinding, isCall, isDynamic, truthy } from \"./expr\"\nimport { ENGLISH_FORMAT_FUNCTIONS, FORMAT_FUNCTION_NAMES, englishFormatter, formatFunctions, type Formatter } from \"./format\"\nimport { resolveString } from \"./strings\"\nimport type { Action, ComponentDef, ExtensionDef, PropSchema, UiNode } from \"./types\"\nimport { MAX_POINTER_BYTES, MAX_POINTER_SEGMENTS } from \"./limits\"\n\n/** Where relative paths resolve: the pointer of the current template item\n * (`/rows/3`), or the root; `item` (when the key is present) = a LITERAL\n * item that is not in the data model (a Table row of literal `rows`):\n * relative paths then read inside it, absolute ones still the data. */\nexport interface DataScope {\n base?: string\n item?: unknown\n}\n\n/** RFC 6901 unescaping of one reference token. */\nconst unescape = (token: string) => token.replace(/~1/g, `/`).replace(/~0/g, `~`)\n\n/** The absolute pointer a binding path names in a scope: `/a/b` stays,\n * `b/c` joins the scope's base, `` (empty) is the base itself. */\n/** A table's OWN entry for an agent-chosen key, never `Object.prototype`'s. */\nfunction own<T>(table: Record<string, T> | undefined, key: string): T | undefined {\n return table !== undefined && Object.prototype.hasOwnProperty.call(table, key) ? table[key] : undefined\n}\n\nexport function absolutePath(path: string, scope: DataScope = {}): string {\n if (path.startsWith(`/`)) return path\n const base = scope.base ?? ``\n if (path === ``) return base\n return `${base}/${path}`\n}\n\n/** True when relative paths of this scope read a literal item. */\nexport function hasItem(scope: DataScope | undefined): boolean {\n return scope !== undefined && Object.prototype.hasOwnProperty.call(scope, `item`)\n}\n\n/** The value a binding path names in a scope: inside the literal item for a\n * relative path under an item scope, else at its absolute pointer. */\nexport function readPath(data: unknown, path: string, scope: DataScope = {}): unknown {\n if (!path.startsWith(`/`) && hasItem(scope)) return path === `` ? scope.item : readPointer(scope.item, `/${path}`)\n return readPointer(data, absolutePath(path, scope))\n}\n\n/** An array index token: ASCII digits only (a read and a write alike). */\nconst INDEX = /^[0-9]+$/\n\n/** The value at an absolute pointer; undefined when any step is missing.\n * `` and `/` = the whole model (as `writeTokens` writes it); only OWN\n * keys and real indices are read (`/constructor` names nothing); `-` reads\n * an array's LAST element, the one an append just landed on (EXP-1385:\n * a landed write reads back, `fixtures/pointer.json`). */\nexport function readPointer(data: unknown, pointer: string): unknown {\n if (pointer === `` || pointer === `/`) return data\n let cur: unknown = data\n // VAPP-107 (property-tested): a pointer without its leading slash reads\n // the same tokens it writes (`writeTokens`, the Rust core's\n // `pointer_tokens`), not an empty first token.\n for (const raw of (pointer.startsWith(`/`) ? pointer.slice(1) : pointer).split(`/`)) {\n if (cur === undefined || cur === null || typeof cur !== `object`) return undefined\n const token = unescape(raw)\n if (Array.isArray(cur)) cur = token === `-` ? cur.at(-1) : INDEX.test(token) ? cur[Number(token)] : undefined\n else cur = Object.prototype.hasOwnProperty.call(cur, token) ? (cur as Record<string, unknown>)[token] : undefined\n }\n return cur\n}\n\n/** A pointer write: the new data model, or `error` (data unchanged). */\nexport interface PointerWrite {\n data: unknown\n error?: string\n}\n\nconst utf8Length = (text: string) => new TextEncoder().encode(text).length\n\n/** A pointer's tokens (`` and `/` = the whole model), or the limit it breaks. */\nexport function writeTokens(pointer: string): string[] | string {\n if (utf8Length(pointer) > MAX_POINTER_BYTES) return POINTER_ISSUES.bytes\n if (pointer === `` || pointer === `/`) return []\n const tokens = (pointer.startsWith(`/`) ? pointer.slice(1) : pointer).split(`/`)\n if (tokens.length > MAX_POINTER_SEGMENTS) return POINTER_ISSUES.segments\n return tokens.map(unescape)\n}\n\n/** VAPP-103: the pointer-write refusals, byte-identical in every core. */\nexport const POINTER_ISSUES = {\n bytes: `data: pointer longer than ${MAX_POINTER_BYTES} bytes`,\n segments: `data: pointer has more than ${MAX_POINTER_SEGMENTS} segments`,\n notIndex: (token: string) => `data: ${JSON.stringify(token)} is not an array index`,\n pastEnd: (token: string, length: number) => `data: index ${token} is past the end of the array (${length} items)`,\n} as const\n\n/** The index a token names in an array of `length` items: digits up to\n * `length` (`length` and `-` append), else the refusal (JSON Pointer:\n * never a gap, never a key). */\nfunction arrayIndex(token: string, length: number): number | string {\n if (token === `-`) return length\n if (!INDEX.test(token)) return POINTER_ISSUES.notIndex(token)\n const index = Number(token)\n return index <= length ? index : POINTER_ISSUES.pastEnd(token, length)\n}\n\nfunction setOwn(target: Record<string, unknown>, key: string, value: unknown): void {\n Object.defineProperty(target, key, { value, writable: true, enumerable: true, configurable: true })\n}\n\n/** A copy of `data` with `value` written at the absolute pointer\n * (`undefined` removes). Missing containers are OBJECTS; an array takes an\n * index up to its length (`length` and `-` append). Refused (data\n * unchanged, `error` set): a pointer past `maxPointerBytes` /\n * `maxPointerSegments`, a non-index token or an index past the end of an\n * array. Iterative: any depth, no recursion. */\nexport function writePointer(data: unknown, pointer: string, value: unknown): PointerWrite {\n const tokens = writeTokens(pointer)\n if (typeof tokens === `string`) return { data, error: tokens }\n if (tokens.length === 0) return { data: value === undefined ? {} : value }\n const chain: (unknown[] | Record<string, unknown>)[] = []\n const keys: (number | string)[] = []\n let cur: unknown = data\n for (let i = 0; i < tokens.length; i++) {\n const token = tokens[i]!\n const last = i === tokens.length - 1\n if (Array.isArray(cur)) {\n const index = arrayIndex(token, cur.length)\n if (typeof index === `string`) return { data, error: index }\n const next = [...cur]\n if (!last) cur = next[index]\n else if (value === undefined) {\n if (index < next.length) next.splice(index, 1)\n } else next[index] = value\n chain.push(next)\n keys.push(index)\n } else {\n const next: Record<string, unknown> = {}\n if (cur !== null && typeof cur === `object`) for (const [k, v] of Object.entries(cur)) setOwn(next, k, v)\n if (!last) cur = Object.prototype.hasOwnProperty.call(next, token) ? next[token] : undefined\n else if (value === undefined) delete next[token]\n else setOwn(next, token, value)\n chain.push(next)\n keys.push(token)\n }\n }\n for (let i = chain.length - 2; i >= 0; i--) {\n const parent = chain[i]!\n if (Array.isArray(parent)) parent[keys[i] as number] = chain[i + 1]\n else setOwn(parent, keys[i] as string, chain[i + 1])\n }\n return { data: chain[0] }\n}\n\n/** The basic catalog's logic functions as the core evaluates them (the\n * validators and formatters are the renderers' own; they are locale work). */\nconst LOGIC_FUNCTIONS: Record<string, (args: Record<string, unknown>) => unknown> = {\n and: ({ values }) => Array.isArray(values) && values.every(truthy),\n or: ({ values }) => Array.isArray(values) && values.some(truthy),\n not: ({ value }) => !truthy(value),\n required: ({ value }) => truthy(value) && !(Array.isArray(value) && value.length === 0),\n}\n\nexport type FunctionTable = Record<string, (args: Record<string, unknown>) => unknown>\n\n/** The reference function table: the core functions + and/or/not/required\n * + (round 2) the format functions through the English fallback Formatter\n * (`formatNumber`, `formatCurrency`, `formatPercent`, `formatDate`,\n * `formatRelativeTime`, `pluralize`; ResolveOptions.formatter replaces it).\n * `set` is an action, never a value. The expander EMITS `not`/`and`/`or`\n * too, so a renderer must implement this whole table (generated as\n * `bindFunctionNames`), not just the core names. */\nexport const BIND_FUNCTIONS: FunctionTable = { ...LOGIC_FUNCTIONS, ...CORE_FUNCTIONS, ...ENGLISH_FORMAT_FUNCTIONS }\nexport const BIND_FUNCTION_NAMES: readonly string[] = Object.keys(BIND_FUNCTIONS)\n\nexport interface ResolveOptions {\n scope?: DataScope\n /** Extra functions (the host's own, the locale formatters). */\n functions?: FunctionTable\n /** The surface's built-in string table (`stringTable(overrides)`): a\n * `$string.<id>` value resolves through it. Absent = left as written. */\n strings?: Readonly<Record<string, string>>\n /** The surface's extensions: their components' prop schemas decide which\n * props are DATA (bindTree). */\n extensions?: readonly ExtensionDef[]\n /** Round 2: the surface's Formatter (SurfaceSettings.locale + timeZone);\n * the format functions run through it. Absent = the English fallback. */\n formatter?: Formatter\n /** The clock `formatRelativeTime` reads without a `now` argument. */\n now?: () => number\n}\n\nconst FORMAT_NAMES: ReadonlySet<string> = new Set(FORMAT_FUNCTION_NAMES)\nconst FORMAT_TABLES = new WeakMap<Formatter, FunctionTable>()\n\nfunction formatTable(options: ResolveOptions): FunctionTable | undefined {\n if (!options.formatter && !options.now) return undefined\n const formatter = options.formatter ?? (english ??= englishFormatter())\n if (options.now) return formatFunctions(formatter, options.now)\n let table = FORMAT_TABLES.get(formatter)\n if (!table) FORMAT_TABLES.set(formatter, (table = formatFunctions(formatter)))\n return table\n}\n\nlet english: Formatter | undefined\n\n/** A prop or style value with every binding and call resolved, at any\n * depth. An unknown function resolves to undefined. */\nexport function resolveDynamic(value: unknown, data: unknown, options: ResolveOptions = {}): unknown {\n if (isBinding(value)) return readPath(data, value.path, options.scope)\n if (isCall(value)) {\n const args: Record<string, unknown> = {}\n for (const [k, v] of Object.entries(value.args ?? {})) args[k] = resolveDynamic(v, data, options)\n // Own entries only: `{call: \"constructor\"}` is no function (VAPP-107).\n const fn = own(options.functions, value.call) ?? (FORMAT_NAMES.has(value.call) ? own(formatTable(options), value.call) : undefined) ?? own(BIND_FUNCTIONS, value.call)\n return fn ? fn(args) : undefined\n }\n if (typeof value === `string`) return options.strings ? resolveString(value, options.strings) : value\n if (Array.isArray(value)) return value.map((v) => resolveDynamic(v, data, options))\n if (typeof value === `object` && value !== null) {\n const out: Record<string, unknown> = {}\n for (const [k, v] of Object.entries(value)) {\n const r = resolveDynamic(v, data, options)\n if (r !== undefined) out[k] = r\n }\n return out\n }\n return value\n}\n\n/** A node's `visible`: absent = shown; else its resolved truthiness. */\nexport function isVisible(visible: unknown, data: unknown, options: ResolveOptions = {}): boolean {\n if (visible === undefined) return true\n return truthy(resolveDynamic(visible, data, options))\n}\n\nexport interface ActionOutcome {\n /** The data model after the action's `set` (unchanged without one). */\n data: unknown\n /** VAPP-103: the `set` was refused (writePointer's reason). */\n error?: string\n /** The event to dispatch, its context resolved BEFORE the write. */\n event?: { name: string; context?: Record<string, unknown> }\n /** A function other than `set` the host must run (openUrl…), args resolved. */\n call?: { call: string; args: Record<string, unknown> }\n}\n\n/** Round 4 (VAPP-103): the data an interaction's action resolves against =\n * the data model WITH the source component's OWN write applied first.\n * `own` = EXACTLY what the component wrote, by prop (an Input's `value`,\n * a Checkbox's `checked`, an overlay's `open`, a FileUpload's MERGED\n * `files`), never inferred from the event payload (an `upload` payload's\n * `added` is the new batch, the write is the whole list): each prop that\n * is a `{path}` binding is written at that path, so a `context.query`\n * bound to the path the Input writes reads the text just typed. Renderers\n * apply it before `runAction` (Rust: every write lands before\n * `Surface::fire`). */\nexport function withOwnWrites(data: unknown, props: Record<string, unknown>, own: Record<string, unknown> | undefined, scope: DataScope = {}): unknown {\n let out = data\n for (const [key, value] of Object.entries(own ?? {})) {\n const bound = props[key]\n if (!isBinding(bound)) continue\n if (!bound.path.startsWith(`/`) && hasItem(scope)) continue\n // A refused write (limits, index rules) leaves the data as it is.\n out = writePointer(out, absolutePath(bound.path, scope), value).data\n }\n return out\n}\n\n/** The overlay components (catalog group `overlay`; AlertDialog expands to\n * a non-dismissible Dialog). */\nexport const OVERLAY_COMPONENTS: readonly string[] = [`Dialog`, `Drawer`, `AlertDialog`, `Popover`, `Tooltip`, `Menu`, `Toast`]\nconst OVERLAYS: ReadonlySet<string> = new Set(OVERLAY_COMPONENTS)\n\n/** Round 4 (VAPP-103): a successful Form submit CLOSES the overlay around\n * the form (the author never resets the bound `open` flag). The NEAREST\n * enclosing overlay of ANY kind decides: it closes only when it is a\n * Dialog or Drawer that is dismissible (`dismissible: false` — an\n * AlertDialog — never auto-closes); a nearest Popover, Menu, Tooltip or\n * Toast closes nothing, nor does anything around it. The id of that\n * overlay in the EXPANDED tree, null when nothing closes. Renderers close\n * it like a dismiss (`open` false written through, `change {open:\n * false}`) right after the form's `submit`. */\nexport function submitClosesOverlay(root: UiNode, formId: string): string | null {\n const walk = (n: UiNode, overlay: UiNode | null): UiNode | null | undefined => {\n const here = OVERLAYS.has(n.component) && n.id !== formId ? n : overlay\n if (n.id === formId && n.component === `Form`) return here\n for (const slot of Object.values(n.slots ?? {})) {\n const hit = walk(slot, here)\n if (hit !== undefined) return hit\n }\n for (const child of n.children) {\n const hit = walk(child, here)\n if (hit !== undefined) return hit\n }\n return undefined\n }\n const nearest = walk(root, null)\n if (!nearest || (nearest.component !== `Dialog` && nearest.component !== `Drawer`) || nearest.props.dismissible === false) return null\n return nearest.id\n}\n\n/** What a press does: resolve the function args and the event context\n * against the data AS IT IS (after `withOwnWrites`), then apply `set`, then\n * hand back the event. */\nexport function runAction(action: Action, data: unknown, options: ResolveOptions = {}): ActionOutcome {\n const out: ActionOutcome = { data }\n const event = action.event\n ? { name: action.event.name, ...(action.event.context ? { context: resolveDynamic(action.event.context, data, options) as Record<string, unknown> } : {}) }\n : undefined\n // A2UI's `functionCall`.\n const fn = action.functionCall\n if (fn) {\n const args = resolveDynamic(fn.args ?? {}, data, options) as Record<string, unknown>\n if (fn.call === `set`) {\n // A relative path under a literal-item scope names no data: no write.\n if (typeof args.path === `string` && (args.path.startsWith(`/`) || !hasItem(options.scope))) {\n const pointer = absolutePath(args.path, options.scope)\n // No value: the key exists without one, which JSON drops (the\n // containers on the way are still created).\n const written = writePointer(data, pointer, args.value === undefined ? null : args.value)\n const final = args.value === undefined && !written.error ? writePointer(written.data, pointer, undefined) : written\n out.data = final.data\n if (final.error) out.error = final.error\n }\n } else out.call = { call: fn.call, args }\n }\n if (event) out.event = event\n return out\n}\n\n/** A DATA schema: a shape-less `object` (any object) or an array of them —\n * Table `rows` in the core catalog. A literal value there is the author's\n * data, copied verbatim: no binding, call or `$string.<id>` inside it is\n * interpreted (a row `{path: \"/etc/hosts\"}` is a row). A dynamic value AT\n * the position still resolves (and its result is never descended). */\nexport function isDataSchema(schema: PropSchema | undefined): boolean {\n if (!schema) return false\n if (schema.type === `object`) return schema.shape === undefined\n if (schema.type === `array`) return schema.items !== undefined && isDataSchema(schema.items)\n return false\n}\n\nconst isObj = (v: unknown): v is Record<string, unknown> => typeof v === `object` && v !== null && !Array.isArray(v)\n\n/** One prop value resolved along its schema: dynamic → resolved, DATA\n * literal → verbatim, arrays and shaped objects → per item / property,\n * anything else → `resolveDynamic` (any depth). */\nexport function resolveProp(value: unknown, schema: PropSchema | undefined, data: unknown, options: ResolveOptions = {}, defs: Record<string, { properties: Record<string, PropSchema> }> = {}): unknown {\n if (isDynamic(value)) return resolveDynamic(value, data, options)\n if (isDataSchema(schema)) return value\n if (schema?.type === `array` && schema.items && Array.isArray(value)) return value.map((item) => resolveProp(item, schema.items, data, options, defs))\n const shape = schema?.type === `object` && schema.shape ? defs[schema.shape] : undefined\n if (shape && isObj(value)) {\n const out: Record<string, unknown> = {}\n for (const [k, v] of Object.entries(value)) {\n const r = resolveProp(v, shape.properties[k], data, options, defs)\n if (r !== undefined) out[k] = r\n }\n return out\n }\n return resolveDynamic(value, data, options)\n}\n\n/** A node's props resolved along its component's schema (an unknown\n * component's props resolve at any depth). */\nexport function resolveNodeProps(def: ComponentDef | undefined, props: Record<string, unknown>, data: unknown, options: ResolveOptions = {}, defs: Record<string, { properties: Record<string, PropSchema> }> = {}): Record<string, unknown> {\n const out: Record<string, unknown> = {}\n for (const [k, v] of Object.entries(props)) {\n const r = resolveProp(v, def?.props[k], data, options, defs)\n if (r !== undefined) out[k] = r\n }\n return out\n}\n\n/** True when the component's slots are ROW-SCOPED (catalog `slotScope:\n * \"row\"`, Table): each slot is a cell template the painter binds once per\n * row (`bindRowSlot`), never against the surface. */\nexport function hasRowSlots(def: ComponentDef | undefined): boolean {\n return def?.slotScope === `row`\n}\n\n/** The scope row `index` of a row-scoped component binds its slot cells in.\n * `rowsProp` = the UNBOUND `rows` value: a binding → `{base: <its pointer>/\n * <index>}` (relative paths read the row in the data model and `set` writes\n * into it); a literal or a call → `{item: rows[index]}` (relative paths read\n * inside the row; a relative `set` writes nothing). `index` = the row's index\n * in `rows` as given, before any local sort. */\nexport function rowScope(rowsProp: unknown, rows: readonly unknown[], index: number, scope: DataScope = {}): DataScope {\n if (isBinding(rowsProp)) return { base: `${absolutePath(rowsProp.path, scope)}/${index}` }\n return { ...(scope.base !== undefined ? { base: scope.base } : {}), item: rows[index] }\n}\n\n/** A row-scoped slot cell bound for row `index` (see `rowScope`). */\nexport function bindRowSlot(slot: UiNode, rowsProp: unknown, rows: readonly unknown[], index: number, data: unknown, options: ResolveOptions = {}): UiNode | null {\n return bindTree(slot, data, { ...options, scope: rowScope(rowsProp, rows, index, options.scope) })\n}\n\n/** Round 2 (docs/round-2-contract.md §4): the scope a List's `section`\n * header binds in — a LITERAL item `{value, count, index}` (relative paths\n * read it: `{path: \"value\"}`; absolute ones the surface data). */\nexport function sectionScope(section: { value: string; count: number }, index: number, scope: DataScope = {}): DataScope {\n return { ...(scope.base !== undefined ? { base: scope.base } : {}), item: { value: section.value, count: section.count, index } }\n}\n\n/** A List `section` header bound for section `index` (see `sectionScope`). */\nexport function bindSectionHeader(slot: UiNode, section: { value: string; count: number }, index: number, data: unknown, options: ResolveOptions = {}): UiNode | null {\n return bindTree(slot, data, { ...options, scope: sectionScope(section, index, options.scope) })\n}\n\n/** The BIND pass a renderer runs over an expanded tree for one data model:\n * every prop resolved along its schema (`resolveNodeProps`: DATA props\n * verbatim), every style value, recipe prop and `accessibility` value\n * resolved (`resolveDynamic`), a node whose `visible` resolves falsy dropped\n * with its subtree, `visible` itself removed. Actions stay unresolved (they\n * evaluate at press time, `runAction`); a `template` and the slots of a\n * ROW-SCOPED component (Table cells) stay UNBOUND — the painter binds them\n * per item / per row (`bindRowSlot`). fixtures/bind-time.json locks it. Pure. */\nconst viewFor = (extensions?: readonly ExtensionDef[]): CatalogView => sharedCatalogView(extensions)\n\nexport function bindTree(node: UiNode, data: unknown, options: ResolveOptions = {}): UiNode | null {\n const view = viewFor(options.extensions)\n const walk = (n: UiNode): UiNode | null => {\n if (!isVisible(n.visible, data, options)) return null\n const def = view.components[n.component]\n const out: UiNode = { id: n.id, component: n.component, props: resolveNodeProps(def, n.props, data, options, view.defs), children: [] }\n if (n.style) out.style = resolveDynamic(n.style, data, options) as Record<string, unknown>\n if (n.on) out.on = n.on\n if (n.accessibility) {\n const a11y = resolveDynamic(n.accessibility, data, options) as Record<string, unknown>\n if (Object.keys(a11y).length > 0) out.accessibility = a11y\n }\n for (const child of n.children) {\n const bound = walk(child)\n if (bound) out.children.push(bound)\n }\n if (n.slots) {\n if (hasRowSlots(def)) out.slots = n.slots\n else\n for (const [slot, child] of Object.entries(n.slots)) {\n const bound = walk(child)\n if (bound) (out.slots ??= {})[slot] = bound\n }\n }\n if (n.template) out.template = n.template\n if (n.recipe) out.recipe = { ...n.recipe, props: resolveDynamic(n.recipe.props, data, options) as Record<string, unknown> }\n return out\n }\n return walk(node)\n}\n",
11
11
  "// Round 3 (VAPP-102, docs/round-3-contract.md §2): the tree connector rule\n// the CORE computes for nested rows. `treeGuides(depths)` is the ×4 rule of\n// the app (`packages/ui/src/tree-guides.ts`, desktop `domain::tree_guides`,\n// iOS `TreeGuides.swift`, Android `TreeGuides.kt`), copied verbatim so a\n// Section of Rows connects like a session tree or a PR stack. `applyTreeGuides`\n// is the ONE post-expansion pass (the end of `expandMacros`; the Rust core\n// mirrors it in `tree_guides.rs`): over every node's children in order, each\n// Row root contributes its numeric `recipe.props.depth` (anything else counts\n// as 0 and ends every subtree), and the rule fills the Row's `guides` part (a\n// TreeGuides native) with `elbowAt` / `tee` / `passThrough`. Locked by\n// `fixtures/tree-guides.json` and the Row cases of `catalog-macros.json`.\n\nimport type { UiNode } from \"./types\"\n\n/** Guide geometry for ONE row, in gutter LEVELS (not pixels). */\nexport interface TreeGuide {\n /** The gutter level the elbow sits in (`depth - 1`); `null` for a root. */\n elbowAt: number | null\n /** The elbow's vertical continues past the centre: a later sibling follows. */\n tee: boolean\n /** Ancestor gutter levels carrying a straight full-height line, ascending. */\n passThrough: number[]\n}\n\n/** Whether the subtree hanging off gutter `level` continues AFTER row `index`:\n * another row at depth `level + 1` follows before the walk leaves that\n * subtree (a row at depth `≤ level`). */\nfunction continuesAfter(depths: readonly number[], index: number, level: number): boolean {\n for (let at = index + 1; at < depths.length; at += 1) {\n const depth = depths[at]!\n if (depth <= level) return false\n if (depth === level + 1) return true\n }\n return false\n}\n\n/** The guides for a flat list of VISIBLE rows, given their depths. */\nexport function treeGuides(depths: readonly number[]): TreeGuide[] {\n return depths.map((depth, index) => {\n if (depth <= 0) return { elbowAt: null, tee: false, passThrough: [] }\n const passThrough: number[] = []\n for (let level = 0; level <= depth - 2; level += 1) {\n if (continuesAfter(depths, index, level)) passThrough.push(level)\n }\n return { elbowAt: depth - 1, tee: continuesAfter(depths, index, depth - 1), passThrough }\n })\n}\n\n/** The expanded root of a `Row` macro. */\nexport function isRowRoot(node: UiNode): boolean {\n return node.recipe?.macro === `Row` && node.recipe.part === `root`\n}\n\n/** A sibling's depth: a Row root's recipe prop, else any node's own numeric\n * `depth` prop (an extension row such as SessionRow or PrRow), when a finite\n * number > 0, else 0 (a bound depth cannot be computed against its siblings). */\nfunction siblingDepth(node: UiNode): number {\n const depth = isRowRoot(node) ? node.recipe?.props.depth : node.props.depth\n return typeof depth === `number` && Number.isFinite(depth) && depth > 0 ? Math.floor(depth) : 0\n}\n\n/** A non-Row sibling that takes part: its own numeric `depth` prop (> 0). */\nfunction hasDepth(node: UiNode): boolean {\n return !isRowRoot(node) && node.component !== `TreeGuides` && typeof node.props.depth === `number`\n}\n\n/** The filled guide as props: `{depth, elbowAt?, tee, passThrough}`. */\nfunction guideProps(depth: number, g: TreeGuide): Record<string, unknown> {\n const props: Record<string, unknown> = { depth }\n if (g.elbowAt !== null) props.elbowAt = g.elbowAt\n props.tee = g.tee\n props.passThrough = g.passThrough\n return props\n}\n\n/** Fill the guides of ONE sibling list (a node's children, or a lone root /\n * slot value). A Row root's `guides` part takes the props; any other node\n * with a numeric `depth` gets them as its `guide` prop (`elbowAt?`, `tee`,\n * `passThrough`), which an extension painter draws. */\nfunction fillSiblings(nodes: UiNode[]): void {\n const depths = nodes.map(siblingDepth)\n const guides = treeGuides(depths)\n nodes.forEach((node, i) => {\n const g = guides[i]!\n if (isRowRoot(node)) {\n const part = guidesPart(node)\n if (part) part.props = guideProps(depths[i]!, g)\n } else if (hasDepth(node)) {\n const { depth: _d, ...guide } = guideProps(depths[i]!, g)\n node.props = { ...node.props, guide }\n }\n })\n}\n\n/** The Row's `guides` part, when its depth emitted one. */\nfunction guidesPart(row: UiNode): UiNode | undefined {\n return row.children.find((c) => c.component === `TreeGuides` && c.recipe?.part === `guides`)\n}\n\n/** Fill every Row's guides from the rows around it. Mutates `root` in place\n * (the expander hands it a fresh tree); returns it for chaining. */\nexport function applyTreeGuides(root: UiNode): UiNode {\n const visit = (node: UiNode) => {\n fillSiblings(node.children)\n for (const slot of Object.values(node.slots ?? {})) {\n // A slot value has no siblings: a lone row is a root.\n fillSiblings([slot])\n visit(slot)\n }\n node.children.forEach(visit)\n }\n fillSiblings([root])\n visit(root)\n return root\n}\n",
12
12
  "// VAPP-85: the macro expander — applies catalog/macros.json (plus extension\n// macros) to a normalized tree until every node is native. The rules are in\n// the table's `$comment`; fixtures/catalog-macros.json locks the output and\n// the Rust core replays the same table.\n//\n// Round 1 (docs/round-1-contract.md): a `$if`/`$any` that cannot be decided\n// at expansion time (a bound input) emits the part WITH `visible` = the\n// bound condition; `\"$slot:name\"` children splice an author slot in place\n// and a template `slots` entry may be a template node; a RESPONSIVE prop\n// (`{base, sm?, md?…}`) is expanded per breakpoint into `@media (min-width:\n// $breakpoint.<bp>)` blocks on every part whose style it changes; a `$set`\n// on a part whose macro prop is BOUND adds the `set` write-back to that\n// part's action (two-way binding without a host round trip); a part's\n// `$a11y` becomes the node's `accessibility` (role, states, name: §6).\n\nimport { TOKEN_GROUPS, sharedCatalogView } from \"./catalog\"\nimport { applyTreeGuides } from \"./tree-guides\"\nimport type { CatalogView } from \"./catalog\"\nimport { evalConditionValue, evalValue, isBinding, isDynamic, truthy, type ExprContext } from \"./expr\"\nimport type { Action, ExtensionDef, MacroChild, MacroDef, MacroTemplate, ReduceIssue, UiNode, Visible } from \"./types\"\n\nconst MAX_DEPTH = 16\n/** The breakpoint names in ascending order (tokens.json). */\nexport const BREAKPOINTS: readonly string[] = TOKEN_GROUPS.breakpoint\n\ninterface Variant {\n breakpoint: string\n props: Record<string, unknown>\n}\n\ninterface Expansion {\n view: CatalogView\n macro: string\n def: MacroDef\n source: UiNode\n /** The author's props with every responsive value at its `base`. */\n baseProps: Record<string, unknown>\n /** One per breakpoint a responsive prop names, ascending. */\n variants: Variant[]\n claimed: Set<string>\n /** Where expansion problems go (the reducer's issue list), if anyone listens. */\n issues?: ReduceIssue[]\n}\n\nfunction clone<T>(value: T): T {\n return value === undefined ? value : (JSON.parse(JSON.stringify(value)) as T)\n}\n\nconst isObj = (v: unknown): v is Record<string, unknown> => typeof v === `object` && v !== null && !Array.isArray(v)\n\n/** `{base, sm?, md?, lg?, xl?}`: an object with `base` and only breakpoint\n * keys besides. */\nexport function isResponsiveValue(value: unknown): value is Record<string, unknown> & { base: unknown } {\n if (!isObj(value) || !(`base` in value)) return false\n return Object.keys(value).every((k) => k === `base` || BREAKPOINTS.includes(k))\n}\n\n/** The value a responsive prop takes at a breakpoint: the nearest defined\n * key at or below it, `base` under the first one. `null` = the base. */\nexport function responsiveAt(value: Record<string, unknown> & { base: unknown }, breakpoint: string | null): unknown {\n let out = value.base\n if (breakpoint === null) return out\n for (const bp of BREAKPOINTS) {\n if (bp in value) out = value[bp]\n if (bp === breakpoint) break\n }\n return out\n}\n\n/** The author's props with every responsive object replaced by its value at\n * `breakpoint`. */\nexport function propsAt(props: Record<string, unknown>, breakpoint: string | null): Record<string, unknown> {\n const out: Record<string, unknown> = {}\n for (const [k, v] of Object.entries(props)) out[k] = isResponsiveValue(v) ? responsiveAt(v, breakpoint) : v\n return out\n}\n\nfunction responsiveVariants(props: Record<string, unknown>): Variant[] {\n const used = new Set<string>()\n for (const v of Object.values(props)) if (isResponsiveValue(v)) for (const k of Object.keys(v)) if (k !== `base`) used.add(k)\n return BREAKPOINTS.filter((bp) => used.has(bp)).map((bp) => ({ breakpoint: bp, props: propsAt(props, bp) }))\n}\n\nfunction mergeStyle(\n base: Record<string, unknown> | undefined,\n over: Record<string, unknown> | undefined\n): Record<string, unknown> | undefined {\n if (!base && !over) return undefined\n const out: Record<string, unknown> = { ...(base ?? {}) }\n for (const [k, v] of Object.entries(over ?? {})) {\n const nested = typeof v === `object` && v !== null && !Array.isArray(v)\n out[k] = nested\n ? { ...((out[k] as Record<string, unknown>) ?? {}), ...(v as Record<string, unknown>) }\n : v\n }\n return out\n}\n\nfunction routedAction(\n action: Action,\n context: Record<string, unknown> | undefined\n): Action {\n const out = clone(action)\n if (context && out.event) {\n out.event.context = { ...(out.event.context ?? {}), ...context }\n }\n return out\n}\n\n/** The macro's recipe discriminators: the author's value, else the prop's\n * catalog default, so a theme always sees a concrete value. */\nfunction recipeProps(exp: Expansion, ctx: ExprContext, extra: unknown): Record<string, unknown> {\n const props: Record<string, unknown> = {}\n const schema = exp.view.components[exp.macro]?.props ?? {}\n for (const name of exp.def.recipeProps) {\n const value = exp.baseProps[name] ?? schema[name]?.default\n if (value !== undefined) props[name] = value\n }\n if (extra) {\n const evaluated = evalValue(extra, ctx) as Record<string, unknown>\n for (const [k, v] of Object.entries(evaluated)) props[k] = v\n }\n return props\n}\n\nfunction andOf(conditions: unknown[], op: `and` | `or`): Visible {\n if (conditions.length === 1) return conditions[0] as Visible\n return { call: op, args: { values: conditions } }\n}\n\n/** The part's `$if`/`$any`: `false` = leave it out, `true` = emit it, a\n * dynamic value = emit it with that as `visible`. */\nfunction decideConditions(tpl: MacroTemplate, ctx: ExprContext): boolean | Visible {\n const bound: unknown[] = []\n if (tpl.$if !== undefined) {\n const conds = Array.isArray(tpl.$if) ? tpl.$if : [tpl.$if]\n for (const c of conds) {\n const r = evalConditionValue(c, ctx)\n if (r === false) return false\n if (r !== true) bound.push(r)\n }\n }\n if (tpl.$any !== undefined) {\n let decided = false\n const any: unknown[] = []\n for (const c of tpl.$any) {\n const r = evalConditionValue(c, ctx)\n if (r === true) {\n decided = true\n break\n }\n if (r !== false) any.push(r)\n }\n if (!decided) {\n if (any.length === 0) return false\n bound.push(andOf(any, `or`))\n }\n }\n return bound.length === 0 ? true : andOf(bound, `and`)\n}\n\nfunction expandTemplate(\n tpl: MacroTemplate,\n exp: Expansion,\n ctx: ExprContext,\n parentId: string\n): UiNode[] {\n const decided = decideConditions(tpl, ctx)\n if (decided === false) return []\n const visible = decided === true ? undefined : decided\n if (tpl.$each !== undefined) {\n const items = evalValue(`{${tpl.$each}}`, ctx)\n if (!Array.isArray(items)) return []\n const as = tpl.$as ?? `item`\n return items.map((item, index) =>\n buildNode(tpl, exp, { ...ctx, vars: { ...ctx.vars, [as]: item, index } }, `${parentId}.${tpl.part}.${index}`, visible)\n )\n }\n const id = tpl.part === `root` ? exp.source.id : `${parentId}.${tpl.part}`\n return [buildNode(tpl, exp, ctx, id, visible)]\n}\n\nconst canon = (v: unknown) => JSON.stringify(v)\n\n/** The part's style: evaluated with the base props, then once per\n * breakpoint variant; every key a variant changes lands in its media block. */\nfunction partStyle(tpl: MacroTemplate, exp: Expansion, ctx: ExprContext): Record<string, unknown> | undefined {\n if (!tpl.style) return undefined\n const style = evalValue(tpl.style, ctx) as Record<string, unknown>\n let previous = style\n for (const variant of exp.variants) {\n const at = evalValue(tpl.style, { ...ctx, props: variant.props }) as Record<string, unknown>\n const diff: Record<string, unknown> = {}\n for (const [k, v] of Object.entries(at)) if (!k.startsWith(`@`) && !k.startsWith(`:`) && canon(previous[k]) !== canon(v)) diff[k] = v\n if (Object.keys(diff).length > 0) {\n const key = `@media (min-width: $breakpoint.${variant.breakpoint})`\n style[key] = { ...((style[key] as Record<string, unknown>) ?? {}), ...diff }\n }\n previous = at\n }\n return Object.keys(style).length > 0 ? style : undefined\n}\n\nfunction buildNode(\n tpl: MacroTemplate,\n exp: Expansion,\n ctx: ExprContext,\n id: string,\n visible: Visible | undefined\n): UiNode {\n const props = (evalValue(tpl.props ?? {}, ctx) as Record<string, unknown>) ?? {}\n const style = partStyle(tpl, exp, ctx)\n const node: UiNode = { id, component: tpl.component, props, children: [] }\n if (style) node.style = style\n if (visible !== undefined) node.visible = visible\n node.recipe = { macro: exp.macro, part: tpl.part, props: recipeProps(exp, ctx, tpl.$recipe) }\n if (tpl.$on) {\n const on: Record<string, Action> = {}\n for (const [partEvent, macroEvent] of Object.entries(tpl.$on)) {\n const action = exp.source.on?.[macroEvent]\n if (!action) continue\n exp.claimed.add(macroEvent)\n const context = tpl.$context\n ? (evalValue(tpl.$context, ctx) as Record<string, unknown>)\n : undefined\n on[partEvent] = routedAction(action, context)\n }\n if (Object.keys(on).length > 0) node.on = on\n }\n if (tpl.$set) {\n for (const [partEvent, spec] of Object.entries(tpl.$set)) {\n const bound = exp.baseProps[spec.prop]\n if (!isBinding(bound)) continue\n const on = (node.on ??= {})\n if (on[partEvent]?.functionCall) {\n // An Action carries ONE `functionCall`: the author's routed function call\n // wins and the bound prop is not written back (reported, never lost\n // silently). Route an `event` to keep the two-way write.\n const macroEvent = tpl.$on?.[partEvent] ?? partEvent\n const message = `on.${macroEvent}: a function action replaces the two-way set of props.${spec.prop}; write it in that function's handler or use an event`\n if (!exp.issues?.some((i) => i.id === exp.source.id && i.message === message)) exp.issues?.push({ id: exp.source.id, message })\n continue\n }\n const value = evalValue(spec.value, ctx)\n on[partEvent] = { ...(on[partEvent] ?? {}), functionCall: { call: `set`, args: value === undefined ? { path: bound.path } : { path: bound.path, value } } }\n }\n }\n if (tpl.$a11y) {\n const a11y = evalValue(tpl.$a11y, ctx) as Record<string, unknown>\n if (Object.keys(a11y).length > 0) node.accessibility = a11y\n }\n if (tpl.slots) {\n for (const [slot, ref] of Object.entries(tpl.slots)) {\n if (typeof ref === `string`) {\n const name = ref.startsWith(`$slot:`) ? ref.slice(6) : null\n const value = name ? exp.source.slots?.[name] : undefined\n if (value) (node.slots ??= {})[slot] = value\n continue\n }\n const [built] = expandTemplate(ref, exp, ctx, id)\n if (built) (node.slots ??= {})[slot] = built\n }\n }\n for (const child of tpl.children ?? []) {\n if (child === `$children`) {\n node.children.push(...exp.source.children)\n if (exp.source.template) node.template = exp.source.template\n continue\n }\n if (typeof child === `string`) {\n if (child.startsWith(`$slot:`)) {\n const value = exp.source.slots?.[child.slice(6)]\n if (value) node.children.push(value)\n }\n continue\n }\n node.children.push(...expandTemplate(child as MacroTemplate, exp, ctx, id))\n }\n return node\n}\n\n/** Expand one macro node (children already native) into its template. */\nfunction expandMacro(node: UiNode, macro: string, def: MacroDef, view: CatalogView, depth: number, issues?: ReduceIssue[]): UiNode {\n if (depth > MAX_DEPTH) throw new Error(`macro ${macro}: expansion deeper than ${MAX_DEPTH}`)\n const baseProps = propsAt(node.props, null)\n // Round 3: an `on.press` implies `pressable` on a macro that offers it (Row, Chip).\n if (node.on?.press && baseProps.pressable === undefined && view.components[macro]?.props.pressable) baseProps.pressable = true\n const exp: Expansion = { view, macro, def, source: node, baseProps, variants: responsiveVariants(node.props), claimed: new Set(), issues }\n const ctx: ExprContext = { id: node.id, props: baseProps, vars: {} }\n const [root] = expandTemplate(def.root, exp, ctx, node.id)\n root.style = mergeStyle(root.style, node.style)\n if (root.style && Object.keys(root.style).length === 0) delete root.style\n // VAPP-163: the style written ON the macro node wins over the macro's part\n // recipes: its top-level keys (condition blocks included), SORTED, ride on\n // the root's recipe as `authored`. Only the AUTHOR's keys count: a node an\n // outer template drew (it carries a recipe) passes on just the keys its\n // own author wrote (a template root's `authored`), never template style.\n const authored = node.recipe ? [...(node.recipe.authored ?? [])] : Object.keys(node.style ?? {}).sort()\n if (authored.length > 0 && root.recipe) root.recipe = { ...root.recipe, authored }\n if (node.visible !== undefined) root.visible = node.visible\n // The author's label/description (or an outer macro part's $a11y) win\n // over the root part's own.\n if (node.accessibility) root.accessibility = { ...(root.accessibility ?? {}), ...node.accessibility }\n const remaining: Record<string, Action> = { ...(root.on ?? {}) }\n for (const [event, action] of Object.entries(node.on ?? {})) {\n if (!exp.claimed.has(event)) remaining[event] = action\n }\n if (Object.keys(remaining).length > 0) root.on = remaining\n else delete root.on\n return expandTree(root, view, depth + 1, issues)\n}\n\nfunction expandTree(node: UiNode, view: CatalogView, depth: number, issues?: ReduceIssue[]): UiNode {\n const out: UiNode = { ...node, children: node.children.map((c) => expandTree(c, view, depth, issues)) }\n if (node.slots) {\n out.slots = {}\n for (const [slot, child] of Object.entries(node.slots)) out.slots[slot] = expandTree(child, view, depth, issues)\n }\n const def = view.macros[out.component]\n if (def && view.components[out.component]?.kind === `macro`) {\n return expandMacro(out, out.component, def, view, depth, issues)\n }\n return out\n}\n\n/** The normalized tree with every macro (core + extensions) expanded into\n * natives, recipes attached. Pure: the input is not mutated; expansion\n * problems (an author function that replaces a `$set` write) are pushed to\n * `options.issues` when given. */\nexport function expandMacros(\n root: UiNode,\n options: { extensions?: readonly ExtensionDef[]; issues?: ReduceIssue[] } = {}\n): UiNode {\n // Round 3: the tree guides of nested Rows come from their siblings, so\n // they are filled AFTER the whole tree is native (src/tree-guides.ts).\n return applyTreeGuides(expandTree(clone(root), sharedCatalogView(options.extensions), 0, options.issues))\n}\n\n/** True for a value the expander would keep (see expr.ts). */\nexport const keeps = truthy\nexport { isDynamic }\nexport type { MacroChild }\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": "E72CFA112ABB9DDE64756E2164756E21",
29
+ "mappings": "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",
30
+ "debugId": "D45ACF1E76F349B864756E2164756E21",
30
31
  "names": []
31
32
  }