@cueplusplus/ui 0.8.0 → 0.10.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 (352) hide show
  1. package/CHANGELOG.md +457 -0
  2. package/README.md +131 -0
  3. package/dist/chat/message-list.js +2 -1
  4. package/dist/configurator/_export.d.ts +1 -1
  5. package/dist/configurator/_export.js +53 -13
  6. package/dist/configurator/_overrides.d.ts +25 -6
  7. package/dist/configurator/_overrides.js +30 -17
  8. package/dist/configurator/configurator.js +8 -3
  9. package/dist/configurator/panel-sections.js +43 -13
  10. package/dist/elements/command-palette.js +1 -1
  11. package/dist/elements/flow-graph.js +2 -2
  12. package/dist/elements/markdown.js +1 -1
  13. package/dist/elements/surfaces.js +4 -3
  14. package/dist/index.d.ts +7 -3
  15. package/dist/index.js +5 -2
  16. package/dist/instruments/meter.d.ts +5 -1
  17. package/dist/layout/bento.d.ts +144 -0
  18. package/dist/layout/bento.js +266 -0
  19. package/dist/layout/index.d.ts +3 -2
  20. package/dist/layout/index.js +3 -2
  21. package/dist/midi/piano-keyboard.js +5 -1
  22. package/dist/primitives/button.d.ts +12 -0
  23. package/dist/styles.css +23 -1
  24. package/dist/system/density.d.ts +17 -8
  25. package/dist/system/density.js +39 -16
  26. package/dist/system/index.d.ts +5 -2
  27. package/dist/system/index.js +3 -1
  28. package/dist/system/overrides.d.ts +80 -0
  29. package/dist/system/overrides.js +277 -0
  30. package/dist/system/portal.d.ts +4 -2
  31. package/dist/system/portal.js +34 -3
  32. package/dist/system/prepaint.d.ts +58 -7
  33. package/dist/system/prepaint.js +72 -20
  34. package/dist/system/theme-provider.d.ts +133 -8
  35. package/dist/system/theme-provider.js +203 -72
  36. package/dist/system/theme-registry.d.ts +53 -0
  37. package/dist/system/theme-registry.js +66 -0
  38. package/dist/system/use-density.d.ts +13 -5
  39. package/dist/system/use-density.js +142 -13
  40. package/dist/system/use-theme.d.ts +5 -3
  41. package/dist/system/use-theme.js +5 -3
  42. package/dist/system/vocabulary.d.ts +15 -0
  43. package/dist/system/vocabulary.js +111 -0
  44. package/dist/theming/contrast.d.ts +2 -122
  45. package/dist/theming/contrast.js +2 -194
  46. package/dist/theming/create-theme.d.ts +37 -11
  47. package/dist/theming/create-theme.js +54 -17
  48. package/dist/theming/index.d.ts +3 -4
  49. package/dist/theming/index.js +3 -4
  50. package/dist/theming/serialize.d.ts +24 -11
  51. package/dist/theming/serialize.js +16 -18
  52. package/manifest/components/accordion.json +24 -6
  53. package/manifest/components/activity-graph.json +20 -5
  54. package/manifest/components/agent-card.json +37 -9
  55. package/manifest/components/agent-handoff.json +21 -5
  56. package/manifest/components/agent-mode-badge.json +22 -4
  57. package/manifest/components/agent-pile.json +38 -8
  58. package/manifest/components/agent-plan.json +9 -2
  59. package/manifest/components/agent-status.json +17 -3
  60. package/manifest/components/agent-surface.json +26 -11
  61. package/manifest/components/alert-dialog.json +29 -5
  62. package/manifest/components/animated-number.json +14 -6
  63. package/manifest/components/app-bar.json +66 -13
  64. package/manifest/components/app-shell.json +133 -31
  65. package/manifest/components/app-window-frame.json +28 -6
  66. package/manifest/components/approval-card.json +37 -7
  67. package/manifest/components/artifact-card.json +16 -4
  68. package/manifest/components/ask-box.json +99 -21
  69. package/manifest/components/audience-icon.json +1 -7
  70. package/manifest/components/autocomplete.json +80 -18
  71. package/manifest/components/avatar-group.json +13 -2
  72. package/manifest/components/avatar.json +22 -4
  73. package/manifest/components/background-inbox.json +9 -2
  74. package/manifest/components/bento.json +306 -0
  75. package/manifest/components/branch-picker.json +29 -7
  76. package/manifest/components/breadcrumb.json +13 -3
  77. package/manifest/components/button-group.json +21 -4
  78. package/manifest/components/button.json +41 -4
  79. package/manifest/components/canvas-split-body.json +4 -1
  80. package/manifest/components/canvas-split-header.json +17 -4
  81. package/manifest/components/canvas-split-line.json +4 -1
  82. package/manifest/components/canvas-split-message.json +8 -1
  83. package/manifest/components/card.json +14 -3
  84. package/manifest/components/carousel.json +54 -12
  85. package/manifest/components/catalogue-icon.json +1 -7
  86. package/manifest/components/channel-beta-icon.json +1 -7
  87. package/manifest/components/channel-matrix.json +80 -15
  88. package/manifest/components/channel-released-icon.json +1 -7
  89. package/manifest/components/chart-container.json +26 -10
  90. package/manifest/components/chart-ramp.json +13 -3
  91. package/manifest/components/chart-swatch.json +9 -2
  92. package/manifest/components/chart-tooltip-content.json +31 -7
  93. package/manifest/components/chart.json +30 -6
  94. package/manifest/components/chat-panel-composer.json +9 -2
  95. package/manifest/components/checkbox-group.json +4 -2
  96. package/manifest/components/checkbox.json +17 -4
  97. package/manifest/components/checkpoint-history.json +13 -3
  98. package/manifest/components/chip.json +35 -5
  99. package/manifest/components/clamp.json +30 -7
  100. package/manifest/components/cli-tool-icon.json +1 -7
  101. package/manifest/components/code-diff.json +20 -5
  102. package/manifest/components/code-runner.json +32 -6
  103. package/manifest/components/collapsible.json +16 -4
  104. package/manifest/components/color-area.json +4 -1
  105. package/manifest/components/color-field.json +13 -3
  106. package/manifest/components/color-picker.json +75 -17
  107. package/manifest/components/color-slider.json +12 -3
  108. package/manifest/components/color-swatch.json +13 -2
  109. package/manifest/components/colors-section.json +10 -7
  110. package/manifest/components/combobox.json +81 -18
  111. package/manifest/components/command-palette.json +57 -13
  112. package/manifest/components/compaction-row.json +35 -7
  113. package/manifest/components/comparison-card.json +17 -4
  114. package/manifest/components/composer-attachment-chip.json +9 -2
  115. package/manifest/components/composer-bar.json +4 -1
  116. package/manifest/components/composer-command-item.json +8 -2
  117. package/manifest/components/composer-context.json +4 -1
  118. package/manifest/components/composer-input.json +5 -1
  119. package/manifest/components/composer-menu-item.json +4 -1
  120. package/manifest/components/composer-menu.json +12 -2
  121. package/manifest/components/composer-model-item.json +8 -2
  122. package/manifest/components/composer-model-trigger.json +8 -2
  123. package/manifest/components/composer-person-item.json +8 -2
  124. package/manifest/components/composer-send.json +8 -2
  125. package/manifest/components/composer-voice-button.json +4 -1
  126. package/manifest/components/composer-voice.json +8 -2
  127. package/manifest/components/composer.json +76 -17
  128. package/manifest/components/computer-use.json +17 -4
  129. package/manifest/components/confidence-marker.json +13 -3
  130. package/manifest/components/connection-state.json +23 -4
  131. package/manifest/components/container.json +14 -2
  132. package/manifest/components/context-breakdown.json +8 -2
  133. package/manifest/components/context-menu.json +16 -4
  134. package/manifest/components/context-usage.json +16 -4
  135. package/manifest/components/conversation-search.json +22 -5
  136. package/manifest/components/copy-button.json +32 -7
  137. package/manifest/components/cost-meter.json +12 -3
  138. package/manifest/components/cue-logotype.json +17 -3
  139. package/manifest/components/cue-mark.json +17 -3
  140. package/manifest/components/cue-portal-frame.json +14 -4
  141. package/manifest/components/data-row.json +21 -7
  142. package/manifest/components/data-table-pagination.json +18 -4
  143. package/manifest/components/data-table-toolbar.json +30 -7
  144. package/manifest/components/data-tree.json +42 -9
  145. package/manifest/components/date-field.json +13 -2
  146. package/manifest/components/date-picker.json +81 -19
  147. package/manifest/components/date-range-picker.json +81 -19
  148. package/manifest/components/day-separator.json +4 -1
  149. package/manifest/components/delegation-card.json +64 -12
  150. package/manifest/components/density.json +25 -5
  151. package/manifest/components/description-list.json +8 -1
  152. package/manifest/components/diagram.json +33 -7
  153. package/manifest/components/dialog.json +29 -6
  154. package/manifest/components/disclosure.json +31 -7
  155. package/manifest/components/dmx-bar.json +16 -4
  156. package/manifest/components/dmx-strip.json +20 -5
  157. package/manifest/components/document-reference.json +21 -5
  158. package/manifest/components/draft-restore.json +18 -4
  159. package/manifest/components/drawer.json +30 -6
  160. package/manifest/components/dropdown-menu.json +55 -10
  161. package/manifest/components/edit-message.json +32 -7
  162. package/manifest/components/elements-command-palette.json +27 -6
  163. package/manifest/components/elements-data-table.json +9 -2
  164. package/manifest/components/elements-timeline.json +8 -2
  165. package/manifest/components/elicitation-form.json +31 -6
  166. package/manifest/components/empty-state-composer.json +9 -2
  167. package/manifest/components/empty-state-suggestion.json +4 -1
  168. package/manifest/components/empty-state.json +25 -5
  169. package/manifest/components/end-of-turn-summary.json +16 -4
  170. package/manifest/components/env-var-input.json +54 -12
  171. package/manifest/components/error-state.json +17 -4
  172. package/manifest/components/export-dialog.json +27 -11
  173. package/manifest/components/eyebrow.json +4 -1
  174. package/manifest/components/feedback-dialog.json +33 -7
  175. package/manifest/components/field-description.json +4 -1
  176. package/manifest/components/field-error.json +13 -3
  177. package/manifest/components/field-label.json +4 -1
  178. package/manifest/components/field.json +4 -1
  179. package/manifest/components/file-tree.json +16 -4
  180. package/manifest/components/file-upload.json +58 -13
  181. package/manifest/components/flow-graph.json +12 -3
  182. package/manifest/components/folder-icon.json +1 -7
  183. package/manifest/components/footer.json +24 -4
  184. package/manifest/components/frac.json +10 -2
  185. package/manifest/components/generation-loader.json +17 -3
  186. package/manifest/components/generative-ui.json +39 -7
  187. package/manifest/components/grid.json +56 -5
  188. package/manifest/components/group-bar.json +25 -6
  189. package/manifest/components/guardrail-notice.json +22 -5
  190. package/manifest/components/hover-card.json +45 -8
  191. package/manifest/components/icon-button.json +22 -4
  192. package/manifest/components/image-generation.json +8 -2
  193. package/manifest/components/info-tip.json +42 -7
  194. package/manifest/components/inline-citation.json +14 -3
  195. package/manifest/components/input-group.json +24 -5
  196. package/manifest/components/input.json +13 -3
  197. package/manifest/components/item.json +42 -8
  198. package/manifest/components/job-progress.json +25 -6
  199. package/manifest/components/launcher-bubble.json +32 -7
  200. package/manifest/components/ledger.json +87 -19
  201. package/manifest/components/link.json +16 -3
  202. package/manifest/components/live-region-announcer.json +21 -5
  203. package/manifest/components/log-viewer.json +42 -10
  204. package/manifest/components/map-answer.json +17 -4
  205. package/manifest/components/markdown-text.json +36 -5
  206. package/manifest/components/math-block.json +12 -3
  207. package/manifest/components/mcp-server-icon.json +1 -7
  208. package/manifest/components/mcp-server-panel.json +18 -4
  209. package/manifest/components/memory-chips.json +9 -2
  210. package/manifest/components/menubar.json +33 -7
  211. package/manifest/components/message-actions.json +32 -7
  212. package/manifest/components/message-attachments.json +9 -2
  213. package/manifest/components/message-branches.json +14 -3
  214. package/manifest/components/message-list.json +27 -6
  215. package/manifest/components/message-pair.json +25 -5
  216. package/manifest/components/message-queue.json +13 -3
  217. package/manifest/components/message-timing.json +8 -2
  218. package/manifest/components/message.json +41 -9
  219. package/manifest/components/meter.json +43 -7
  220. package/manifest/components/mobile-composer.json +47 -10
  221. package/manifest/components/model-picker.json +13 -3
  222. package/manifest/components/multi-select.json +78 -17
  223. package/manifest/components/musical-time-input.json +34 -8
  224. package/manifest/components/navigation-menu.json +54 -12
  225. package/manifest/components/node-card.json +42 -7
  226. package/manifest/components/node-handle.json +17 -2
  227. package/manifest/components/number-field.json +28 -6
  228. package/manifest/components/number-ticker.json +8 -2
  229. package/manifest/components/onboarding.json +18 -4
  230. package/manifest/components/otp-field.json +43 -10
  231. package/manifest/components/page-shell.json +35 -6
  232. package/manifest/components/pagination.json +21 -5
  233. package/manifest/components/panel-header.json +15 -3
  234. package/manifest/components/password-input.json +38 -8
  235. package/manifest/components/permission-grant.json +28 -5
  236. package/manifest/components/permission-scopes.json +57 -12
  237. package/manifest/components/piano-keyboard.json +38 -9
  238. package/manifest/components/plussie.json +34 -5
  239. package/manifest/components/popover.json +45 -8
  240. package/manifest/components/preset-section.json +14 -8
  241. package/manifest/components/progress.json +25 -6
  242. package/manifest/components/prompt-library.json +27 -6
  243. package/manifest/components/queue-dock.json +36 -8
  244. package/manifest/components/quota-banner.json +25 -6
  245. package/manifest/components/quote-reply.json +29 -7
  246. package/manifest/components/radio-group.json +12 -2
  247. package/manifest/components/radio.json +17 -3
  248. package/manifest/components/rating.json +60 -13
  249. package/manifest/components/read-aloud.json +35 -8
  250. package/manifest/components/reasoning-effort.json +17 -4
  251. package/manifest/components/reasoning-panel.json +33 -8
  252. package/manifest/components/recommendation-card.json +35 -10
  253. package/manifest/components/regenerate-menu.json +22 -5
  254. package/manifest/components/replay-player.json +29 -7
  255. package/manifest/components/research-report.json +12 -3
  256. package/manifest/components/resizable.json +4 -1
  257. package/manifest/components/retrieval-chunks.json +16 -4
  258. package/manifest/components/revert-dock.json +61 -14
  259. package/manifest/components/reviewable-diff.json +23 -5
  260. package/manifest/components/risk-badge.json +18 -3
  261. package/manifest/components/row.json +17 -4
  262. package/manifest/components/schedule-card.json +25 -6
  263. package/manifest/components/score-breakdown.json +20 -5
  264. package/manifest/components/scroll-anchor.json +13 -3
  265. package/manifest/components/scroll-area.json +31 -8
  266. package/manifest/components/scrollable-tabs-list.json +12 -4
  267. package/manifest/components/scrub-input.json +84 -18
  268. package/manifest/components/seam-cell.json +19 -3
  269. package/manifest/components/seam-grid.json +12 -3
  270. package/manifest/components/search-input.json +49 -10
  271. package/manifest/components/section-header.json +36 -8
  272. package/manifest/components/segmented-control.json +50 -11
  273. package/manifest/components/select.json +74 -16
  274. package/manifest/components/separator.json +4 -1
  275. package/manifest/components/settings-panel.json +41 -9
  276. package/manifest/components/shape-section.json +10 -7
  277. package/manifest/components/shared-conversation.json +21 -5
  278. package/manifest/components/sheet.json +29 -6
  279. package/manifest/components/shimmer-label.json +4 -2
  280. package/manifest/components/sidebar.json +60 -13
  281. package/manifest/components/skill-icon.json +1 -7
  282. package/manifest/components/slider.json +22 -5
  283. package/manifest/components/sources.json +17 -4
  284. package/manifest/components/sparkline.json +17 -4
  285. package/manifest/components/speaker-identity.json +4 -1
  286. package/manifest/components/spec-sheet.json +16 -4
  287. package/manifest/components/spectrum-visualizer.json +41 -10
  288. package/manifest/components/spinner.json +12 -2
  289. package/manifest/components/stack-icon.json +1 -7
  290. package/manifest/components/stack.json +54 -7
  291. package/manifest/components/stacks-matrix-icon.json +1 -7
  292. package/manifest/components/stat.json +28 -4
  293. package/manifest/components/status-bar.json +50 -9
  294. package/manifest/components/status-dot.json +23 -4
  295. package/manifest/components/stepper.json +22 -5
  296. package/manifest/components/stopped-run.json +19 -4
  297. package/manifest/components/streaming-text.json +12 -3
  298. package/manifest/components/subagent-list.json +21 -5
  299. package/manifest/components/suggestions.json +27 -5
  300. package/manifest/components/swap-label.json +18 -4
  301. package/manifest/components/switch.json +18 -3
  302. package/manifest/components/table-scroll-region.json +4 -1
  303. package/manifest/components/table.json +54 -11
  304. package/manifest/components/tabs.json +16 -5
  305. package/manifest/components/tags-input.json +79 -17
  306. package/manifest/components/tail-status.json +37 -8
  307. package/manifest/components/terminal-block.json +25 -5
  308. package/manifest/components/terminal-frame.json +34 -8
  309. package/manifest/components/textarea.json +8 -3
  310. package/manifest/components/theme-configurator.json +47 -14
  311. package/manifest/components/theme-provider.json +97 -18
  312. package/manifest/components/thinking-indicator.json +8 -2
  313. package/manifest/components/thread-list.json +13 -3
  314. package/manifest/components/thread-search.json +22 -5
  315. package/manifest/components/threshold-rail.json +77 -14
  316. package/manifest/components/time-boundary.json +8 -2
  317. package/manifest/components/time-field.json +13 -2
  318. package/manifest/components/timeline-ruler.json +51 -12
  319. package/manifest/components/timeline.json +19 -3
  320. package/manifest/components/title-bar.json +19 -4
  321. package/manifest/components/toast.json +12 -3
  322. package/manifest/components/todo-list.json +8 -2
  323. package/manifest/components/toggle-group.json +33 -7
  324. package/manifest/components/toggle.json +23 -4
  325. package/manifest/components/token-editor.json +26 -10
  326. package/manifest/components/tool-call-card.json +83 -16
  327. package/manifest/components/tool-call.json +37 -9
  328. package/manifest/components/tool-error.json +34 -8
  329. package/manifest/components/tool-group.json +17 -4
  330. package/manifest/components/tool-timeline.json +37 -9
  331. package/manifest/components/toolbar.json +37 -8
  332. package/manifest/components/tooltip.json +41 -7
  333. package/manifest/components/trace-waterfall.json +12 -3
  334. package/manifest/components/tree-visibility-toggle.json +18 -3
  335. package/manifest/components/tree.json +52 -11
  336. package/manifest/components/turn-footer.json +36 -8
  337. package/manifest/components/two-step-button.json +46 -9
  338. package/manifest/components/typing-indicator.json +8 -1
  339. package/manifest/components/universe-grid.json +37 -10
  340. package/manifest/components/unread-divider.json +4 -1
  341. package/manifest/components/usage-chart.json +46 -9
  342. package/manifest/components/verdict-row.json +20 -5
  343. package/manifest/components/voice-conversation.json +37 -7
  344. package/manifest/components/web-preview.json +23 -5
  345. package/manifest/components/web-search.json +20 -5
  346. package/manifest/components/work-collapse.json +30 -7
  347. package/manifest/fixtures.json +106 -0
  348. package/manifest/manifest.json +449 -310
  349. package/manifest/tokens.json +122 -12
  350. package/package.json +16 -6
  351. package/dist/theming/_presets.d.ts +0 -11
  352. package/dist/theming/_presets.js +0 -678
@@ -12,35 +12,51 @@
12
12
  "type": "readonly string[]",
13
13
  "required": true,
14
14
  "defaultValue": null,
15
- "description": "The log of things worth saying, oldest first. Everything that arrives at\nthe end of it after the announcer last looked is queued and read out in\norder.\n\nAn **append-only** list: the announcer remembers how much of it it has\nseen, so a list that is trimmed at the head loses the announcements that\nwere trimmed with it. Keep the run's log growing, or remount the announcer\nwith a new `key` when you start a new one."
15
+ "description": "The log of things worth saying, oldest first. Everything that arrives at\nthe end of it after the announcer last looked is queued and read out in\norder.\n\nAn **append-only** list: the announcer remembers how much of it it has\nseen, so a list that is trimmed at the head loses the announcements that\nwere trimmed with it. Keep the run's log growing, or remount the announcer\nwith a new `key` when you start a new one.",
16
+ "control": {
17
+ "kind": "array",
18
+ "fixture": "agent.transcript"
19
+ }
16
20
  },
17
21
  {
18
22
  "name": "spacing",
19
23
  "type": "number",
20
24
  "required": false,
21
25
  "defaultValue": "400",
22
- "description": "Milliseconds between announcements. Defaults to `400`, the reference's own\nspacing, which is roughly how long a short phrase takes to speak.\n\nThis is the whole point of the component: a polite announcement that\narrives while another is being spoken replaces it, so an unspaced queue is\na queue most of which is never heard."
26
+ "description": "Milliseconds between announcements. Defaults to `400`, the reference's own\nspacing, which is roughly how long a short phrase takes to speak.\n\nThis is the whole point of the component: a polite announcement that\narrives while another is being spoken replaces it, so an unspaced queue is\na queue most of which is never heard.",
27
+ "control": {
28
+ "kind": "number"
29
+ }
23
30
  },
24
31
  {
25
32
  "name": "depth",
26
33
  "type": "number",
27
34
  "required": false,
28
35
  "defaultValue": "5",
29
- "description": "How many announcements may wait at once. Defaults to `5`, and the **oldest**\nare dropped past it — five deep behind a busy run, the newest is the true\none and the backlog is history."
36
+ "description": "How many announcements may wait at once. Defaults to `5`, and the **oldest**\nare dropped past it — five deep behind a busy run, the newest is the true\none and the backlog is history.",
37
+ "control": {
38
+ "kind": "number"
39
+ }
30
40
  },
31
41
  {
32
42
  "name": "paused",
33
43
  "type": "boolean",
34
44
  "required": false,
35
45
  "defaultValue": "false",
36
- "description": "Hold everything without dropping it: a modal is open, or the surface is\nbehind something a reader is working in. The queue drains from where it\nstopped when this goes back to `false`.\n\nA prop rather than an internal ref-count of open overlays, deliberately:\nthis library has its own portal and overlay contract, and an announcer with\na second opinion about what is on screen would be wrong exactly when it\nmattered."
46
+ "description": "Hold everything without dropping it: a modal is open, or the surface is\nbehind something a reader is working in. The queue drains from where it\nstopped when this goes back to `false`.\n\nA prop rather than an internal ref-count of open overlays, deliberately:\nthis library has its own portal and overlay contract, and an announcer with\na second opinion about what is on screen would be wrong exactly when it\nmattered.",
47
+ "control": {
48
+ "kind": "boolean"
49
+ }
37
50
  },
38
51
  {
39
52
  "name": "announceOnMount",
40
53
  "type": "boolean",
41
54
  "required": false,
42
55
  "defaultValue": "false",
43
- "description": "Announce the messages that are already in the list at mount. Defaults to\n`false` — the reference's \"skip the first observation\" guard, and the\nreason restoring a session does not read the whole transcript aloud.\n\nThe pause rules still hold over it: a backlog handed to an announcer that\nmounts into a hidden tab, or with `paused` already set, waits there rather\nthan spending its first line. Restoring a session into a background tab is\nthe case, and it is the one the rules exist for."
56
+ "description": "Announce the messages that are already in the list at mount. Defaults to\n`false` — the reference's \"skip the first observation\" guard, and the\nreason restoring a session does not read the whole transcript aloud.\n\nThe pause rules still hold over it: a backlog handed to an announcer that\nmounts into a hidden tab, or with `paused` already set, waits there rather\nthan spending its first line. Restoring a session into a background tab is\nthe case, and it is the one the rules exist for.",
57
+ "control": {
58
+ "kind": "boolean"
59
+ }
44
60
  }
45
61
  ],
46
62
  "typeReferences": [
@@ -15,70 +15,102 @@
15
15
  "type": "readonly LogLine[]",
16
16
  "required": true,
17
17
  "defaultValue": null,
18
- "description": "The buffer, oldest first."
18
+ "description": "The buffer, oldest first.",
19
+ "control": {
20
+ "kind": "array"
21
+ }
19
22
  },
20
23
  {
21
24
  "name": "follow",
22
25
  "type": "boolean",
23
26
  "required": false,
24
27
  "defaultValue": "true",
25
- "description": "Stick to the bottom as lines arrive. Defaults to `true`."
28
+ "description": "Stick to the bottom as lines arrive. Defaults to `true`.",
29
+ "control": {
30
+ "kind": "boolean"
31
+ }
26
32
  },
27
33
  {
28
34
  "name": "filters",
29
35
  "type": "false | readonly LogLevel[]",
30
36
  "required": false,
31
37
  "defaultValue": null,
32
- "description": "Which levels get a filter chip. Defaults to the levels present in `lines`;\n`false` hides the strip entirely. Levels with no chip are always shown."
38
+ "description": "Which levels get a filter chip. Defaults to the levels present in `lines`;\n`false` hides the strip entirely. Levels with no chip are always shown.",
39
+ "control": {
40
+ "kind": "opaque"
41
+ }
33
42
  },
34
43
  {
35
44
  "name": "height",
36
45
  "type": "number",
37
46
  "required": true,
38
47
  "defaultValue": null,
39
- "description": "Viewer height in px at the 16px root."
48
+ "description": "Viewer height in px at the 16px root.",
49
+ "control": {
50
+ "kind": "number"
51
+ }
40
52
  },
41
53
  {
42
54
  "name": "rowHeight",
43
55
  "type": "number",
44
56
  "required": false,
45
57
  "defaultValue": null,
46
- "description": "Row height in px. Defaults to the short control rung at the ambient density."
58
+ "description": "Row height in px. Defaults to the short control rung at the ambient density.",
59
+ "control": {
60
+ "kind": "number"
61
+ }
47
62
  },
48
63
  {
49
64
  "name": "maxLines",
50
65
  "type": "number",
51
66
  "required": false,
52
67
  "defaultValue": "5000",
53
- "description": "Cap on retained lines; the oldest are dropped. Defaults to `5000`."
68
+ "description": "Cap on retained lines; the oldest are dropped. Defaults to `5000`.",
69
+ "control": {
70
+ "kind": "number"
71
+ }
54
72
  },
55
73
  {
56
74
  "name": "formatTimestamp",
57
75
  "type": "((ts: number) => string)",
58
76
  "required": false,
59
77
  "defaultValue": "defaultTimestamp",
60
- "description": "Render a line's timestamp. Defaults to a local `HH:MM:SS`."
78
+ "description": "Render a line's timestamp. Defaults to a local `HH:MM:SS`.",
79
+ "control": {
80
+ "kind": "callback",
81
+ "fixture": "callback.log"
82
+ }
61
83
  },
62
84
  {
63
85
  "name": "emptyLabel",
64
86
  "type": "string",
65
87
  "required": false,
66
88
  "defaultValue": "No output",
67
- "description": "What to say when there is nothing to show. Defaults to `\"No output\"`."
89
+ "description": "What to say when there is nothing to show. Defaults to `\"No output\"`.",
90
+ "control": {
91
+ "kind": "string"
92
+ }
68
93
  },
69
94
  {
70
95
  "name": "newLinesLabel",
71
96
  "type": "((count: number) => string)",
72
97
  "required": false,
73
98
  "defaultValue": "(count) => `${count} new line${count === 1 ? \"\" : \"s\"}`",
74
- "description": "Label for the catch-up pill. Defaults to `\"3 new lines\"`."
99
+ "description": "Label for the catch-up pill. Defaults to `\"3 new lines\"`.",
100
+ "control": {
101
+ "kind": "callback",
102
+ "fixture": "callback.log"
103
+ }
75
104
  },
76
105
  {
77
106
  "name": "aria-label",
78
107
  "type": "string",
79
108
  "required": false,
80
109
  "defaultValue": null,
81
- "description": "Accessible name for the log region. Required in practice — name the stream."
110
+ "description": "Accessible name for the log region. Required in practice — name the stream.",
111
+ "control": {
112
+ "kind": "string"
113
+ }
82
114
  }
83
115
  ],
84
116
  "typeReferences": [
@@ -12,28 +12,41 @@
12
12
  "type": "readonly MapPin[]",
13
13
  "required": true,
14
14
  "defaultValue": null,
15
- "description": "Places in the answer, positioned as percentages so the element needs no tiles."
15
+ "description": "Places in the answer, positioned as percentages so the element needs no tiles.",
16
+ "control": {
17
+ "kind": "array"
18
+ }
16
19
  },
17
20
  {
18
21
  "name": "activeId",
19
22
  "type": "string",
20
23
  "required": true,
21
24
  "defaultValue": null,
22
- "description": "Which pin is selected, in both the plot and the list."
25
+ "description": "Which pin is selected, in both the plot and the list.",
26
+ "control": {
27
+ "kind": "string"
28
+ }
23
29
  },
24
30
  {
25
31
  "name": "route",
26
32
  "type": "boolean",
27
33
  "required": false,
28
34
  "defaultValue": null,
29
- "description": "Draws a dashed path through the pins in order."
35
+ "description": "Draws a dashed path through the pins in order.",
36
+ "control": {
37
+ "kind": "boolean"
38
+ }
30
39
  },
31
40
  {
32
41
  "name": "onSelect",
33
42
  "type": "((id: string) => void)",
34
43
  "required": false,
35
44
  "defaultValue": null,
36
- "description": "Called when a pin or its list row is chosen. Both surfaces report the same id."
45
+ "description": "Called when a pin or its list row is chosen. Both surfaces report the same id.",
46
+ "control": {
47
+ "kind": "callback",
48
+ "fixture": "callback.log"
49
+ }
37
50
  }
38
51
  ],
39
52
  "typeReferences": [
@@ -15,35 +15,62 @@
15
15
  "type": "string",
16
16
  "required": true,
17
17
  "defaultValue": null,
18
- "description": "The markdown source. Untrusted model output is precisely what this prop is\nfor — see the component's own documentation for what is and is not\nrendered."
18
+ "description": "The markdown source. Untrusted model output is precisely what this prop is\nfor — see the component's own documentation for what is and is not\nrendered.",
19
+ "control": {
20
+ "kind": "string"
21
+ }
19
22
  },
20
23
  {
21
24
  "name": "streaming",
22
25
  "type": "boolean",
23
26
  "required": false,
24
27
  "defaultValue": "false",
25
- "description": "The turn is still arriving, so hide the token being typed.\n\nOff by default, because sealing is a small edit to the source and a\nsettled document should be rendered as written. Turn it on for the tail of\na stream and off again when the turn completes; the rendered output is\nidentical once nothing is half-written."
28
+ "description": "The turn is still arriving, so hide the token being typed.\n\nOff by default, because sealing is a small edit to the source and a\nsettled document should be rendered as written. Turn it on for the tail of\na stream and off again when the turn completes; the rendered output is\nidentical once nothing is half-written.",
29
+ "control": {
30
+ "kind": "boolean"
31
+ }
26
32
  },
27
33
  {
28
34
  "name": "target",
29
35
  "type": "\"_self\" | \"_blank\"",
30
36
  "required": false,
31
37
  "defaultValue": "_blank",
32
- "description": "Where a link opens. `_blank` by default: a transcript that navigates away\nloses the run. `rel` is not configurable — every link gets\n`noopener noreferrer nofollow` whatever this says."
38
+ "description": "Where a link opens. `_blank` by default: a transcript that navigates away\nloses the run. `rel` is not configurable — every link gets\n`noopener noreferrer nofollow` whatever this says.",
39
+ "control": {
40
+ "kind": "enum",
41
+ "members": [
42
+ "_self",
43
+ "_blank"
44
+ ]
45
+ }
33
46
  },
34
47
  {
35
48
  "name": "headingLevel",
36
49
  "type": "4 | 2 | 3",
37
50
  "required": false,
38
51
  "defaultValue": "2",
39
- "description": "The heading level `#` renders at; `##` and below follow it, clamped at\n`h6`. Defaults to `2`, because model output is a passage inside a page\nthat already owns its `h1`."
52
+ "description": "The heading level `#` renders at; `##` and below follow it, clamped at\n`h6`. Defaults to `2`, because model output is a passage inside a page\nthat already owns its `h1`.",
53
+ "control": {
54
+ "kind": "enum",
55
+ "members": [
56
+ 4,
57
+ 2,
58
+ 3
59
+ ],
60
+ "min": 2,
61
+ "max": 4
62
+ }
40
63
  },
41
64
  {
42
65
  "name": "renderCodeBlock",
43
66
  "type": "((block: MarkdownCodeBlock) => ReactNode)",
44
67
  "required": false,
45
68
  "defaultValue": null,
46
- "description": "Render fenced code blocks with something other than plain text — a\nhighlighter, a copy button, a diff view.\n\nUnset, a block is a `<pre><code>` containing the model's characters and\nnothing else. That is the default on purpose: a highlighter is a second\nparser over the same untrusted string, usually one that emits HTML, and\nopting into it should be a line of code somebody wrote rather than a\nbehaviour they inherited."
69
+ "description": "Render fenced code blocks with something other than plain text — a\nhighlighter, a copy button, a diff view.\n\nUnset, a block is a `<pre><code>` containing the model's characters and\nnothing else. That is the default on purpose: a highlighter is a second\nparser over the same untrusted string, usually one that emits HTML, and\nopting into it should be a line of code somebody wrote rather than a\nbehaviour they inherited.",
70
+ "control": {
71
+ "kind": "callback",
72
+ "fixture": "callback.log"
73
+ }
47
74
  }
48
75
  ],
49
76
  "typeReferences": [
@@ -54,7 +81,11 @@
54
81
  "variants": {},
55
82
  "defaultVariants": {},
56
83
  "tokensUsed": [
84
+ "--cue-accent",
57
85
  "--cue-border",
86
+ "--cue-fg",
87
+ "--cue-fg-muted",
88
+ "--cue-fg-subtle",
58
89
  "--cue-radius-control",
59
90
  "--cue-space-1",
60
91
  "--cue-space-2",
@@ -12,21 +12,30 @@
12
12
  "type": "string",
13
13
  "required": false,
14
14
  "defaultValue": null,
15
- "description": "Optional eyebrow above the working."
15
+ "description": "Optional eyebrow above the working.",
16
+ "control": {
17
+ "kind": "string"
18
+ }
16
19
  },
17
20
  {
18
21
  "name": "steps",
19
22
  "type": "readonly MathStep[]",
20
23
  "required": true,
21
24
  "defaultValue": null,
22
- "description": "Each step is a node, so you compose expressions from the exported Frac, Sup, and\nSub helpers rather than passing a string to parse."
25
+ "description": "Each step is a node, so you compose expressions from the exported Frac, Sup, and\nSub helpers rather than passing a string to parse.",
26
+ "control": {
27
+ "kind": "array"
28
+ }
23
29
  },
24
30
  {
25
31
  "name": "visibleSteps",
26
32
  "type": "number",
27
33
  "required": true,
28
34
  "defaultValue": null,
29
- "description": "How much of the derivation has been shown."
35
+ "description": "How much of the derivation has been shown.",
36
+ "control": {
37
+ "kind": "number"
38
+ }
30
39
  }
31
40
  ],
32
41
  "typeReferences": [
@@ -14,13 +14,7 @@
14
14
  "parts": [],
15
15
  "variants": {},
16
16
  "defaultVariants": {},
17
- "tokensUsed": [
18
- "--cue-danger",
19
- "--cue-fg",
20
- "--cue-icon-",
21
- "--cue-icon-md",
22
- "--cue-icon-sm"
23
- ],
17
+ "tokensUsed": [],
24
18
  "summary": "An MCP server in the registry: a thing an agent connects *to*.",
25
19
  "examples": [],
26
20
  "status": "todo-docs",
@@ -14,28 +14,42 @@
14
14
  "type": "readonly McpServer[]",
15
15
  "required": true,
16
16
  "defaultValue": null,
17
- "description": "Every configured server, connected or not. The header counts how many are live."
17
+ "description": "Every configured server, connected or not. The header counts how many are live.",
18
+ "control": {
19
+ "kind": "array"
20
+ }
18
21
  },
19
22
  {
20
23
  "name": "expandedId",
21
24
  "type": "string",
22
25
  "required": false,
23
26
  "defaultValue": null,
24
- "description": "Which server is open. Only one expands at a time; omit for an all-collapsed list."
27
+ "description": "Which server is open. Only one expands at a time; omit for an all-collapsed list.",
28
+ "control": {
29
+ "kind": "string"
30
+ }
25
31
  },
26
32
  {
27
33
  "name": "onToggle",
28
34
  "type": "((id: string) => void)",
29
35
  "required": false,
30
36
  "defaultValue": null,
31
- "description": "Called when a server row is expanded or collapsed."
37
+ "description": "Called when a server row is expanded or collapsed.",
38
+ "control": {
39
+ "kind": "callback",
40
+ "fixture": "callback.log"
41
+ }
32
42
  },
33
43
  {
34
44
  "name": "onAuthorize",
35
45
  "type": "((id: string) => void)",
36
46
  "required": false,
37
47
  "defaultValue": null,
38
- "description": "Called from the Authorize button, shown only while a server needs auth."
48
+ "description": "Called from the Authorize button, shown only while a server needs auth.",
49
+ "control": {
50
+ "kind": "callback",
51
+ "fixture": "callback.log"
52
+ }
39
53
  }
40
54
  ],
41
55
  "typeReferences": [
@@ -14,14 +14,21 @@
14
14
  "type": "readonly MemoryChip[]",
15
15
  "required": true,
16
16
  "defaultValue": null,
17
- "description": "What is remembered. Anything not marked existing is counted as new this turn and\ntinted."
17
+ "description": "What is remembered. Anything not marked existing is counted as new this turn and\ntinted.",
18
+ "control": {
19
+ "kind": "array"
20
+ }
18
21
  },
19
22
  {
20
23
  "name": "onForget",
21
24
  "type": "((id: string) => void)",
22
25
  "required": false,
23
26
  "defaultValue": null,
24
- "description": "Called to drop a fact. Every chip is removable, including ones it just learned."
27
+ "description": "Called to drop a fact. Every chip is removable, including ones it just learned.",
28
+ "control": {
29
+ "kind": "callback",
30
+ "fixture": "callback.log"
31
+ }
25
32
  }
26
33
  ],
27
34
  "typeReferences": [
@@ -25,7 +25,10 @@
25
25
  "type": "string",
26
26
  "required": false,
27
27
  "defaultValue": null,
28
- "description": "Extra classes for the bar."
28
+ "description": "Extra classes for the bar.",
29
+ "control": {
30
+ "kind": "string"
31
+ }
29
32
  }
30
33
  ],
31
34
  "typeReferences": [
@@ -51,7 +54,10 @@
51
54
  "type": "string",
52
55
  "required": false,
53
56
  "defaultValue": null,
54
- "description": "Extra classes for the trigger."
57
+ "description": "Extra classes for the trigger.",
58
+ "control": {
59
+ "kind": "string"
60
+ }
55
61
  }
56
62
  ],
57
63
  "typeReferences": [
@@ -68,35 +74,55 @@
68
74
  "type": "string",
69
75
  "required": false,
70
76
  "defaultValue": null,
71
- "description": "Extra classes for the popup surface."
77
+ "description": "Extra classes for the popup surface.",
78
+ "control": {
79
+ "kind": "string"
80
+ }
72
81
  },
73
82
  {
74
83
  "name": "align",
75
84
  "type": "\"center\" | \"end\" | \"start\"",
76
85
  "required": false,
77
86
  "defaultValue": "start",
78
- "description": "Alignment along the bottom of the trigger. Defaults to `\"start\"`."
87
+ "description": "Alignment along the bottom of the trigger. Defaults to `\"start\"`.",
88
+ "control": {
89
+ "kind": "enum",
90
+ "members": [
91
+ "center",
92
+ "end",
93
+ "start"
94
+ ]
95
+ }
79
96
  },
80
97
  {
81
98
  "name": "keepMounted",
82
99
  "type": "boolean",
83
100
  "required": false,
84
101
  "defaultValue": null,
85
- "description": "Keep the popup mounted while closed."
102
+ "description": "Keep the popup mounted while closed.",
103
+ "control": {
104
+ "kind": "boolean"
105
+ }
86
106
  },
87
107
  {
88
108
  "name": "positionerClassName",
89
109
  "type": "string",
90
110
  "required": false,
91
111
  "defaultValue": null,
92
- "description": "Extra classes for the positioner that places the popup."
112
+ "description": "Extra classes for the positioner that places the popup.",
113
+ "control": {
114
+ "kind": "string"
115
+ }
93
116
  },
94
117
  {
95
118
  "name": "sideOffset",
96
119
  "type": "number | OffsetFunction",
97
120
  "required": false,
98
121
  "defaultValue": "4",
99
- "description": "Gap in px between trigger and popup. Defaults to `4`."
122
+ "description": "Gap in px between trigger and popup. Defaults to `4`.",
123
+ "control": {
124
+ "kind": "opaque"
125
+ }
100
126
  }
101
127
  ],
102
128
  "typeReferences": [
@@ -14,49 +14,74 @@
14
14
  "type": "boolean",
15
15
  "required": true,
16
16
  "defaultValue": null,
17
- "description": "When true the copy button shows a green check confirmation."
17
+ "description": "When true the copy button shows a green check confirmation.",
18
+ "control": {
19
+ "kind": "boolean"
20
+ }
18
21
  },
19
22
  {
20
23
  "name": "reaction",
21
24
  "type": "Reaction",
22
25
  "required": true,
23
26
  "defaultValue": null,
24
- "description": "Active thumbs reaction, or null when none is selected."
27
+ "description": "Active thumbs reaction, or null when none is selected.",
28
+ "control": {
29
+ "kind": "opaque"
30
+ }
25
31
  },
26
32
  {
27
33
  "name": "regenerating",
28
34
  "type": "boolean",
29
35
  "required": true,
30
36
  "defaultValue": null,
31
- "description": "When true the regenerate icon spins to show work in progress."
37
+ "description": "When true the regenerate icon spins to show work in progress.",
38
+ "control": {
39
+ "kind": "boolean"
40
+ }
32
41
  },
33
42
  {
34
43
  "name": "onCopy",
35
44
  "type": "() => void",
36
45
  "required": true,
37
46
  "defaultValue": null,
38
- "description": "Called when the copy control is pressed."
47
+ "description": "Called when the copy control is pressed.",
48
+ "control": {
49
+ "kind": "callback",
50
+ "fixture": "callback.log"
51
+ }
39
52
  },
40
53
  {
41
54
  "name": "onReactionChange",
42
55
  "type": "(reaction: Reaction) => void",
43
56
  "required": true,
44
57
  "defaultValue": null,
45
- "description": "Called when the user toggles thumbs up or thumbs down."
58
+ "description": "Called when the user toggles thumbs up or thumbs down.",
59
+ "control": {
60
+ "kind": "callback",
61
+ "fixture": "callback.log"
62
+ }
46
63
  },
47
64
  {
48
65
  "name": "onRegenerate",
49
66
  "type": "() => void",
50
67
  "required": true,
51
68
  "defaultValue": null,
52
- "description": "Called when the regenerate control is pressed."
69
+ "description": "Called when the regenerate control is pressed.",
70
+ "control": {
71
+ "kind": "callback",
72
+ "fixture": "callback.log"
73
+ }
53
74
  },
54
75
  {
55
76
  "name": "onMore",
56
77
  "type": "() => void",
57
78
  "required": true,
58
79
  "defaultValue": null,
59
- "description": "Called when the overflow menu control is pressed."
80
+ "description": "Called when the overflow menu control is pressed.",
81
+ "control": {
82
+ "kind": "callback",
83
+ "fixture": "callback.log"
84
+ }
60
85
  }
61
86
  ],
62
87
  "typeReferences": [
@@ -14,14 +14,21 @@
14
14
  "type": "readonly MessageAttachmentItem[]",
15
15
  "required": true,
16
16
  "defaultValue": null,
17
- "description": "Files carried by the message. Images render as a thumbnail row, everything else as\na chip."
17
+ "description": "Files carried by the message. Images render as a thumbnail row, everything else as\na chip.",
18
+ "control": {
19
+ "kind": "array"
20
+ }
18
21
  },
19
22
  {
20
23
  "name": "onOpen",
21
24
  "type": "((id: string) => void)",
22
25
  "required": false,
23
26
  "defaultValue": null,
24
- "description": "Called when an attachment is opened for preview."
27
+ "description": "Called when an attachment is opened for preview.",
28
+ "control": {
29
+ "kind": "callback",
30
+ "fixture": "callback.log"
31
+ }
25
32
  }
26
33
  ],
27
34
  "typeReferences": [
@@ -14,21 +14,32 @@
14
14
  "type": "readonly string[]",
15
15
  "required": true,
16
16
  "defaultValue": null,
17
- "description": "Alternate regenerated answers the user can step through."
17
+ "description": "Alternate regenerated answers the user can step through.",
18
+ "control": {
19
+ "kind": "array",
20
+ "fixture": "agent.transcript"
21
+ }
18
22
  },
19
23
  {
20
24
  "name": "index",
21
25
  "type": "number",
22
26
  "required": true,
23
27
  "defaultValue": null,
24
- "description": "Which variant is currently displayed."
28
+ "description": "Which variant is currently displayed.",
29
+ "control": {
30
+ "kind": "number"
31
+ }
25
32
  },
26
33
  {
27
34
  "name": "onIndexChange",
28
35
  "type": "(index: number) => void",
29
36
  "required": true,
30
37
  "defaultValue": null,
31
- "description": "Called when the previous or next branch control is pressed."
38
+ "description": "Called when the previous or next branch control is pressed.",
39
+ "control": {
40
+ "kind": "callback",
41
+ "fixture": "callback.log"
42
+ }
32
43
  }
33
44
  ],
34
45
  "typeReferences": [