@cueplusplus/ui 0.13.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 (1016) hide show
  1. package/CHANGELOG.md +4028 -0
  2. package/LICENSE +21 -0
  3. package/NOTICE.md +34 -0
  4. package/README.md +237 -0
  5. package/dist/agent-runtime/_glyphs.js +43 -0
  6. package/dist/agent-runtime/branch-picker.d.ts +45 -0
  7. package/dist/agent-runtime/branch-picker.js +87 -0
  8. package/dist/agent-runtime/index.d.ts +4 -0
  9. package/dist/agent-runtime/index.js +4 -0
  10. package/dist/agent-runtime/tool-call-card.d.ts +69 -0
  11. package/dist/agent-runtime/tool-call-card.js +187 -0
  12. package/dist/agent-runtime/use-agent-thread.d.ts +164 -0
  13. package/dist/agent-runtime/use-agent-thread.js +251 -0
  14. package/dist/brand/_chassis.d.ts +54 -0
  15. package/dist/brand/_chassis.js +81 -0
  16. package/dist/brand/_geometry.js +41 -0
  17. package/dist/brand/cue-logotype.d.ts +29 -0
  18. package/dist/brand/cue-logotype.js +60 -0
  19. package/dist/brand/cue-mark.d.ts +30 -0
  20. package/dist/brand/cue-mark.js +61 -0
  21. package/dist/brand/index.d.ts +5 -0
  22. package/dist/brand/plussie.d.ts +67 -0
  23. package/dist/brand/plussie.js +125 -0
  24. package/dist/charts/_token.js +39 -0
  25. package/dist/charts/container.d.ts +58 -0
  26. package/dist/charts/container.js +77 -0
  27. package/dist/charts/index.d.ts +5 -0
  28. package/dist/charts/index.js +5 -0
  29. package/dist/charts/ramps.d.ts +140 -0
  30. package/dist/charts/ramps.js +615 -0
  31. package/dist/charts/theme.d.ts +112 -0
  32. package/dist/charts/theme.js +165 -0
  33. package/dist/charts/tones.d.ts +111 -0
  34. package/dist/charts/tones.js +127 -0
  35. package/dist/chat/_glyphs.js +55 -0
  36. package/dist/chat/agent-color.d.ts +84 -0
  37. package/dist/chat/agent-color.js +101 -0
  38. package/dist/chat/agent-pile.d.ts +55 -0
  39. package/dist/chat/agent-pile.js +121 -0
  40. package/dist/chat/ask-box.d.ts +88 -0
  41. package/dist/chat/ask-box.js +341 -0
  42. package/dist/chat/composer.d.ts +66 -0
  43. package/dist/chat/composer.js +144 -0
  44. package/dist/chat/delegation-card.d.ts +60 -0
  45. package/dist/chat/delegation-card.js +129 -0
  46. package/dist/chat/index.d.ts +8 -0
  47. package/dist/chat/index.js +8 -0
  48. package/dist/chat/message-list.d.ts +45 -0
  49. package/dist/chat/message-list.js +141 -0
  50. package/dist/chat/message.d.ts +47 -0
  51. package/dist/chat/message.js +108 -0
  52. package/dist/chrome/_band.js +54 -0
  53. package/dist/chrome/_drag.js +59 -0
  54. package/dist/chrome/_edge-scroller.d.ts +45 -0
  55. package/dist/chrome/_edge-scroller.js +149 -0
  56. package/dist/chrome/_glyphs.js +119 -0
  57. package/dist/chrome/_status-bar-item.js +85 -0
  58. package/dist/chrome/_status-bar.d.ts +15 -0
  59. package/dist/chrome/_status-bar.js +171 -0
  60. package/dist/chrome/_tabs-scroll.d.ts +67 -0
  61. package/dist/chrome/_tabs-scroll.js +73 -0
  62. package/dist/chrome/_tree.d.ts +75 -0
  63. package/dist/chrome/_tree.js +49 -0
  64. package/dist/chrome/app-bar.d.ts +103 -0
  65. package/dist/chrome/app-bar.js +175 -0
  66. package/dist/chrome/app-shell.d.ts +243 -0
  67. package/dist/chrome/app-shell.js +266 -0
  68. package/dist/chrome/band.d.ts +106 -0
  69. package/dist/chrome/band.js +97 -0
  70. package/dist/chrome/empty-state.d.ts +37 -0
  71. package/dist/chrome/empty-state.js +57 -0
  72. package/dist/chrome/eyebrow.d.ts +29 -0
  73. package/dist/chrome/eyebrow.js +36 -0
  74. package/dist/chrome/footer.d.ts +88 -0
  75. package/dist/chrome/footer.js +83 -0
  76. package/dist/chrome/index.d.ts +24 -0
  77. package/dist/chrome/index.js +22 -0
  78. package/dist/chrome/inspector.d.ts +61 -0
  79. package/dist/chrome/inspector.js +121 -0
  80. package/dist/chrome/navigation-menu.d.ts +80 -0
  81. package/dist/chrome/navigation-menu.js +121 -0
  82. package/dist/chrome/page-shell.d.ts +38 -0
  83. package/dist/chrome/page-shell.js +76 -0
  84. package/dist/chrome/panel.d.ts +55 -0
  85. package/dist/chrome/panel.js +67 -0
  86. package/dist/chrome/row.d.ts +82 -0
  87. package/dist/chrome/row.js +106 -0
  88. package/dist/chrome/scroll-area.d.ts +39 -0
  89. package/dist/chrome/scroll-area.js +70 -0
  90. package/dist/chrome/section-header.d.ts +42 -0
  91. package/dist/chrome/section-header.js +79 -0
  92. package/dist/chrome/segmented-control.d.ts +77 -0
  93. package/dist/chrome/segmented-control.js +95 -0
  94. package/dist/chrome/status-bar.d.ts +129 -0
  95. package/dist/chrome/status-bar.js +120 -0
  96. package/dist/chrome/tabs.d.ts +80 -0
  97. package/dist/chrome/tabs.js +132 -0
  98. package/dist/chrome/title-bar.d.ts +47 -0
  99. package/dist/chrome/title-bar.js +43 -0
  100. package/dist/chrome/toolbar.d.ts +68 -0
  101. package/dist/chrome/toolbar.js +83 -0
  102. package/dist/chrome/tree.d.ts +98 -0
  103. package/dist/chrome/tree.js +248 -0
  104. package/dist/color/_checker.js +14 -0
  105. package/dist/color/_convert.d.ts +52 -0
  106. package/dist/color/_convert.js +66 -0
  107. package/dist/color/_glyphs.js +28 -0
  108. package/dist/color/_thumb.js +15 -0
  109. package/dist/color/_value.js +28 -0
  110. package/dist/color/color-area.d.ts +27 -0
  111. package/dist/color/color-area.js +40 -0
  112. package/dist/color/color-field.d.ts +32 -0
  113. package/dist/color/color-field.js +43 -0
  114. package/dist/color/color-picker.d.ts +71 -0
  115. package/dist/color/color-picker.js +178 -0
  116. package/dist/color/color-slider.d.ts +31 -0
  117. package/dist/color/color-slider.js +51 -0
  118. package/dist/color/color-swatch.d.ts +32 -0
  119. package/dist/color/color-swatch.js +44 -0
  120. package/dist/color/index.d.ts +7 -0
  121. package/dist/color/index.js +7 -0
  122. package/dist/configurator/_export.d.ts +78 -0
  123. package/dist/configurator/_export.js +302 -0
  124. package/dist/configurator/_glyphs.js +92 -0
  125. package/dist/configurator/_overrides.d.ts +266 -0
  126. package/dist/configurator/_overrides.js +541 -0
  127. package/dist/configurator/configurator.d.ts +71 -0
  128. package/dist/configurator/configurator.js +284 -0
  129. package/dist/configurator/export-dialog.d.ts +30 -0
  130. package/dist/configurator/export-dialog.js +121 -0
  131. package/dist/configurator/index.d.ts +8 -0
  132. package/dist/configurator/index.js +8 -0
  133. package/dist/configurator/panel-sections.d.ts +86 -0
  134. package/dist/configurator/panel-sections.js +352 -0
  135. package/dist/configurator/token-editor.d.ts +74 -0
  136. package/dist/configurator/token-editor.js +152 -0
  137. package/dist/configurator/use-zoom.d.ts +87 -0
  138. package/dist/configurator/use-zoom.js +113 -0
  139. package/dist/date/_glyphs.js +34 -0
  140. package/dist/date/_segments.js +101 -0
  141. package/dist/date/_trigger.js +31 -0
  142. package/dist/date/calendar.d.ts +25 -0
  143. package/dist/date/calendar.js +125 -0
  144. package/dist/date/date-field.d.ts +34 -0
  145. package/dist/date/date-field.js +41 -0
  146. package/dist/date/date-picker.d.ts +69 -0
  147. package/dist/date/date-picker.js +89 -0
  148. package/dist/date/date-range-picker.d.ts +65 -0
  149. package/dist/date/date-range-picker.js +92 -0
  150. package/dist/date/index.d.ts +6 -0
  151. package/dist/date/index.js +6 -0
  152. package/dist/date/time-field.d.ts +29 -0
  153. package/dist/date/time-field.js +36 -0
  154. package/dist/dmx/_ramp.d.ts +77 -0
  155. package/dist/dmx/_ramp.js +169 -0
  156. package/dist/dmx/_readout.js +53 -0
  157. package/dist/dmx/_universe.d.ts +105 -0
  158. package/dist/dmx/_universe.js +112 -0
  159. package/dist/dmx/channel-matrix.d.ts +81 -0
  160. package/dist/dmx/channel-matrix.js +285 -0
  161. package/dist/dmx/dmx-bar.d.ts +50 -0
  162. package/dist/dmx/dmx-bar.js +107 -0
  163. package/dist/dmx/dmx-strip.d.ts +41 -0
  164. package/dist/dmx/dmx-strip.js +196 -0
  165. package/dist/dmx/index.d.ts +7 -0
  166. package/dist/dmx/index.js +7 -0
  167. package/dist/dmx/universe-grid.d.ts +61 -0
  168. package/dist/dmx/universe-grid.js +182 -0
  169. package/dist/elements/activity-graph.d.ts +40 -0
  170. package/dist/elements/activity-graph.js +81 -0
  171. package/dist/elements/agent-card.d.ts +49 -0
  172. package/dist/elements/agent-card.js +91 -0
  173. package/dist/elements/agent-handoff.d.ts +24 -0
  174. package/dist/elements/agent-handoff.js +53 -0
  175. package/dist/elements/agent-mode-badge.d.ts +72 -0
  176. package/dist/elements/agent-mode-badge.js +110 -0
  177. package/dist/elements/agent-plan.d.ts +24 -0
  178. package/dist/elements/agent-plan.js +74 -0
  179. package/dist/elements/agent-status.d.ts +29 -0
  180. package/dist/elements/agent-status.js +46 -0
  181. package/dist/elements/agent-surface.d.ts +65 -0
  182. package/dist/elements/agent-surface.js +68 -0
  183. package/dist/elements/animated-number.d.ts +86 -0
  184. package/dist/elements/animated-number.js +118 -0
  185. package/dist/elements/approval-card.d.ts +40 -0
  186. package/dist/elements/approval-card.js +78 -0
  187. package/dist/elements/artifact-card.d.ts +30 -0
  188. package/dist/elements/artifact-card.js +58 -0
  189. package/dist/elements/background-inbox.d.ts +39 -0
  190. package/dist/elements/background-inbox.js +60 -0
  191. package/dist/elements/canvas-split.d.ts +77 -0
  192. package/dist/elements/canvas-split.js +138 -0
  193. package/dist/elements/chart.d.ts +41 -0
  194. package/dist/elements/chart.js +117 -0
  195. package/dist/elements/chat-panel.d.ts +46 -0
  196. package/dist/elements/chat-panel.js +104 -0
  197. package/dist/elements/checkpoint-history.d.ts +31 -0
  198. package/dist/elements/checkpoint-history.js +65 -0
  199. package/dist/elements/clamp.d.ts +90 -0
  200. package/dist/elements/clamp.js +109 -0
  201. package/dist/elements/code-diff.d.ts +42 -0
  202. package/dist/elements/code-diff.js +69 -0
  203. package/dist/elements/code-runner.d.ts +38 -0
  204. package/dist/elements/code-runner.js +84 -0
  205. package/dist/elements/command-palette.d.ts +48 -0
  206. package/dist/elements/command-palette.js +129 -0
  207. package/dist/elements/compaction-row.d.ts +63 -0
  208. package/dist/elements/compaction-row.js +110 -0
  209. package/dist/elements/comparison-card.d.ts +47 -0
  210. package/dist/elements/comparison-card.js +69 -0
  211. package/dist/elements/composer.d.ts +274 -0
  212. package/dist/elements/composer.js +505 -0
  213. package/dist/elements/computer-use.d.ts +40 -0
  214. package/dist/elements/computer-use.js +92 -0
  215. package/dist/elements/confidence-marker.d.ts +39 -0
  216. package/dist/elements/confidence-marker.js +64 -0
  217. package/dist/elements/connection-state.d.ts +29 -0
  218. package/dist/elements/connection-state.js +66 -0
  219. package/dist/elements/context-breakdown.d.ts +30 -0
  220. package/dist/elements/context-breakdown.js +86 -0
  221. package/dist/elements/context-usage.d.ts +99 -0
  222. package/dist/elements/context-usage.js +225 -0
  223. package/dist/elements/conversation-search.d.ts +48 -0
  224. package/dist/elements/conversation-search.js +88 -0
  225. package/dist/elements/cost-meter.d.ts +33 -0
  226. package/dist/elements/cost-meter.js +75 -0
  227. package/dist/elements/data-table.d.ts +31 -0
  228. package/dist/elements/data-table.js +67 -0
  229. package/dist/elements/day-separator.d.ts +34 -0
  230. package/dist/elements/day-separator.js +50 -0
  231. package/dist/elements/diagram.d.ts +34 -0
  232. package/dist/elements/diagram.js +75 -0
  233. package/dist/elements/document-reference.d.ts +37 -0
  234. package/dist/elements/document-reference.js +66 -0
  235. package/dist/elements/draft-restore.d.ts +27 -0
  236. package/dist/elements/draft-restore.js +54 -0
  237. package/dist/elements/edit-message.d.ts +36 -0
  238. package/dist/elements/edit-message.js +77 -0
  239. package/dist/elements/elements.css +459 -0
  240. package/dist/elements/elicitation-form.d.ts +48 -0
  241. package/dist/elements/elicitation-form.js +106 -0
  242. package/dist/elements/empty-state.d.ts +52 -0
  243. package/dist/elements/empty-state.js +98 -0
  244. package/dist/elements/end-of-turn-summary.d.ts +60 -0
  245. package/dist/elements/end-of-turn-summary.js +75 -0
  246. package/dist/elements/error-state.d.ts +29 -0
  247. package/dist/elements/error-state.js +55 -0
  248. package/dist/elements/feedback-dialog.d.ts +36 -0
  249. package/dist/elements/feedback-dialog.js +81 -0
  250. package/dist/elements/file-tree.d.ts +45 -0
  251. package/dist/elements/file-tree.js +84 -0
  252. package/dist/elements/flow-graph.d.ts +45 -0
  253. package/dist/elements/flow-graph.js +78 -0
  254. package/dist/elements/generative/chart.js +200 -0
  255. package/dist/elements/generative/faults.js +111 -0
  256. package/dist/elements/generative/icons.d.ts +41 -0
  257. package/dist/elements/generative/icons.js +190 -0
  258. package/dist/elements/generative/intrinsics.js +483 -0
  259. package/dist/elements/generative/spec.d.ts +110 -0
  260. package/dist/elements/generative/spec.js +366 -0
  261. package/dist/elements/generative.css +1145 -0
  262. package/dist/elements/generative.d.ts +144 -0
  263. package/dist/elements/generative.js +126 -0
  264. package/dist/elements/guardrail-notice.d.ts +29 -0
  265. package/dist/elements/guardrail-notice.js +63 -0
  266. package/dist/elements/image-generation.d.ts +18 -0
  267. package/dist/elements/image-generation.js +64 -0
  268. package/dist/elements/index.d.ts +116 -0
  269. package/dist/elements/index.js +115 -0
  270. package/dist/elements/inline-citation.d.ts +43 -0
  271. package/dist/elements/inline-citation.js +93 -0
  272. package/dist/elements/job-progress.d.ts +49 -0
  273. package/dist/elements/job-progress.js +74 -0
  274. package/dist/elements/launcher-bubble.d.ts +34 -0
  275. package/dist/elements/launcher-bubble.js +72 -0
  276. package/dist/elements/live-region-announcer.d.ts +130 -0
  277. package/dist/elements/live-region-announcer.js +230 -0
  278. package/dist/elements/loading-state.d.ts +27 -0
  279. package/dist/elements/loading-state.js +36 -0
  280. package/dist/elements/map-answer.d.ts +38 -0
  281. package/dist/elements/map-answer.js +93 -0
  282. package/dist/elements/markdown.d.ts +131 -0
  283. package/dist/elements/markdown.js +528 -0
  284. package/dist/elements/math-block.d.ts +51 -0
  285. package/dist/elements/math-block.js +70 -0
  286. package/dist/elements/mcp-server-panel.d.ts +41 -0
  287. package/dist/elements/mcp-server-panel.js +115 -0
  288. package/dist/elements/memory-chips.d.ts +30 -0
  289. package/dist/elements/memory-chips.js +43 -0
  290. package/dist/elements/message-actions.d.ts +38 -0
  291. package/dist/elements/message-actions.js +71 -0
  292. package/dist/elements/message-attachment.d.ts +48 -0
  293. package/dist/elements/message-attachment.js +63 -0
  294. package/dist/elements/message-branches.d.ts +25 -0
  295. package/dist/elements/message-branches.js +65 -0
  296. package/dist/elements/message-pair.d.ts +33 -0
  297. package/dist/elements/message-pair.js +65 -0
  298. package/dist/elements/message-queue.d.ts +31 -0
  299. package/dist/elements/message-queue.js +80 -0
  300. package/dist/elements/message-timing.d.ts +33 -0
  301. package/dist/elements/message-timing.js +37 -0
  302. package/dist/elements/mobile-composer.d.ts +44 -0
  303. package/dist/elements/mobile-composer.js +88 -0
  304. package/dist/elements/model-picker.d.ts +38 -0
  305. package/dist/elements/model-picker.js +69 -0
  306. package/dist/elements/number-ticker.d.ts +18 -0
  307. package/dist/elements/number-ticker.js +47 -0
  308. package/dist/elements/onboarding.d.ts +30 -0
  309. package/dist/elements/onboarding.js +75 -0
  310. package/dist/elements/permission-grant.d.ts +35 -0
  311. package/dist/elements/permission-grant.js +86 -0
  312. package/dist/elements/permission-scopes.d.ts +215 -0
  313. package/dist/elements/permission-scopes.js +249 -0
  314. package/dist/elements/prompt-library.d.ts +43 -0
  315. package/dist/elements/prompt-library.js +117 -0
  316. package/dist/elements/queue-dock.d.ts +101 -0
  317. package/dist/elements/queue-dock.js +132 -0
  318. package/dist/elements/quota-banner.d.ts +26 -0
  319. package/dist/elements/quota-banner.js +66 -0
  320. package/dist/elements/quote-reply.d.ts +44 -0
  321. package/dist/elements/quote-reply.js +79 -0
  322. package/dist/elements/range.d.ts +29 -0
  323. package/dist/elements/range.js +45 -0
  324. package/dist/elements/read-aloud.d.ts +45 -0
  325. package/dist/elements/read-aloud.js +75 -0
  326. package/dist/elements/reasoning-effort.d.ts +36 -0
  327. package/dist/elements/reasoning-effort.js +67 -0
  328. package/dist/elements/reasoning-panel.d.ts +46 -0
  329. package/dist/elements/reasoning-panel.js +75 -0
  330. package/dist/elements/recommendation-card.d.ts +45 -0
  331. package/dist/elements/recommendation-card.js +83 -0
  332. package/dist/elements/regenerate-menu.d.ts +45 -0
  333. package/dist/elements/regenerate-menu.js +51 -0
  334. package/dist/elements/replay.d.ts +217 -0
  335. package/dist/elements/replay.js +498 -0
  336. package/dist/elements/research-report.d.ts +38 -0
  337. package/dist/elements/research-report.js +69 -0
  338. package/dist/elements/retrieval-chunks.d.ts +43 -0
  339. package/dist/elements/retrieval-chunks.js +81 -0
  340. package/dist/elements/revert-dock.d.ts +159 -0
  341. package/dist/elements/revert-dock.js +327 -0
  342. package/dist/elements/reviewable-diff.d.ts +45 -0
  343. package/dist/elements/reviewable-diff.js +110 -0
  344. package/dist/elements/risk-badge.d.ts +52 -0
  345. package/dist/elements/risk-badge.js +91 -0
  346. package/dist/elements/schedule-card.d.ts +42 -0
  347. package/dist/elements/schedule-card.js +90 -0
  348. package/dist/elements/score-breakdown.d.ts +47 -0
  349. package/dist/elements/score-breakdown.js +82 -0
  350. package/dist/elements/scroll-anchor.d.ts +32 -0
  351. package/dist/elements/scroll-anchor.js +123 -0
  352. package/dist/elements/settings-panel.d.ts +52 -0
  353. package/dist/elements/settings-panel.js +107 -0
  354. package/dist/elements/shared-conversation.d.ts +39 -0
  355. package/dist/elements/shared-conversation.js +68 -0
  356. package/dist/elements/sources.d.ts +33 -0
  357. package/dist/elements/sources.js +61 -0
  358. package/dist/elements/speaker-identity.d.ts +32 -0
  359. package/dist/elements/speaker-identity.js +51 -0
  360. package/dist/elements/spec-sheet.d.ts +31 -0
  361. package/dist/elements/spec-sheet.js +45 -0
  362. package/dist/elements/stopped-run.d.ts +22 -0
  363. package/dist/elements/stopped-run.js +50 -0
  364. package/dist/elements/streaming-text.d.ts +31 -0
  365. package/dist/elements/streaming-text.js +45 -0
  366. package/dist/elements/subagent-list.d.ts +37 -0
  367. package/dist/elements/subagent-list.js +79 -0
  368. package/dist/elements/suggestions.d.ts +30 -0
  369. package/dist/elements/suggestions.js +36 -0
  370. package/dist/elements/surfaces.d.ts +85 -0
  371. package/dist/elements/surfaces.js +108 -0
  372. package/dist/elements/tail-status.d.ts +131 -0
  373. package/dist/elements/tail-status.js +94 -0
  374. package/dist/elements/terminal-block.d.ts +29 -0
  375. package/dist/elements/terminal-block.js +54 -0
  376. package/dist/elements/thinking-indicator.d.ts +18 -0
  377. package/dist/elements/thinking-indicator.js +36 -0
  378. package/dist/elements/thread-list.d.ts +35 -0
  379. package/dist/elements/thread-list.js +68 -0
  380. package/dist/elements/thread-search.d.ts +42 -0
  381. package/dist/elements/thread-search.js +99 -0
  382. package/dist/elements/timeline.d.ts +37 -0
  383. package/dist/elements/timeline.js +46 -0
  384. package/dist/elements/todo-list.d.ts +42 -0
  385. package/dist/elements/todo-list.js +59 -0
  386. package/dist/elements/tool-call.d.ts +41 -0
  387. package/dist/elements/tool-call.js +85 -0
  388. package/dist/elements/tool-error.d.ts +39 -0
  389. package/dist/elements/tool-error.js +76 -0
  390. package/dist/elements/tool-group.d.ts +45 -0
  391. package/dist/elements/tool-group.js +71 -0
  392. package/dist/elements/tool-timeline.d.ts +65 -0
  393. package/dist/elements/tool-timeline.js +88 -0
  394. package/dist/elements/trace-waterfall.d.ts +37 -0
  395. package/dist/elements/trace-waterfall.js +69 -0
  396. package/dist/elements/transcript-rules.d.ts +67 -0
  397. package/dist/elements/transcript-rules.js +95 -0
  398. package/dist/elements/turn-footer.d.ts +74 -0
  399. package/dist/elements/turn-footer.js +101 -0
  400. package/dist/elements/typing-indicator.d.ts +16 -0
  401. package/dist/elements/typing-indicator.js +51 -0
  402. package/dist/elements/verdict-row.d.ts +89 -0
  403. package/dist/elements/verdict-row.js +150 -0
  404. package/dist/elements/vocabulary.d.ts +612 -0
  405. package/dist/elements/vocabulary.js +611 -0
  406. package/dist/elements/voice-conversation.d.ts +49 -0
  407. package/dist/elements/voice-conversation.js +123 -0
  408. package/dist/elements/web-preview.d.ts +32 -0
  409. package/dist/elements/web-preview.js +66 -0
  410. package/dist/elements/web-search.d.ts +37 -0
  411. package/dist/elements/web-search.js +66 -0
  412. package/dist/elements/work-collapse.d.ts +103 -0
  413. package/dist/elements/work-collapse.js +131 -0
  414. package/dist/flow/_frame.d.ts +52 -0
  415. package/dist/flow/_frame.js +38 -0
  416. package/dist/flow/controls.d.ts +41 -0
  417. package/dist/flow/controls.js +53 -0
  418. package/dist/flow/flow.css +121 -0
  419. package/dist/flow/handles.d.ts +40 -0
  420. package/dist/flow/handles.js +61 -0
  421. package/dist/flow/index.d.ts +7 -0
  422. package/dist/flow/index.js +7 -0
  423. package/dist/flow/node-card.d.ts +71 -0
  424. package/dist/flow/node-card.js +102 -0
  425. package/dist/flow/signal-edge.d.ts +60 -0
  426. package/dist/flow/signal-edge.js +108 -0
  427. package/dist/flow/use-flow-theme.d.ts +69 -0
  428. package/dist/flow/use-flow-theme.js +109 -0
  429. package/dist/forms/_chassis.d.ts +164 -0
  430. package/dist/forms/_chassis.js +159 -0
  431. package/dist/forms/_glyphs.js +143 -0
  432. package/dist/forms/_listbox.js +55 -0
  433. package/dist/forms/autocomplete.d.ts +61 -0
  434. package/dist/forms/autocomplete.js +88 -0
  435. package/dist/forms/button-group.d.ts +47 -0
  436. package/dist/forms/button-group.js +52 -0
  437. package/dist/forms/checkbox.d.ts +51 -0
  438. package/dist/forms/checkbox.js +98 -0
  439. package/dist/forms/combobox.d.ts +73 -0
  440. package/dist/forms/combobox.js +108 -0
  441. package/dist/forms/env-var-input.d.ts +74 -0
  442. package/dist/forms/env-var-input.js +116 -0
  443. package/dist/forms/field.d.ts +89 -0
  444. package/dist/forms/field.js +102 -0
  445. package/dist/forms/file-upload.d.ts +113 -0
  446. package/dist/forms/file-upload.js +232 -0
  447. package/dist/forms/index.d.ts +26 -0
  448. package/dist/forms/index.js +26 -0
  449. package/dist/forms/input-group.d.ts +36 -0
  450. package/dist/forms/input-group.js +59 -0
  451. package/dist/forms/input.d.ts +45 -0
  452. package/dist/forms/input.js +36 -0
  453. package/dist/forms/multi-select.d.ts +62 -0
  454. package/dist/forms/multi-select.js +107 -0
  455. package/dist/forms/number-field.d.ts +39 -0
  456. package/dist/forms/number-field.js +65 -0
  457. package/dist/forms/otp-field.d.ts +54 -0
  458. package/dist/forms/otp-field.js +59 -0
  459. package/dist/forms/password-input.d.ts +46 -0
  460. package/dist/forms/password-input.js +62 -0
  461. package/dist/forms/radio-group.d.ts +50 -0
  462. package/dist/forms/radio-group.js +64 -0
  463. package/dist/forms/rating.d.ts +69 -0
  464. package/dist/forms/rating.js +103 -0
  465. package/dist/forms/scrub-input.d.ts +81 -0
  466. package/dist/forms/scrub-input.js +249 -0
  467. package/dist/forms/search-input.d.ts +54 -0
  468. package/dist/forms/search-input.js +112 -0
  469. package/dist/forms/select.d.ts +75 -0
  470. package/dist/forms/select.js +91 -0
  471. package/dist/forms/slider.d.ts +44 -0
  472. package/dist/forms/slider.js +65 -0
  473. package/dist/forms/switch.d.ts +36 -0
  474. package/dist/forms/switch.js +71 -0
  475. package/dist/forms/tags-input.d.ts +69 -0
  476. package/dist/forms/tags-input.js +148 -0
  477. package/dist/forms/textarea.d.ts +39 -0
  478. package/dist/forms/textarea.js +37 -0
  479. package/dist/forms/toggle-group.d.ts +41 -0
  480. package/dist/forms/toggle-group.js +56 -0
  481. package/dist/forms/toggle.d.ts +47 -0
  482. package/dist/forms/toggle.js +100 -0
  483. package/dist/icons/containers.d.ts +89 -0
  484. package/dist/icons/containers.js +295 -0
  485. package/dist/icons/index.d.ts +2 -0
  486. package/dist/index.d.ts +138 -0
  487. package/dist/index.js +124 -0
  488. package/dist/instruments/_ansi.js +116 -0
  489. package/dist/instruments/_data-row.d.ts +68 -0
  490. package/dist/instruments/_data-row.js +139 -0
  491. package/dist/instruments/_glyphs.js +90 -0
  492. package/dist/instruments/_ledger-disclosure.js +103 -0
  493. package/dist/instruments/_ledger.d.ts +21 -0
  494. package/dist/instruments/_ledger.js +5 -0
  495. package/dist/instruments/_motion.js +56 -0
  496. package/dist/instruments/_rem.js +21 -0
  497. package/dist/instruments/app-window-frame.d.ts +48 -0
  498. package/dist/instruments/app-window-frame.js +76 -0
  499. package/dist/instruments/code-block.d.ts +35 -0
  500. package/dist/instruments/code-block.js +173 -0
  501. package/dist/instruments/copy-button.d.ts +41 -0
  502. package/dist/instruments/copy-button.js +112 -0
  503. package/dist/instruments/data-row.d.ts +94 -0
  504. package/dist/instruments/data-row.js +151 -0
  505. package/dist/instruments/data-table.d.ts +168 -0
  506. package/dist/instruments/data-table.js +212 -0
  507. package/dist/instruments/data-tree.d.ts +126 -0
  508. package/dist/instruments/data-tree.js +303 -0
  509. package/dist/instruments/group-bar.d.ts +63 -0
  510. package/dist/instruments/group-bar.js +122 -0
  511. package/dist/instruments/index.d.ts +18 -0
  512. package/dist/instruments/index.js +18 -0
  513. package/dist/instruments/ledger.d.ts +204 -0
  514. package/dist/instruments/ledger.js +204 -0
  515. package/dist/instruments/log-viewer.d.ts +74 -0
  516. package/dist/instruments/log-viewer.js +215 -0
  517. package/dist/instruments/meter.d.ts +81 -0
  518. package/dist/instruments/meter.js +96 -0
  519. package/dist/instruments/progress.d.ts +61 -0
  520. package/dist/instruments/progress.js +79 -0
  521. package/dist/instruments/seam-grid.d.ts +66 -0
  522. package/dist/instruments/seam-grid.js +78 -0
  523. package/dist/instruments/sparkline.d.ts +39 -0
  524. package/dist/instruments/sparkline.js +85 -0
  525. package/dist/instruments/stat.d.ts +35 -0
  526. package/dist/instruments/stat.js +59 -0
  527. package/dist/instruments/table.d.ts +170 -0
  528. package/dist/instruments/table.js +237 -0
  529. package/dist/instruments/terminal-frame.d.ts +89 -0
  530. package/dist/instruments/terminal-frame.js +256 -0
  531. package/dist/instruments/two-step-button.d.ts +47 -0
  532. package/dist/instruments/two-step-button.js +166 -0
  533. package/dist/instruments/usage-chart.d.ts +55 -0
  534. package/dist/instruments/usage-chart.js +235 -0
  535. package/dist/layout/_collapse.js +46 -0
  536. package/dist/layout/_glyphs.js +45 -0
  537. package/dist/layout/_ground.d.ts +22 -0
  538. package/dist/layout/_ground.js +9 -0
  539. package/dist/layout/accordion.d.ts +52 -0
  540. package/dist/layout/accordion.js +81 -0
  541. package/dist/layout/bento.d.ts +144 -0
  542. package/dist/layout/bento.js +266 -0
  543. package/dist/layout/breadcrumb.d.ts +35 -0
  544. package/dist/layout/breadcrumb.js +67 -0
  545. package/dist/layout/card.d.ts +51 -0
  546. package/dist/layout/card.js +76 -0
  547. package/dist/layout/carousel.d.ts +96 -0
  548. package/dist/layout/carousel.js +211 -0
  549. package/dist/layout/collapsible.d.ts +74 -0
  550. package/dist/layout/collapsible.js +126 -0
  551. package/dist/layout/container.d.ts +27 -0
  552. package/dist/layout/container.js +43 -0
  553. package/dist/layout/description-list.d.ts +24 -0
  554. package/dist/layout/description-list.js +37 -0
  555. package/dist/layout/frames.d.ts +70 -0
  556. package/dist/layout/frames.js +298 -0
  557. package/dist/layout/grid.d.ts +40 -0
  558. package/dist/layout/grid.js +48 -0
  559. package/dist/layout/index.d.ts +19 -0
  560. package/dist/layout/index.js +18 -0
  561. package/dist/layout/item.d.ts +65 -0
  562. package/dist/layout/item.js +100 -0
  563. package/dist/layout/link.d.ts +48 -0
  564. package/dist/layout/link.js +63 -0
  565. package/dist/layout/pagination.d.ts +54 -0
  566. package/dist/layout/pagination.js +121 -0
  567. package/dist/layout/preview.d.ts +177 -0
  568. package/dist/layout/preview.js +628 -0
  569. package/dist/layout/resizable.d.ts +38 -0
  570. package/dist/layout/resizable.js +68 -0
  571. package/dist/layout/sidebar.d.ts +105 -0
  572. package/dist/layout/sidebar.js +158 -0
  573. package/dist/layout/stack.d.ts +46 -0
  574. package/dist/layout/stack.js +62 -0
  575. package/dist/layout/stepper.d.ts +49 -0
  576. package/dist/layout/stepper.js +81 -0
  577. package/dist/layout/timeline.d.ts +43 -0
  578. package/dist/layout/timeline.js +63 -0
  579. package/dist/lib/aria-class.js +24 -0
  580. package/dist/lib/cn.js +18 -0
  581. package/dist/lib/compose.js +38 -0
  582. package/dist/lib/cva.d.ts +18 -0
  583. package/dist/lib/cva.js +65 -0
  584. package/dist/midi/_notes.d.ts +101 -0
  585. package/dist/midi/_notes.js +183 -0
  586. package/dist/midi/_ruler.d.ts +100 -0
  587. package/dist/midi/_ruler.js +105 -0
  588. package/dist/midi/_time.d.ts +107 -0
  589. package/dist/midi/_time.js +130 -0
  590. package/dist/midi/index.d.ts +9 -0
  591. package/dist/midi/index.js +9 -0
  592. package/dist/midi/musical-time-input.d.ts +48 -0
  593. package/dist/midi/musical-time-input.js +154 -0
  594. package/dist/midi/piano-keyboard.d.ts +50 -0
  595. package/dist/midi/piano-keyboard.js +197 -0
  596. package/dist/midi/spectrum-visualizer.d.ts +65 -0
  597. package/dist/midi/spectrum-visualizer.js +213 -0
  598. package/dist/midi/threshold-rail.d.ts +72 -0
  599. package/dist/midi/threshold-rail.js +214 -0
  600. package/dist/midi/timeline-ruler.d.ts +83 -0
  601. package/dist/midi/timeline-ruler.js +152 -0
  602. package/dist/overlays/_debounce.js +34 -0
  603. package/dist/overlays/_glyphs.js +59 -0
  604. package/dist/overlays/_surface.d.ts +70 -0
  605. package/dist/overlays/_surface.js +70 -0
  606. package/dist/overlays/_wheel.js +42 -0
  607. package/dist/overlays/alert-dialog.d.ts +67 -0
  608. package/dist/overlays/alert-dialog.js +117 -0
  609. package/dist/overlays/command-palette.d.ts +93 -0
  610. package/dist/overlays/command-palette.js +193 -0
  611. package/dist/overlays/context-menu.d.ts +64 -0
  612. package/dist/overlays/context-menu.js +78 -0
  613. package/dist/overlays/dialog.d.ts +72 -0
  614. package/dist/overlays/dialog.js +124 -0
  615. package/dist/overlays/drawer.d.ts +75 -0
  616. package/dist/overlays/drawer.js +151 -0
  617. package/dist/overlays/dropdown-menu.d.ts +79 -0
  618. package/dist/overlays/dropdown-menu.js +156 -0
  619. package/dist/overlays/hover-card.d.ts +58 -0
  620. package/dist/overlays/hover-card.js +91 -0
  621. package/dist/overlays/index.d.ts +15 -0
  622. package/dist/overlays/index.js +15 -0
  623. package/dist/overlays/info-tip.d.ts +41 -0
  624. package/dist/overlays/info-tip.js +45 -0
  625. package/dist/overlays/menubar.d.ts +72 -0
  626. package/dist/overlays/menubar.js +100 -0
  627. package/dist/overlays/popover.d.ts +66 -0
  628. package/dist/overlays/popover.js +114 -0
  629. package/dist/overlays/sheet.d.ts +78 -0
  630. package/dist/overlays/sheet.js +131 -0
  631. package/dist/overlays/toast.d.ts +106 -0
  632. package/dist/overlays/toast.js +146 -0
  633. package/dist/overlays/tooltip.d.ts +57 -0
  634. package/dist/overlays/tooltip.js +95 -0
  635. package/dist/primitives/avatar.d.ts +51 -0
  636. package/dist/primitives/avatar.js +93 -0
  637. package/dist/primitives/button.d.ts +58 -0
  638. package/dist/primitives/button.js +104 -0
  639. package/dist/primitives/chip.d.ts +73 -0
  640. package/dist/primitives/chip.js +238 -0
  641. package/dist/primitives/icon-button.d.ts +41 -0
  642. package/dist/primitives/icon-button.js +59 -0
  643. package/dist/primitives/index.d.ts +10 -0
  644. package/dist/primitives/index.js +10 -0
  645. package/dist/primitives/kbd.d.ts +17 -0
  646. package/dist/primitives/kbd.js +24 -0
  647. package/dist/primitives/separator.d.ts +25 -0
  648. package/dist/primitives/separator.js +30 -0
  649. package/dist/primitives/skeleton.d.ts +20 -0
  650. package/dist/primitives/skeleton.js +27 -0
  651. package/dist/primitives/spinner.d.ts +26 -0
  652. package/dist/primitives/spinner.js +31 -0
  653. package/dist/primitives/status-dot.d.ts +51 -0
  654. package/dist/primitives/status-dot.js +57 -0
  655. package/dist/styles.css +97 -0
  656. package/dist/system/agent-skin.d.ts +27 -0
  657. package/dist/system/agent-skin.js +20 -0
  658. package/dist/system/density.d.ts +73 -0
  659. package/dist/system/density.js +111 -0
  660. package/dist/system/index.d.ts +12 -0
  661. package/dist/system/index.js +10 -0
  662. package/dist/system/overrides.d.ts +80 -0
  663. package/dist/system/overrides.js +277 -0
  664. package/dist/system/portal.d.ts +56 -0
  665. package/dist/system/portal.js +193 -0
  666. package/dist/system/prepaint.d.ts +134 -0
  667. package/dist/system/prepaint.js +120 -0
  668. package/dist/system/theme-provider.d.ts +290 -0
  669. package/dist/system/theme-provider.js +543 -0
  670. package/dist/system/theme-registry.d.ts +53 -0
  671. package/dist/system/theme-registry.js +66 -0
  672. package/dist/system/use-density.d.ts +50 -0
  673. package/dist/system/use-density.js +232 -0
  674. package/dist/system/use-isomorphic-layout-effect.js +33 -0
  675. package/dist/system/use-theme.d.ts +30 -0
  676. package/dist/system/use-theme.js +36 -0
  677. package/dist/system/vocabulary.d.ts +16 -0
  678. package/dist/system/vocabulary.js +125 -0
  679. package/dist/theming/contrast.d.ts +2 -0
  680. package/dist/theming/contrast.js +2 -0
  681. package/dist/theming/create-theme.d.ts +195 -0
  682. package/dist/theming/create-theme.js +524 -0
  683. package/dist/theming/index.d.ts +4 -0
  684. package/dist/theming/index.js +4 -0
  685. package/dist/theming/serialize.d.ts +167 -0
  686. package/dist/theming/serialize.js +241 -0
  687. package/manifest/components/accordion.json +173 -0
  688. package/manifest/components/activity-graph.json +104 -0
  689. package/manifest/components/agent-card.json +150 -0
  690. package/manifest/components/agent-handoff.json +104 -0
  691. package/manifest/components/agent-mode-badge.json +102 -0
  692. package/manifest/components/agent-pile.json +147 -0
  693. package/manifest/components/agent-plan.json +74 -0
  694. package/manifest/components/agent-status.json +87 -0
  695. package/manifest/components/agent-surface.json +93 -0
  696. package/manifest/components/alert-dialog.json +215 -0
  697. package/manifest/components/animated-number.json +75 -0
  698. package/manifest/components/app-bar.json +297 -0
  699. package/manifest/components/app-shell.json +526 -0
  700. package/manifest/components/app-window-frame.json +124 -0
  701. package/manifest/components/approval-card.json +136 -0
  702. package/manifest/components/artifact-card.json +93 -0
  703. package/manifest/components/ask-box.json +288 -0
  704. package/manifest/components/audience-icon.json +46 -0
  705. package/manifest/components/autocomplete.json +262 -0
  706. package/manifest/components/avatar-group.json +83 -0
  707. package/manifest/components/avatar.json +113 -0
  708. package/manifest/components/background-inbox.json +79 -0
  709. package/manifest/components/band.json +104 -0
  710. package/manifest/components/bento.json +306 -0
  711. package/manifest/components/branch-picker.json +146 -0
  712. package/manifest/components/breadcrumb.json +85 -0
  713. package/manifest/components/button-group.json +91 -0
  714. package/manifest/components/button.json +163 -0
  715. package/manifest/components/calendar.json +65 -0
  716. package/manifest/components/canvas-split-body.json +66 -0
  717. package/manifest/components/canvas-split-document.json +55 -0
  718. package/manifest/components/canvas-split-header.json +97 -0
  719. package/manifest/components/canvas-split-line.json +66 -0
  720. package/manifest/components/canvas-split-message.json +70 -0
  721. package/manifest/components/canvas-split-thread.json +55 -0
  722. package/manifest/components/canvas-split.json +61 -0
  723. package/manifest/components/card.json +152 -0
  724. package/manifest/components/carousel.json +242 -0
  725. package/manifest/components/catalogue-icon.json +46 -0
  726. package/manifest/components/channel-beta-icon.json +46 -0
  727. package/manifest/components/channel-matrix.json +239 -0
  728. package/manifest/components/channel-released-icon.json +46 -0
  729. package/manifest/components/chart-container.json +127 -0
  730. package/manifest/components/chart-ramp.json +82 -0
  731. package/manifest/components/chart-swatch.json +72 -0
  732. package/manifest/components/chart-tooltip-content.json +140 -0
  733. package/manifest/components/chart.json +117 -0
  734. package/manifest/components/chat-empty-state.json +55 -0
  735. package/manifest/components/chat-panel-assistant-message.json +52 -0
  736. package/manifest/components/chat-panel-composer.json +74 -0
  737. package/manifest/components/chat-panel-messages.json +52 -0
  738. package/manifest/components/chat-panel-typing.json +52 -0
  739. package/manifest/components/chat-panel-user-message.json +52 -0
  740. package/manifest/components/chat-panel.json +58 -0
  741. package/manifest/components/checkbox-group.json +70 -0
  742. package/manifest/components/checkbox.json +106 -0
  743. package/manifest/components/checkpoint-history.json +91 -0
  744. package/manifest/components/chip.json +174 -0
  745. package/manifest/components/clamp.json +125 -0
  746. package/manifest/components/cli-tool-icon.json +46 -0
  747. package/manifest/components/code-block.json +107 -0
  748. package/manifest/components/code-diff.json +104 -0
  749. package/manifest/components/code-runner.json +124 -0
  750. package/manifest/components/collapsible.json +133 -0
  751. package/manifest/components/color-area.json +62 -0
  752. package/manifest/components/color-field.json +91 -0
  753. package/manifest/components/color-picker.json +235 -0
  754. package/manifest/components/color-slider.json +84 -0
  755. package/manifest/components/color-swatch.json +79 -0
  756. package/manifest/components/colors-section.json +70 -0
  757. package/manifest/components/combobox.json +265 -0
  758. package/manifest/components/command-palette.json +222 -0
  759. package/manifest/components/compaction-row.json +128 -0
  760. package/manifest/components/comparison-card.json +98 -0
  761. package/manifest/components/composer-actions.json +65 -0
  762. package/manifest/components/composer-attach-button.json +65 -0
  763. package/manifest/components/composer-attachment-chip.json +83 -0
  764. package/manifest/components/composer-attachments.json +60 -0
  765. package/manifest/components/composer-bar.json +76 -0
  766. package/manifest/components/composer-command-item.json +85 -0
  767. package/manifest/components/composer-context.json +71 -0
  768. package/manifest/components/composer-input.json +77 -0
  769. package/manifest/components/composer-menu-item.json +75 -0
  770. package/manifest/components/composer-menu.json +89 -0
  771. package/manifest/components/composer-model-item.json +82 -0
  772. package/manifest/components/composer-model-trigger.json +81 -0
  773. package/manifest/components/composer-person-item.json +86 -0
  774. package/manifest/components/composer-send.json +86 -0
  775. package/manifest/components/composer-toolbar.json +65 -0
  776. package/manifest/components/composer-voice-button.json +71 -0
  777. package/manifest/components/composer-voice.json +81 -0
  778. package/manifest/components/composer.json +238 -0
  779. package/manifest/components/computer-use.json +98 -0
  780. package/manifest/components/confidence-marker.json +86 -0
  781. package/manifest/components/connection-state.json +103 -0
  782. package/manifest/components/container.json +75 -0
  783. package/manifest/components/context-breakdown.json +72 -0
  784. package/manifest/components/context-menu.json +134 -0
  785. package/manifest/components/context-usage.json +98 -0
  786. package/manifest/components/conversation-search.json +111 -0
  787. package/manifest/components/copy-button.json +118 -0
  788. package/manifest/components/cost-meter.json +84 -0
  789. package/manifest/components/cue-logotype.json +110 -0
  790. package/manifest/components/cue-mark.json +111 -0
  791. package/manifest/components/cue-portal-frame.json +65 -0
  792. package/manifest/components/data-row.json +222 -0
  793. package/manifest/components/data-table-pagination.json +97 -0
  794. package/manifest/components/data-table-toolbar.json +127 -0
  795. package/manifest/components/data-tree.json +185 -0
  796. package/manifest/components/date-field.json +93 -0
  797. package/manifest/components/date-picker.json +255 -0
  798. package/manifest/components/date-range-picker.json +255 -0
  799. package/manifest/components/day-separator.json +63 -0
  800. package/manifest/components/delegation-card.json +196 -0
  801. package/manifest/components/density.json +93 -0
  802. package/manifest/components/description-list.json +91 -0
  803. package/manifest/components/diagram.json +126 -0
  804. package/manifest/components/dialog.json +222 -0
  805. package/manifest/components/disclosure.json +134 -0
  806. package/manifest/components/dmx-bar.json +107 -0
  807. package/manifest/components/dmx-strip.json +117 -0
  808. package/manifest/components/document-reference.json +108 -0
  809. package/manifest/components/draft-restore.json +96 -0
  810. package/manifest/components/drawer.json +204 -0
  811. package/manifest/components/dropdown-menu.json +275 -0
  812. package/manifest/components/edit-message.json +131 -0
  813. package/manifest/components/elements-command-palette.json +122 -0
  814. package/manifest/components/elements-composer.json +71 -0
  815. package/manifest/components/elements-data-table.json +75 -0
  816. package/manifest/components/elements-timeline.json +77 -0
  817. package/manifest/components/elicitation-form.json +130 -0
  818. package/manifest/components/empty-state-composer.json +71 -0
  819. package/manifest/components/empty-state-greeting.json +49 -0
  820. package/manifest/components/empty-state-suggestion.json +60 -0
  821. package/manifest/components/empty-state-suggestions.json +49 -0
  822. package/manifest/components/empty-state.json +111 -0
  823. package/manifest/components/end-of-turn-summary.json +89 -0
  824. package/manifest/components/env-var-input.json +194 -0
  825. package/manifest/components/error-state.json +93 -0
  826. package/manifest/components/export-dialog.json +101 -0
  827. package/manifest/components/eyebrow.json +59 -0
  828. package/manifest/components/feedback-dialog.json +133 -0
  829. package/manifest/components/field-description.json +66 -0
  830. package/manifest/components/field-error.json +87 -0
  831. package/manifest/components/field-label.json +66 -0
  832. package/manifest/components/field.json +82 -0
  833. package/manifest/components/file-tree.json +96 -0
  834. package/manifest/components/file-upload.json +204 -0
  835. package/manifest/components/flow-background.json +50 -0
  836. package/manifest/components/flow-controls.json +50 -0
  837. package/manifest/components/flow-graph.json +86 -0
  838. package/manifest/components/folder-icon.json +46 -0
  839. package/manifest/components/footer.json +133 -0
  840. package/manifest/components/frac.json +68 -0
  841. package/manifest/components/frames.json +210 -0
  842. package/manifest/components/generation-loader.json +78 -0
  843. package/manifest/components/generative-ui.json +125 -0
  844. package/manifest/components/grid.json +132 -0
  845. package/manifest/components/group-bar.json +122 -0
  846. package/manifest/components/guardrail-notice.json +109 -0
  847. package/manifest/components/hover-card.json +189 -0
  848. package/manifest/components/icon-button.json +106 -0
  849. package/manifest/components/image-generation.json +73 -0
  850. package/manifest/components/info-tip.json +133 -0
  851. package/manifest/components/inline-citation.json +90 -0
  852. package/manifest/components/input-group.json +112 -0
  853. package/manifest/components/input.json +121 -0
  854. package/manifest/components/inspector.json +199 -0
  855. package/manifest/components/item.json +163 -0
  856. package/manifest/components/job-progress.json +116 -0
  857. package/manifest/components/kbd.json +52 -0
  858. package/manifest/components/launcher-bubble.json +130 -0
  859. package/manifest/components/ledger.json +330 -0
  860. package/manifest/components/link.json +94 -0
  861. package/manifest/components/live-region-announcer.json +95 -0
  862. package/manifest/components/log-viewer.json +172 -0
  863. package/manifest/components/map-answer.json +97 -0
  864. package/manifest/components/markdown-text.json +126 -0
  865. package/manifest/components/math-block.json +84 -0
  866. package/manifest/components/mcp-server-icon.json +46 -0
  867. package/manifest/components/mcp-server-panel.json +102 -0
  868. package/manifest/components/memory-chips.json +73 -0
  869. package/manifest/components/menubar.json +184 -0
  870. package/manifest/components/message-actions.json +125 -0
  871. package/manifest/components/message-attachments.json +71 -0
  872. package/manifest/components/message-branches.json +83 -0
  873. package/manifest/components/message-list.json +121 -0
  874. package/manifest/components/message-pair.json +107 -0
  875. package/manifest/components/message-queue.json +85 -0
  876. package/manifest/components/message-timing.json +69 -0
  877. package/manifest/components/message.json +149 -0
  878. package/manifest/components/meter.json +150 -0
  879. package/manifest/components/mobile-composer.json +163 -0
  880. package/manifest/components/model-picker.json +87 -0
  881. package/manifest/components/multi-select.json +255 -0
  882. package/manifest/components/musical-time-input.json +141 -0
  883. package/manifest/components/navigation-menu.json +269 -0
  884. package/manifest/components/node-card.json +144 -0
  885. package/manifest/components/node-handle.json +84 -0
  886. package/manifest/components/number-field.json +131 -0
  887. package/manifest/components/number-ticker.json +67 -0
  888. package/manifest/components/onboarding.json +100 -0
  889. package/manifest/components/otp-field.json +163 -0
  890. package/manifest/components/page-shell.json +129 -0
  891. package/manifest/components/pagination.json +108 -0
  892. package/manifest/components/panel-header.json +89 -0
  893. package/manifest/components/panel.json +71 -0
  894. package/manifest/components/password-input.json +171 -0
  895. package/manifest/components/permission-grant.json +115 -0
  896. package/manifest/components/permission-scopes.json +184 -0
  897. package/manifest/components/piano-keyboard.json +149 -0
  898. package/manifest/components/plussie.json +140 -0
  899. package/manifest/components/popover.json +231 -0
  900. package/manifest/components/preset-section.json +80 -0
  901. package/manifest/components/preview.json +294 -0
  902. package/manifest/components/progress.json +114 -0
  903. package/manifest/components/prompt-library.json +122 -0
  904. package/manifest/components/queue-dock.json +139 -0
  905. package/manifest/components/quota-banner.json +113 -0
  906. package/manifest/components/quote-reply.json +129 -0
  907. package/manifest/components/radio-group.json +83 -0
  908. package/manifest/components/radio.json +94 -0
  909. package/manifest/components/rating.json +188 -0
  910. package/manifest/components/read-aloud.json +139 -0
  911. package/manifest/components/reasoning-effort.json +95 -0
  912. package/manifest/components/reasoning-panel.json +135 -0
  913. package/manifest/components/recommendation-card.json +133 -0
  914. package/manifest/components/regenerate-menu.json +107 -0
  915. package/manifest/components/replay-player.json +124 -0
  916. package/manifest/components/research-report.json +87 -0
  917. package/manifest/components/resizable.json +91 -0
  918. package/manifest/components/retrieval-chunks.json +98 -0
  919. package/manifest/components/revert-dock.json +197 -0
  920. package/manifest/components/reviewable-diff.json +113 -0
  921. package/manifest/components/risk-badge.json +89 -0
  922. package/manifest/components/row.json +122 -0
  923. package/manifest/components/schedule-card.json +121 -0
  924. package/manifest/components/score-breakdown.json +108 -0
  925. package/manifest/components/scroll-anchor.json +84 -0
  926. package/manifest/components/scroll-area.json +114 -0
  927. package/manifest/components/scrollable-tabs-list.json +91 -0
  928. package/manifest/components/scrub-input.json +268 -0
  929. package/manifest/components/seam-cell.json +91 -0
  930. package/manifest/components/seam-grid.json +84 -0
  931. package/manifest/components/seam-list.json +56 -0
  932. package/manifest/components/search-input.json +195 -0
  933. package/manifest/components/section-header.json +140 -0
  934. package/manifest/components/segmented-control.json +178 -0
  935. package/manifest/components/select.json +253 -0
  936. package/manifest/components/separator.json +56 -0
  937. package/manifest/components/settings-panel.json +152 -0
  938. package/manifest/components/shape-section.json +70 -0
  939. package/manifest/components/shared-conversation.json +107 -0
  940. package/manifest/components/sheet.json +210 -0
  941. package/manifest/components/shimmer-label.json +61 -0
  942. package/manifest/components/sidebar.json +245 -0
  943. package/manifest/components/signal-edge.json +56 -0
  944. package/manifest/components/skeleton.json +46 -0
  945. package/manifest/components/skill-icon.json +46 -0
  946. package/manifest/components/slider.json +106 -0
  947. package/manifest/components/sources.json +97 -0
  948. package/manifest/components/sparkline.json +89 -0
  949. package/manifest/components/speaker-identity.json +66 -0
  950. package/manifest/components/spec-sheet.json +93 -0
  951. package/manifest/components/spectrum-visualizer.json +147 -0
  952. package/manifest/components/spinner.json +71 -0
  953. package/manifest/components/stack-icon.json +46 -0
  954. package/manifest/components/stack.json +143 -0
  955. package/manifest/components/stacks-matrix-icon.json +46 -0
  956. package/manifest/components/stat.json +111 -0
  957. package/manifest/components/status-bar.json +233 -0
  958. package/manifest/components/status-dot.json +97 -0
  959. package/manifest/components/stepper.json +107 -0
  960. package/manifest/components/stopped-run.json +97 -0
  961. package/manifest/components/streaming-text.json +82 -0
  962. package/manifest/components/sub.json +45 -0
  963. package/manifest/components/subagent-list.json +106 -0
  964. package/manifest/components/suggestions.json +106 -0
  965. package/manifest/components/sup.json +45 -0
  966. package/manifest/components/swap-label.json +86 -0
  967. package/manifest/components/switch.json +102 -0
  968. package/manifest/components/table-scroll-region.json +78 -0
  969. package/manifest/components/table.json +306 -0
  970. package/manifest/components/tabs.json +156 -0
  971. package/manifest/components/tags-input.json +255 -0
  972. package/manifest/components/tail-status.json +138 -0
  973. package/manifest/components/terminal-block.json +111 -0
  974. package/manifest/components/terminal-frame.json +146 -0
  975. package/manifest/components/textarea.json +104 -0
  976. package/manifest/components/theme-configurator.json +158 -0
  977. package/manifest/components/theme-provider.json +228 -0
  978. package/manifest/components/thinking-indicator.json +69 -0
  979. package/manifest/components/thread-list.json +87 -0
  980. package/manifest/components/thread-search.json +108 -0
  981. package/manifest/components/threshold-rail.json +223 -0
  982. package/manifest/components/time-boundary.json +68 -0
  983. package/manifest/components/time-field.json +93 -0
  984. package/manifest/components/timeline-ruler.json +178 -0
  985. package/manifest/components/timeline.json +131 -0
  986. package/manifest/components/title-bar.json +97 -0
  987. package/manifest/components/toast.json +140 -0
  988. package/manifest/components/todo-list.json +76 -0
  989. package/manifest/components/toggle-group.json +134 -0
  990. package/manifest/components/toggle.json +140 -0
  991. package/manifest/components/token-editor.json +106 -0
  992. package/manifest/components/tool-call-card.json +268 -0
  993. package/manifest/components/tool-call.json +147 -0
  994. package/manifest/components/tool-error.json +141 -0
  995. package/manifest/components/tool-group.json +97 -0
  996. package/manifest/components/tool-timeline.json +147 -0
  997. package/manifest/components/toolbar.json +192 -0
  998. package/manifest/components/tooltip.json +199 -0
  999. package/manifest/components/trace-waterfall.json +84 -0
  1000. package/manifest/components/tree-visibility-toggle.json +99 -0
  1001. package/manifest/components/tree.json +182 -0
  1002. package/manifest/components/turn-footer.json +133 -0
  1003. package/manifest/components/two-step-button.json +150 -0
  1004. package/manifest/components/typing-indicator.json +60 -0
  1005. package/manifest/components/universe-grid.json +155 -0
  1006. package/manifest/components/unread-divider.json +58 -0
  1007. package/manifest/components/usage-chart.json +162 -0
  1008. package/manifest/components/verdict-row.json +106 -0
  1009. package/manifest/components/voice-conversation.json +141 -0
  1010. package/manifest/components/web-preview.json +105 -0
  1011. package/manifest/components/web-search.json +108 -0
  1012. package/manifest/components/work-collapse.json +125 -0
  1013. package/manifest/fixtures.json +776 -0
  1014. package/manifest/manifest.json +5037 -0
  1015. package/manifest/tokens.json +288 -0
  1016. package/package.json +278 -0
@@ -0,0 +1,55 @@
1
+ import * as React from "react";
2
+ //#region src/chat/agent-pile.d.ts
3
+ /** Rung of the control ladder the avatars sit on. */
4
+ type AgentPileSize = "sm" | "md" | "lg";
5
+ /** One agent in the roster. */
6
+ interface AgentPileEntry {
7
+ /** Stable identifier. Decides the colour, and comes back through `onSelect`. */
8
+ slug: string;
9
+ /** Display name. Defaults to `slug`. */
10
+ name?: string;
11
+ /** A run of this agent's is in flight — draws the working arc. */
12
+ working?: boolean;
13
+ /** This agent is waiting on the user — draws the `?` badge. */
14
+ asking?: boolean;
15
+ }
16
+ interface AgentPileProps extends Omit<React.ComponentPropsWithoutRef<"div">, "onSelect"> {
17
+ /** The roster, in the order it should read. Renders nothing when empty. */
18
+ agents: readonly AgentPileEntry[];
19
+ /** Slug of the orchestrator: takes the theme accent and wears the crown. */
20
+ root?: string;
21
+ /** Slug of the lane currently open — that avatar gets a ring. */
22
+ selected?: string;
23
+ /** Called with a slug when an avatar is pressed. Omit for a read-only pile. */
24
+ onSelect?: (slug: string) => void;
25
+ /** Show at most this many; the rest collapse into a `+N` chip. */
26
+ max?: number;
27
+ /** Force the fan open or shut. Omit to let hover and focus decide. */
28
+ fanned?: boolean;
29
+ /** Rung of the control ladder. Defaults to `"md"`. */
30
+ size?: AgentPileSize;
31
+ /** Accessible name for the group. Required in practice — name the roster. */
32
+ "aria-label"?: string;
33
+ }
34
+ /**
35
+ * The roster of agents working on a thread, stacked into one object.
36
+ *
37
+ * Three states ride on each avatar, and none of them is colour-only: the
38
+ * orchestrator wears a crown, a working agent gets a spinning arc, and an agent
39
+ * waiting on the user gets a `?` badge — each of them also spelled into the
40
+ * avatar's accessible name, so a screen reader hears "Researcher · working"
41
+ * rather than nothing at all.
42
+ *
43
+ * Avatars are outlined in the agent's colour rather than filled with it. A fill
44
+ * would put arbitrary-hue ink on an arbitrary-hue ground at 20px; the outline
45
+ * treatment is the same tinted-chip recipe the rest of the system uses and
46
+ * stays legible on every theme.
47
+ *
48
+ * @example
49
+ * <AgentPile aria-label="Agents" agents={roster} root="chief" onSelect={openLane} />
50
+ * @example
51
+ * <AgentPile aria-label="Agents" agents={roster} max={5} fanned />
52
+ */
53
+ declare const AgentPile: React.ForwardRefExoticComponent<AgentPileProps & React.RefAttributes<HTMLDivElement>>;
54
+ //#endregion
55
+ export { AgentPile, AgentPileEntry, AgentPileProps, AgentPileSize };
@@ -0,0 +1,121 @@
1
+ "use client";
2
+ import { cn } from "../lib/cn.js";
3
+ import { agentColor } from "./agent-color.js";
4
+ import { CrownGlyph } from "./_glyphs.js";
5
+ import * as React from "react";
6
+ import { jsx, jsxs } from "react/jsx-runtime";
7
+ //#region src/chat/agent-pile.tsx
8
+ const AVATAR_SIZES = {
9
+ sm: "size-control-sm text-(length:--cue-text-micro)",
10
+ md: "size-control-md text-(length:--cue-text-label)",
11
+ lg: "size-control-lg text-(length:--cue-text-ui)"
12
+ };
13
+ /**
14
+ * The fan.
15
+ *
16
+ * Collapsed, avatars overlap by 12px so a roster of eight still reads as one
17
+ * object; hovering (or focusing into) the pile pushes them out to a 4px gap so
18
+ * every face is clickable. Logical margins, so the stack flips in RTL, and the
19
+ * transition stills under `prefers-reduced-motion`.
20
+ */
21
+ const OVERLAP = "[margin-inline-start:-0.75rem]";
22
+ const FANNED = "[margin-inline-start:0.25rem]";
23
+ const FAN_ON_HOVER = "group-hover/pile:[margin-inline-start:0.25rem] group-focus-within/pile:[margin-inline-start:0.25rem]";
24
+ /**
25
+ * The roster of agents working on a thread, stacked into one object.
26
+ *
27
+ * Three states ride on each avatar, and none of them is colour-only: the
28
+ * orchestrator wears a crown, a working agent gets a spinning arc, and an agent
29
+ * waiting on the user gets a `?` badge — each of them also spelled into the
30
+ * avatar's accessible name, so a screen reader hears "Researcher · working"
31
+ * rather than nothing at all.
32
+ *
33
+ * Avatars are outlined in the agent's colour rather than filled with it. A fill
34
+ * would put arbitrary-hue ink on an arbitrary-hue ground at 20px; the outline
35
+ * treatment is the same tinted-chip recipe the rest of the system uses and
36
+ * stays legible on every theme.
37
+ *
38
+ * @example
39
+ * <AgentPile aria-label="Agents" agents={roster} root="chief" onSelect={openLane} />
40
+ * @example
41
+ * <AgentPile aria-label="Agents" agents={roster} max={5} fanned />
42
+ */
43
+ const AgentPile = React.forwardRef(function AgentPile({ className, agents, root, selected, onSelect, max, fanned, size = "md", "aria-label": ariaLabel, ...elementProps }, ref) {
44
+ if (agents.length === 0) return null;
45
+ const visible = max === void 0 ? agents : agents.slice(0, Math.max(0, max));
46
+ const overflow = agents.length - visible.length;
47
+ const spacing = fanned === true ? FANNED : fanned === false ? OVERLAP : cn(OVERLAP, FAN_ON_HOVER);
48
+ return /* @__PURE__ */ jsxs("div", {
49
+ ref,
50
+ role: "group",
51
+ "aria-label": ariaLabel,
52
+ "data-slot": "agent-pile",
53
+ "data-fanned": fanned === void 0 ? void 0 : String(fanned),
54
+ className: cn("group/pile flex min-w-0 items-center", className),
55
+ ...elementProps,
56
+ children: [visible.map((agent, index) => {
57
+ const isRoot = agent.slug === root;
58
+ const name = agent.name ?? agent.slug;
59
+ const label = [
60
+ name,
61
+ isRoot ? "orchestrator" : null,
62
+ agent.working === true ? "working" : null,
63
+ agent.asking === true ? "asking a question" : null
64
+ ].filter(Boolean).join(" · ");
65
+ const avatarClasses = cn("relative flex shrink-0 items-center justify-center rounded-full border border-(--agent-color) bg-surface-2 font-mono leading-none text-(--agent-color) uppercase outline-none", AVATAR_SIZES[size], selected === agent.slug ? "ring-2 ring-(--agent-color)" : null, onSelect === void 0 ? null : "cursor-pointer transition-colors hover:bg-surface-3 focus-visible:outline-2 focus-visible:outline-solid focus-visible:outline-offset-2 focus-visible:outline-accent");
66
+ const initial = name.slice(0, 1).toUpperCase();
67
+ return /* @__PURE__ */ jsxs("span", {
68
+ "data-slot": "agent-pile-item",
69
+ "data-slug": agent.slug,
70
+ "data-root": isRoot ? "" : void 0,
71
+ "data-working": agent.working === true ? "" : void 0,
72
+ "data-asking": agent.asking === true ? "" : void 0,
73
+ "data-selected": selected === agent.slug ? "" : void 0,
74
+ className: cn("relative inline-flex rounded-full ring-1 ring-bg transition-[margin] duration-150 ease-out motion-reduce:transition-none", index === 0 ? null : spacing, agent.working === true ? "z-10" : null),
75
+ style: { "--agent-color": agentColor(agent.slug, { root }) },
76
+ children: [
77
+ onSelect === void 0 ? /* @__PURE__ */ jsx("span", {
78
+ role: "img",
79
+ "aria-label": label,
80
+ className: avatarClasses,
81
+ children: /* @__PURE__ */ jsx("span", {
82
+ "aria-hidden": "true",
83
+ children: initial
84
+ })
85
+ }) : /* @__PURE__ */ jsx("button", {
86
+ type: "button",
87
+ "aria-label": label,
88
+ "aria-pressed": selected === void 0 ? void 0 : selected === agent.slug,
89
+ className: avatarClasses,
90
+ onClick: () => onSelect(agent.slug),
91
+ children: /* @__PURE__ */ jsx("span", {
92
+ "aria-hidden": "true",
93
+ children: initial
94
+ })
95
+ }),
96
+ isRoot ? /* @__PURE__ */ jsx(CrownGlyph, {
97
+ "data-slot": "agent-pile-crown",
98
+ className: "pointer-events-none absolute -top-[0.3rem] -start-[0.2rem] size-icon-sm -rotate-[18deg] text-(--agent-color)"
99
+ }) : null,
100
+ agent.working === true ? /* @__PURE__ */ jsx("span", {
101
+ "aria-hidden": "true",
102
+ "data-slot": "agent-pile-arc",
103
+ className: "pointer-events-none absolute -inset-[2px] animate-spin rounded-full border border-transparent [border-inline-end-color:var(--agent-color)] [border-top-color:var(--agent-color)] motion-reduce:animate-none"
104
+ }) : null,
105
+ agent.asking === true ? /* @__PURE__ */ jsx("span", {
106
+ "aria-hidden": "true",
107
+ "data-slot": "agent-pile-asking",
108
+ className: "pointer-events-none absolute -top-[0.15rem] -end-[0.15rem] flex size-[0.75rem] items-center justify-center rounded-full bg-accent font-mono text-[0.5rem] leading-none text-accent-fg ring-1 ring-bg",
109
+ children: "?"
110
+ }) : null
111
+ ]
112
+ }, agent.slug);
113
+ }), overflow > 0 ? /* @__PURE__ */ jsx("span", {
114
+ "data-slot": "agent-pile-overflow",
115
+ className: cn("relative inline-flex shrink-0 items-center justify-center rounded-full border border-border bg-surface-3 font-mono leading-none text-fg-muted ring-1 ring-bg transition-[margin] duration-150 ease-out motion-reduce:transition-none", AVATAR_SIZES[size], spacing),
116
+ children: `+${overflow}`
117
+ }) : null]
118
+ });
119
+ });
120
+ //#endregion
121
+ export { AgentPile };
@@ -0,0 +1,88 @@
1
+ import * as React from "react";
2
+ //#region src/chat/ask-box.d.ts
3
+ /** The shapes an answer can take. `text` is the fallback for anything unmodelled. */
4
+ type AskKind = "text" | "single" | "multi" | "boolean" | "number";
5
+ /** How much damage saying yes could do. Rated by the asker, painted in the shared tones. */
6
+ type AskDanger = "low" | "high" | "critical";
7
+ /** What comes back through `onAnswer`, shaped by {@link AskKind}. */
8
+ type AskAnswer = string | readonly string[] | boolean | number;
9
+ /** One choice offered by a `single` or `multi` question. */
10
+ interface AskOption {
11
+ /** The value handed back through `onAnswer`. */
12
+ value: string;
13
+ /** What the reader sees. Defaults to `value`. */
14
+ label?: React.ReactNode;
15
+ /** A second line under the label — when the choice needs explaining. */
16
+ description?: React.ReactNode;
17
+ }
18
+ interface AskBoxProps extends Omit<React.ComponentPropsWithoutRef<"div">, "onSubmit" | "defaultValue"> {
19
+ /** The question, as text or nodes. Rendered verbatim — never parsed. */
20
+ question: React.ReactNode;
21
+ /** Which widget to offer. Defaults to `"text"`. */
22
+ kind?: AskKind;
23
+ /** Choices for a `single` or `multi` question. */
24
+ options?: readonly AskOption[];
25
+ /** Fired once with the answer. The host is responsible for resuming the run. */
26
+ onAnswer: (value: AskAnswer) => void;
27
+ /**
28
+ * The answer, once there is one. Present means answered: the box collapses to
29
+ * a one-line summary and stops accepting input.
30
+ */
31
+ answer?: AskAnswer;
32
+ /** Slug of the agent asking, for the byline and the box's colour. */
33
+ asker?: string;
34
+ /** Slug of the orchestrator, so its questions take the theme accent. */
35
+ rootAgent?: string;
36
+ /** Tool this question is approving, if it is an approval. */
37
+ tool?: string;
38
+ /** Risk rating for the tool call. Omit for a plain question. */
39
+ danger?: AskDanger;
40
+ /** Initial widget value. A string for `text`/`single`, an array for `multi`, a number for `number`. */
41
+ defaultValue?: AskAnswer;
42
+ /** Placeholder for the `text` widget. */
43
+ placeholder?: string;
44
+ /** Lower bound for the `number` widget. */
45
+ min?: number;
46
+ /** Upper bound for the `number` widget. */
47
+ max?: number;
48
+ /** Increment the `number` widget's stepper moves by. */
49
+ step?: number;
50
+ /** Unit shown beside a number, and in the answered summary. */
51
+ unit?: string;
52
+ /** Label on the affirmative half of a `boolean`. Defaults to `"Confirm"`. */
53
+ confirmLabel?: string;
54
+ /** Label on the negative half of a `boolean`. Defaults to `"Reject"`. */
55
+ rejectLabel?: string;
56
+ /** Label on the submit button. Defaults to `"Submit"`. */
57
+ submitLabel?: React.ReactNode;
58
+ /** The answer is in flight: locks the widget and says so. */
59
+ busy?: boolean;
60
+ /** Expand the answered summary from the start. Defaults to `false`. */
61
+ defaultOpen?: boolean;
62
+ /** Accessible name for the widget when `question` is not plain text. */
63
+ "aria-label"?: string;
64
+ }
65
+ /**
66
+ * The human-in-the-loop question: an agent stops, asks, and waits.
67
+ *
68
+ * Controlled by design. The box holds the *draft* answer while the user is
69
+ * choosing, but it never holds the fact of having answered — that comes back as
70
+ * the `answer` prop once the host has recorded it. Anything else and a
71
+ * component's local state becomes the source of truth for a decision the run
72
+ * depends on, which survives exactly until the pane unmounts.
73
+ *
74
+ * Answered questions collapse to `question · answer ✓` and expand on click, so
75
+ * a long thread reads as a decision log rather than a wall of settled forms.
76
+ *
77
+ * The prompt is rendered verbatim, never parsed as markup: an approval prompt
78
+ * interpolates model-controlled text, and a `![](url)` in a consent statement
79
+ * is an exfiltration channel.
80
+ *
81
+ * @example
82
+ * <AskBox question="Which merge mode?" kind="single" options={modes} onAnswer={resume} />
83
+ * @example
84
+ * <AskBox question="Delete the rig?" kind="boolean" tool="rig.delete" danger="critical" onAnswer={resume} />
85
+ */
86
+ declare const AskBox: React.ForwardRefExoticComponent<AskBoxProps & React.RefAttributes<HTMLDivElement>>;
87
+ //#endregion
88
+ export { AskAnswer, AskBox, AskBoxProps, AskDanger, AskKind, AskOption };
@@ -0,0 +1,341 @@
1
+ "use client";
2
+ import { cn } from "../lib/cn.js";
3
+ import { AGENT_ROOT_COLOR, agentColor } from "./agent-color.js";
4
+ import { CheckGlyph } from "./_glyphs.js";
5
+ import { Checkbox } from "../forms/checkbox.js";
6
+ import { Input } from "../forms/input.js";
7
+ import { NumberField } from "../forms/number-field.js";
8
+ import { Radio, RadioGroup } from "../forms/radio-group.js";
9
+ import { Button } from "../primitives/button.js";
10
+ import { Chip } from "../primitives/chip.js";
11
+ import * as React from "react";
12
+ import { jsx, jsxs } from "react/jsx-runtime";
13
+ //#region src/chat/ask-box.tsx
14
+ /**
15
+ * Risk maps onto the tone vocabulary the rest of the system already speaks, so
16
+ * a "critical" approval is the same red as a failed meter. There is deliberately
17
+ * no `safe` level: a green "safe" chip on a card the user is being asked to
18
+ * approve is noise, and the tool name alone is the useful signal there.
19
+ */
20
+ const DANGER_TONES = {
21
+ low: "ok",
22
+ high: "warn",
23
+ critical: "danger"
24
+ };
25
+ /** The label a reader would recognise for one option value. */
26
+ function labelFor(options, value) {
27
+ return (options?.find((entry) => entry.value === value))?.label ?? value;
28
+ }
29
+ /**
30
+ * The answer, spelled the way it was offered.
31
+ *
32
+ * A summary reading `question · ltp ✓` is a riddle; `question · Latest takes
33
+ * precedence ✓` is a record. Option labels win over raw values, booleans come
34
+ * back as the button the user actually pressed, and a number keeps its unit.
35
+ */
36
+ function formatAnswer(answer, options, labels) {
37
+ if (typeof answer === "boolean") return answer ? labels.confirm : labels.reject;
38
+ if (typeof answer === "number") return labels.unit === void 0 ? String(answer) : `${answer} ${labels.unit}`;
39
+ if (Array.isArray(answer)) {
40
+ const parts = answer.map((value) => labelFor(options, value));
41
+ return parts.length === 0 ? "—" : parts.map((part, index) => /* @__PURE__ */ jsxs(React.Fragment, { children: [index === 0 ? null : ", ", part] }, index));
42
+ }
43
+ return labelFor(options, answer);
44
+ }
45
+ /**
46
+ * The human-in-the-loop question: an agent stops, asks, and waits.
47
+ *
48
+ * Controlled by design. The box holds the *draft* answer while the user is
49
+ * choosing, but it never holds the fact of having answered — that comes back as
50
+ * the `answer` prop once the host has recorded it. Anything else and a
51
+ * component's local state becomes the source of truth for a decision the run
52
+ * depends on, which survives exactly until the pane unmounts.
53
+ *
54
+ * Answered questions collapse to `question · answer ✓` and expand on click, so
55
+ * a long thread reads as a decision log rather than a wall of settled forms.
56
+ *
57
+ * The prompt is rendered verbatim, never parsed as markup: an approval prompt
58
+ * interpolates model-controlled text, and a `![](url)` in a consent statement
59
+ * is an exfiltration channel.
60
+ *
61
+ * @example
62
+ * <AskBox question="Which merge mode?" kind="single" options={modes} onAnswer={resume} />
63
+ * @example
64
+ * <AskBox question="Delete the rig?" kind="boolean" tool="rig.delete" danger="critical" onAnswer={resume} />
65
+ */
66
+ const AskBox = React.forwardRef(function AskBox({ className, question, kind = "text", options, onAnswer, answer, asker, rootAgent, tool, danger, defaultValue, placeholder, min, max, step, unit, confirmLabel = "Confirm", rejectLabel = "Reject", submitLabel = "Submit", busy = false, defaultOpen = false, "aria-label": ariaLabel, style, ...elementProps }, ref) {
67
+ const questionId = React.useId();
68
+ const [open, setOpen] = React.useState(defaultOpen);
69
+ const [text, setText] = React.useState(typeof defaultValue === "string" ? defaultValue : "");
70
+ const [choice, setChoice] = React.useState(typeof defaultValue === "string" ? defaultValue : "");
71
+ const [checked, setChecked] = React.useState(Array.isArray(defaultValue) ? defaultValue : []);
72
+ const [number, setNumber] = React.useState(typeof defaultValue === "number" ? defaultValue : null);
73
+ const color = asker === void 0 ? AGENT_ROOT_COLOR : agentColor(asker, { root: rootAgent });
74
+ const answered = answer !== void 0;
75
+ const boxStyle = {
76
+ "--agent-color": color,
77
+ ...style
78
+ };
79
+ const summary = answered ? formatAnswer(answer, options, {
80
+ confirm: confirmLabel,
81
+ reject: rejectLabel,
82
+ unit
83
+ }) : null;
84
+ const byline = asker === void 0 ? null : /* @__PURE__ */ jsxs("span", {
85
+ "data-slot": "ask-box-asker",
86
+ className: "flex min-w-0 items-center gap-(--cue-space-2) font-mono text-(length:--cue-text-micro) text-fg-subtle",
87
+ children: [/* @__PURE__ */ jsx("span", {
88
+ "aria-hidden": "true",
89
+ className: "text-(--agent-color)",
90
+ children: "●"
91
+ }), /* @__PURE__ */ jsxs("span", {
92
+ className: "truncate",
93
+ children: ["asked by ", /* @__PURE__ */ jsx("span", {
94
+ className: "text-(--agent-color)",
95
+ children: asker
96
+ })]
97
+ })]
98
+ });
99
+ const approval = tool === void 0 ? null : /* @__PURE__ */ jsxs("span", {
100
+ className: "flex min-w-0 items-center gap-(--cue-space-2)",
101
+ children: [/* @__PURE__ */ jsx("code", {
102
+ "data-slot": "ask-box-tool",
103
+ className: "min-w-0 truncate font-mono text-(length:--cue-text-micro) text-fg",
104
+ children: tool
105
+ }), danger === void 0 ? null : /* @__PURE__ */ jsx(Chip, {
106
+ "data-slot": "ask-box-danger",
107
+ tone: DANGER_TONES[danger],
108
+ "data-danger": danger,
109
+ children: danger
110
+ })]
111
+ });
112
+ if (answered) return /* @__PURE__ */ jsxs("div", {
113
+ ref,
114
+ "data-slot": "ask-box",
115
+ "data-answered": "true",
116
+ "data-kind": kind,
117
+ className: cn("flex min-w-0 flex-col rounded-(--radius-surface) border border-border bg-surface-1 px-(--cue-space-4) py-(--cue-space-3)", className),
118
+ style: boxStyle,
119
+ ...elementProps,
120
+ children: [/* @__PURE__ */ jsxs("button", {
121
+ type: "button",
122
+ "data-slot": "ask-box-summary",
123
+ "aria-expanded": open,
124
+ className: "relative flex min-w-0 cursor-pointer items-center gap-(--cue-space-2) border-0 bg-transparent p-0 text-start font-mono text-(length:--cue-text-ui) outline-none focus-visible:outline-2 focus-visible:outline-solid focus-visible:outline-offset-2 focus-visible:outline-accent",
125
+ onClick: () => setOpen((current) => !current),
126
+ children: [
127
+ /* @__PURE__ */ jsx("span", {
128
+ "aria-hidden": "true",
129
+ className: "shrink-0 text-(--agent-color)",
130
+ children: "●"
131
+ }),
132
+ /* @__PURE__ */ jsx("span", {
133
+ className: "min-w-0 truncate text-fg-muted",
134
+ children: question
135
+ }),
136
+ /* @__PURE__ */ jsx("span", {
137
+ "aria-hidden": "true",
138
+ className: "shrink-0 text-fg-subtle",
139
+ children: "·"
140
+ }),
141
+ /* @__PURE__ */ jsx("span", {
142
+ "data-slot": "ask-box-answer",
143
+ className: "min-w-0 truncate text-fg",
144
+ children: summary
145
+ }),
146
+ /* @__PURE__ */ jsx(CheckGlyph, { className: "size-icon-sm shrink-0 text-ok" }),
147
+ /* @__PURE__ */ jsx("span", {
148
+ className: "sr-only",
149
+ children: "answered"
150
+ })
151
+ ]
152
+ }), open ? /* @__PURE__ */ jsxs("div", {
153
+ "data-slot": "ask-box-detail",
154
+ className: "mt-(--cue-space-3) flex flex-col gap-(--cue-space-2) border-t border-border pt-(--cue-space-3)",
155
+ children: [
156
+ /* @__PURE__ */ jsx("p", {
157
+ className: "text-(length:--cue-text-ui) leading-(--cue-leading-ui) break-words whitespace-pre-wrap text-fg-muted",
158
+ children: question
159
+ }),
160
+ /* @__PURE__ */ jsx("p", {
161
+ className: "text-(length:--cue-text-ui) text-fg",
162
+ children: summary
163
+ }),
164
+ /* @__PURE__ */ jsxs("div", {
165
+ className: "flex flex-wrap items-center gap-(--cue-space-3)",
166
+ children: [byline, approval]
167
+ })
168
+ ]
169
+ }) : null]
170
+ });
171
+ const submit = (value) => {
172
+ if (busy) return;
173
+ onAnswer(value);
174
+ };
175
+ const widget = (() => {
176
+ switch (kind) {
177
+ case "boolean": return /* @__PURE__ */ jsxs("div", {
178
+ className: "flex flex-wrap items-center gap-(--cue-space-3)",
179
+ children: [/* @__PURE__ */ jsx(Button, {
180
+ type: "button",
181
+ variant: "primary",
182
+ size: "sm",
183
+ disabled: busy,
184
+ onClick: () => submit(true),
185
+ children: confirmLabel
186
+ }), /* @__PURE__ */ jsx(Button, {
187
+ type: "button",
188
+ variant: "outline",
189
+ size: "sm",
190
+ disabled: busy,
191
+ onClick: () => submit(false),
192
+ children: rejectLabel
193
+ })]
194
+ });
195
+ case "single": return /* @__PURE__ */ jsxs("div", {
196
+ className: "flex flex-col items-start gap-(--cue-space-3)",
197
+ children: [/* @__PURE__ */ jsx(RadioGroup, {
198
+ "aria-labelledby": questionId,
199
+ value: choice === "" ? null : choice,
200
+ onValueChange: (next) => setChoice(String(next ?? "")),
201
+ disabled: busy,
202
+ children: (options ?? []).map((option) => /* @__PURE__ */ jsx(Radio, {
203
+ value: option.value,
204
+ label: /* @__PURE__ */ jsxs("span", {
205
+ className: "flex flex-col",
206
+ children: [/* @__PURE__ */ jsx("span", { children: option.label ?? option.value }), option.description === void 0 ? null : /* @__PURE__ */ jsx("span", {
207
+ className: "text-(length:--cue-text-micro) text-fg-subtle",
208
+ children: option.description
209
+ })]
210
+ })
211
+ }, option.value))
212
+ }), /* @__PURE__ */ jsx(Button, {
213
+ type: "button",
214
+ variant: "primary",
215
+ size: "sm",
216
+ disabled: busy || choice === "",
217
+ onClick: () => submit(choice),
218
+ children: submitLabel
219
+ })]
220
+ });
221
+ case "multi": return /* @__PURE__ */ jsxs("div", {
222
+ className: "flex flex-col items-start gap-(--cue-space-3)",
223
+ children: [/* @__PURE__ */ jsx("div", {
224
+ role: "group",
225
+ "aria-labelledby": questionId,
226
+ className: "flex flex-col gap-(--cue-space-2)",
227
+ children: (options ?? []).map((option) => /* @__PURE__ */ jsx(Checkbox, {
228
+ checked: checked.includes(option.value),
229
+ disabled: busy,
230
+ label: /* @__PURE__ */ jsxs("span", {
231
+ className: "flex flex-col",
232
+ children: [/* @__PURE__ */ jsx("span", { children: option.label ?? option.value }), option.description === void 0 ? null : /* @__PURE__ */ jsx("span", {
233
+ className: "text-(length:--cue-text-micro) text-fg-subtle",
234
+ children: option.description
235
+ })]
236
+ }),
237
+ onCheckedChange: (next) => setChecked((current) => next ? [...current, option.value] : current.filter((entry) => entry !== option.value))
238
+ }, option.value))
239
+ }), /* @__PURE__ */ jsx(Button, {
240
+ type: "button",
241
+ variant: "primary",
242
+ size: "sm",
243
+ disabled: busy,
244
+ onClick: () => submit((options ?? []).filter((o) => checked.includes(o.value)).map((o) => o.value)),
245
+ children: submitLabel
246
+ })]
247
+ });
248
+ case "number": return /* @__PURE__ */ jsxs("div", {
249
+ className: "flex flex-wrap items-center gap-(--cue-space-3)",
250
+ children: [
251
+ /* @__PURE__ */ jsx(NumberField, {
252
+ "aria-label": typeof question === "string" ? question : ariaLabel ?? "Answer",
253
+ size: "sm",
254
+ value: number,
255
+ onValueChange: setNumber,
256
+ disabled: busy,
257
+ className: "w-[9rem]",
258
+ ...min === void 0 ? null : { min },
259
+ ...max === void 0 ? null : { max },
260
+ ...step === void 0 ? null : { step }
261
+ }),
262
+ unit === void 0 ? null : /* @__PURE__ */ jsx("span", {
263
+ className: "font-mono text-(length:--cue-text-label) text-fg-subtle",
264
+ children: unit
265
+ }),
266
+ /* @__PURE__ */ jsx(Button, {
267
+ type: "button",
268
+ variant: "primary",
269
+ size: "sm",
270
+ disabled: busy || number === null,
271
+ onClick: () => submit(number),
272
+ children: submitLabel
273
+ })
274
+ ]
275
+ });
276
+ default: return /* @__PURE__ */ jsxs("div", {
277
+ className: "flex flex-wrap items-center gap-(--cue-space-3)",
278
+ children: [/* @__PURE__ */ jsx(Input, {
279
+ "aria-labelledby": questionId,
280
+ size: "sm",
281
+ value: text,
282
+ placeholder,
283
+ disabled: busy,
284
+ className: "min-w-0 flex-1",
285
+ onChange: (event) => setText(event.target.value),
286
+ onKeyDown: (event) => {
287
+ if (event.key !== "Enter") return;
288
+ event.preventDefault();
289
+ if (text.trim().length > 0) submit(text.trim());
290
+ }
291
+ }), /* @__PURE__ */ jsx(Button, {
292
+ type: "button",
293
+ variant: "primary",
294
+ size: "sm",
295
+ disabled: busy || text.trim().length === 0,
296
+ onClick: () => submit(text.trim()),
297
+ children: submitLabel
298
+ })]
299
+ });
300
+ }
301
+ })();
302
+ return /* @__PURE__ */ jsxs("div", {
303
+ ref,
304
+ "data-slot": "ask-box",
305
+ "data-answered": "false",
306
+ "data-kind": kind,
307
+ className: cn("flex min-w-0 flex-col gap-(--cue-space-3) rounded-(--radius-surface) border border-(--agent-color) bg-surface-1 px-(--cue-space-4) py-(--cue-space-3)", className),
308
+ style: boxStyle,
309
+ ...elementProps,
310
+ children: [
311
+ /* @__PURE__ */ jsxs("div", {
312
+ className: "flex min-w-0 flex-wrap items-center justify-between gap-(--cue-space-3)",
313
+ children: [/* @__PURE__ */ jsxs("span", {
314
+ className: "flex min-w-0 flex-wrap items-center gap-(--cue-space-3)",
315
+ children: [byline, approval]
316
+ }), /* @__PURE__ */ jsxs("span", {
317
+ role: "status",
318
+ "data-slot": "ask-box-state",
319
+ className: "flex shrink-0 items-center gap-(--cue-space-2) font-mono text-(length:--cue-text-micro) text-fg-subtle",
320
+ children: [/* @__PURE__ */ jsx("span", {
321
+ "aria-hidden": "true",
322
+ className: "size-[0.375rem] shrink-0 animate-pulse rounded-full bg-(--agent-color) motion-reduce:animate-none"
323
+ }), busy ? "submitting…" : "waiting for you"]
324
+ })]
325
+ }),
326
+ /* @__PURE__ */ jsx("p", {
327
+ id: questionId,
328
+ "data-slot": "ask-box-question",
329
+ className: "min-w-0 text-(length:--cue-text-body) leading-(--cue-leading-ui) break-words whitespace-pre-wrap text-fg",
330
+ children: question
331
+ }),
332
+ /* @__PURE__ */ jsx("div", {
333
+ "data-slot": "ask-box-widget",
334
+ className: "flex min-w-0 flex-col",
335
+ children: widget
336
+ })
337
+ ]
338
+ });
339
+ });
340
+ //#endregion
341
+ export { AskBox };
@@ -0,0 +1,66 @@
1
+ import * as React from "react";
2
+ //#region src/chat/composer.d.ts
3
+ /** Which gesture sends. `"enter"` keeps Shift+Enter for a newline; `"mod+enter"` inverts the pair. */
4
+ type ComposerSubmitKey = "enter" | "mod+enter";
5
+ interface ComposerProps extends Omit<React.ComponentPropsWithoutRef<"form">, "onSubmit" | "onChange"> {
6
+ /** Fired with the trimmed draft. Never fired with an empty string. */
7
+ onSend: (value: string) => void;
8
+ /** Draft when the host owns it. Pass with `onValueChange`. */
9
+ value?: string;
10
+ /** Initial draft when uncontrolled. */
11
+ defaultValue?: string;
12
+ /** Called on every keystroke with the new draft. */
13
+ onValueChange?: (value: string) => void;
14
+ /** Placeholder for the empty box. Defaults to `"Message"`. */
15
+ placeholder?: string;
16
+ /** Block sending — a closed thread, a failed connection. */
17
+ disabled?: boolean;
18
+ /** A run is in flight. With `onStop`, swaps Send for Stop. */
19
+ busy?: boolean;
20
+ /** Abort the in-flight run. Renders the Stop button while `busy`. */
21
+ onStop?: () => void;
22
+ /** Which gesture submits. Defaults to `"enter"`. */
23
+ submitKey?: ComposerSubmitKey;
24
+ /** Rows the box may grow to before it scrolls. Defaults to `8`. */
25
+ maxRows?: number;
26
+ /** Label on the send button. Defaults to `"Send"`. */
27
+ sendLabel?: React.ReactNode;
28
+ /** Label on the stop button. Defaults to `"Stop"`. */
29
+ stopLabel?: React.ReactNode;
30
+ /** Tray above the input — attachment chips, a reply-to quote. */
31
+ attachments?: React.ReactNode;
32
+ /** Controls beside the send button — an attach button, a model picker. */
33
+ toolbar?: React.ReactNode;
34
+ /** Quiet strip under the input — a keyboard hint, a character count. */
35
+ hint?: React.ReactNode;
36
+ /** Accessible name for the input. Defaults to `"Message"`. */
37
+ "aria-label"?: string;
38
+ }
39
+ /**
40
+ * The thing you type into: an auto-growing textarea, a send affordance, and
41
+ * slots for everything a host wants to hang off them.
42
+ *
43
+ * Three decisions worth stating:
44
+ *
45
+ * - **It grows, it does not scroll.** A one-line box that hides the second half
46
+ * of what you wrote is the most-complained-about part of every chat UI. The
47
+ * box starts at the tall control rung and grows to `maxRows` before it gives
48
+ * up and scrolls.
49
+ * - **The submit gesture is a setting.** Enter-to-send is right for a chat lane
50
+ * and wrong for a prompt editor where every draft is three paragraphs, so
51
+ * both are first-class and the *other* key always inserts a newline.
52
+ * - **Stop is never disabled.** While a run is in flight the composer is
53
+ * `disabled`, but the button that ends the run cannot inherit that — a stop
54
+ * you cannot press is not a stop.
55
+ *
56
+ * The ref lands on the textarea rather than the form: focusing the composer is
57
+ * the thing hosts actually reach for.
58
+ *
59
+ * @example
60
+ * <Composer onSend={send} />
61
+ * @example
62
+ * <Composer submitKey="mod+enter" busy={running} onStop={abort} onSend={send} />
63
+ */
64
+ declare const Composer: React.ForwardRefExoticComponent<ComposerProps & React.RefAttributes<HTMLTextAreaElement>>;
65
+ //#endregion
66
+ export { Composer, ComposerProps, ComposerSubmitKey };