@dungle-scrubs/admin-ui-soft 0.0.0-stage → 0.1.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 (557) hide show
  1. package/GUIDE.md +110 -0
  2. package/LICENSE +21 -0
  3. package/README.md +36 -2
  4. package/THIRD-PARTY-NOTICES.md +25 -0
  5. package/UPSTREAM-VENDORED-CHANGES.md +317 -0
  6. package/VENDORED-CHANGES.md +60 -0
  7. package/dist/_virtual/_rolldown/runtime.js +13 -0
  8. package/dist/ai/compositions/agent-console/agent-console.d.ts +109 -0
  9. package/dist/ai/compositions/agent-console/agent-console.js +644 -0
  10. package/dist/ai/compositions/attention-feed/attention-feed.d.ts +127 -0
  11. package/dist/ai/compositions/attention-feed/attention-feed.js +626 -0
  12. package/dist/ai/compositions/conversation-browser/conversation-browser.d.ts +126 -0
  13. package/dist/ai/compositions/conversation-browser/conversation-browser.js +364 -0
  14. package/dist/ai/compositions/redaction-marker/redaction-marker.d.ts +42 -0
  15. package/dist/ai/compositions/redaction-marker/redaction-marker.js +202 -0
  16. package/dist/ai/compositions/run-inspector/json-view.js +164 -0
  17. package/dist/ai/compositions/run-inspector/run-inspector.d.ts +66 -0
  18. package/dist/ai/compositions/run-inspector/run-inspector.js +703 -0
  19. package/dist/ai/compositions/run-inspector/run-model.js +155 -0
  20. package/dist/ai/compositions/tool-approval/json-args.js +54 -0
  21. package/dist/ai/compositions/tool-approval/tool-approval.d.ts +57 -0
  22. package/dist/ai/compositions/tool-approval/tool-approval.js +331 -0
  23. package/dist/ai/compositions/tool-call-row/tool-call-row.js +74 -0
  24. package/dist/ai/compositions/transcript-viewer/to-thread-messages.js +65 -0
  25. package/dist/ai/compositions/transcript-viewer/transcript-viewer.d.ts +63 -0
  26. package/dist/ai/compositions/transcript-viewer/transcript-viewer.js +471 -0
  27. package/dist/ai/compositions/usage-meter/usage-format.js +107 -0
  28. package/dist/ai/compositions/usage-meter/usage-meter.d.ts +32 -0
  29. package/dist/ai/compositions/usage-meter/usage-meter.js +258 -0
  30. package/dist/ai/testing/mock-clock.d.ts +31 -0
  31. package/dist/ai/testing/mock-clock.js +66 -0
  32. package/dist/ai/testing/mock-reply.d.ts +70 -0
  33. package/dist/ai/testing/mock-reply.js +100 -0
  34. package/dist/ai/testing/mock-runtime.d.ts +86 -0
  35. package/dist/ai/testing/mock-runtime.js +384 -0
  36. package/dist/ai/types.d.ts +323 -0
  37. package/dist/ai.css +1088 -0
  38. package/dist/ai.d.ts +160 -0
  39. package/dist/ai.js +158 -0
  40. package/dist/components/assistant-ui/elements/activity-graph.d.ts +14 -0
  41. package/dist/components/assistant-ui/elements/activity-graph.js +69 -0
  42. package/dist/components/assistant-ui/elements/agent-card.d.ts +21 -0
  43. package/dist/components/assistant-ui/elements/agent-card.js +75 -0
  44. package/dist/components/assistant-ui/elements/agent-handoff.d.ts +13 -0
  45. package/dist/components/assistant-ui/elements/agent-handoff.js +47 -0
  46. package/dist/components/assistant-ui/elements/agent-plan.d.ts +16 -0
  47. package/dist/components/assistant-ui/elements/agent-plan.js +93 -0
  48. package/dist/components/assistant-ui/elements/agent-status.aui.d.ts +24 -0
  49. package/dist/components/assistant-ui/elements/agent-status.aui.js +161 -0
  50. package/dist/components/assistant-ui/elements/agent-status.d.ts +17 -0
  51. package/dist/components/assistant-ui/elements/agent-status.js +47 -0
  52. package/dist/components/assistant-ui/elements/approval-card.d.ts +31 -0
  53. package/dist/components/assistant-ui/elements/approval-card.js +99 -0
  54. package/dist/components/assistant-ui/elements/artifact-card.d.ts +12 -0
  55. package/dist/components/assistant-ui/elements/artifact-card.js +47 -0
  56. package/dist/components/assistant-ui/elements/assistant-modal.aui.d.ts +7 -0
  57. package/dist/components/assistant-ui/elements/assistant-modal.aui.js +276 -0
  58. package/dist/components/assistant-ui/elements/assistant-sidebar.aui.d.ts +7 -0
  59. package/dist/components/assistant-ui/elements/assistant-sidebar.aui.js +18 -0
  60. package/dist/components/assistant-ui/elements/attachment.aui.d.ts +9 -0
  61. package/dist/components/assistant-ui/elements/attachment.aui.js +143 -0
  62. package/dist/components/assistant-ui/elements/background-inbox.d.ts +18 -0
  63. package/dist/components/assistant-ui/elements/background-inbox.js +65 -0
  64. package/dist/components/assistant-ui/elements/canvas-split.d.ts +25 -0
  65. package/dist/components/assistant-ui/elements/canvas-split.js +106 -0
  66. package/dist/components/assistant-ui/elements/chart.d.ts +19 -0
  67. package/dist/components/assistant-ui/elements/chart.js +105 -0
  68. package/dist/components/assistant-ui/elements/chat-panel.d.ts +15 -0
  69. package/dist/components/assistant-ui/elements/chat-panel.js +82 -0
  70. package/dist/components/assistant-ui/elements/checkpoint-history.d.ts +17 -0
  71. package/dist/components/assistant-ui/elements/checkpoint-history.js +60 -0
  72. package/dist/components/assistant-ui/elements/code-diff.d.ts +18 -0
  73. package/dist/components/assistant-ui/elements/code-diff.js +89 -0
  74. package/dist/components/assistant-ui/elements/code-runner.d.ts +15 -0
  75. package/dist/components/assistant-ui/elements/code-runner.js +108 -0
  76. package/dist/components/assistant-ui/elements/command-palette.d.ts +20 -0
  77. package/dist/components/assistant-ui/elements/command-palette.js +129 -0
  78. package/dist/components/assistant-ui/elements/comparison-card.d.ts +18 -0
  79. package/dist/components/assistant-ui/elements/comparison-card.js +58 -0
  80. package/dist/components/assistant-ui/elements/composer-trigger-popover.aui.d.ts +51 -0
  81. package/dist/components/assistant-ui/elements/composer-trigger-popover.aui.js +104 -0
  82. package/dist/components/assistant-ui/elements/composer.d.ts +91 -0
  83. package/dist/components/assistant-ui/elements/composer.js +416 -0
  84. package/dist/components/assistant-ui/elements/computer-use.d.ts +19 -0
  85. package/dist/components/assistant-ui/elements/computer-use.js +84 -0
  86. package/dist/components/assistant-ui/elements/confidence-marker.d.ts +20 -0
  87. package/dist/components/assistant-ui/elements/confidence-marker.js +58 -0
  88. package/dist/components/assistant-ui/elements/connection-state.d.ts +13 -0
  89. package/dist/components/assistant-ui/elements/connection-state.js +59 -0
  90. package/dist/components/assistant-ui/elements/context-breakdown.d.ts +15 -0
  91. package/dist/components/assistant-ui/elements/context-breakdown.js +91 -0
  92. package/dist/components/assistant-ui/elements/context-display.aui.d.ts +25 -0
  93. package/dist/components/assistant-ui/elements/context-display.aui.js +26 -0
  94. package/dist/components/assistant-ui/elements/context-display.d.ts +43 -0
  95. package/dist/components/assistant-ui/elements/context-display.js +300 -0
  96. package/dist/components/assistant-ui/elements/conversation-map.aui.d.ts +9 -0
  97. package/dist/components/assistant-ui/elements/conversation-map.aui.js +177 -0
  98. package/dist/components/assistant-ui/elements/conversation-map.d.ts +19 -0
  99. package/dist/components/assistant-ui/elements/conversation-map.js +84 -0
  100. package/dist/components/assistant-ui/elements/conversation-search.d.ts +20 -0
  101. package/dist/components/assistant-ui/elements/conversation-search.js +75 -0
  102. package/dist/components/assistant-ui/elements/cost-meter.d.ts +19 -0
  103. package/dist/components/assistant-ui/elements/cost-meter.js +76 -0
  104. package/dist/components/assistant-ui/elements/data-table.d.ts +72 -0
  105. package/dist/components/assistant-ui/elements/data-table.js +368 -0
  106. package/dist/components/assistant-ui/elements/day-separator.d.ts +16 -0
  107. package/dist/components/assistant-ui/elements/day-separator.js +44 -0
  108. package/dist/components/assistant-ui/elements/diagram.d.ts +15 -0
  109. package/dist/components/assistant-ui/elements/diagram.js +65 -0
  110. package/dist/components/assistant-ui/elements/directive-text.aui.d.ts +11 -0
  111. package/dist/components/assistant-ui/elements/directive-text.aui.js +18 -0
  112. package/dist/components/assistant-ui/elements/directive-text.d.ts +32 -0
  113. package/dist/components/assistant-ui/elements/directive-text.js +35 -0
  114. package/dist/components/assistant-ui/elements/document-reference.d.ts +17 -0
  115. package/dist/components/assistant-ui/elements/document-reference.js +62 -0
  116. package/dist/components/assistant-ui/elements/draft-restore.d.ts +12 -0
  117. package/dist/components/assistant-ui/elements/draft-restore.js +43 -0
  118. package/dist/components/assistant-ui/elements/edit-message.d.ts +15 -0
  119. package/dist/components/assistant-ui/elements/edit-message.js +63 -0
  120. package/dist/components/assistant-ui/elements/elicitation-form.d.ts +23 -0
  121. package/dist/components/assistant-ui/elements/elicitation-form.js +112 -0
  122. package/dist/components/assistant-ui/elements/empty-state.d.ts +16 -0
  123. package/dist/components/assistant-ui/elements/empty-state.js +71 -0
  124. package/dist/components/assistant-ui/elements/error-state.d.ts +13 -0
  125. package/dist/components/assistant-ui/elements/error-state.js +52 -0
  126. package/dist/components/assistant-ui/elements/feedback-dialog.d.ts +15 -0
  127. package/dist/components/assistant-ui/elements/feedback-dialog.js +77 -0
  128. package/dist/components/assistant-ui/elements/file-tree.d.ts +20 -0
  129. package/dist/components/assistant-ui/elements/file-tree.js +74 -0
  130. package/dist/components/assistant-ui/elements/file.d.ts +52 -0
  131. package/dist/components/assistant-ui/elements/file.js +222 -0
  132. package/dist/components/assistant-ui/elements/flow-graph.d.ts +23 -0
  133. package/dist/components/assistant-ui/elements/flow-graph.js +72 -0
  134. package/dist/components/assistant-ui/elements/follow-up-suggestions.aui.d.ts +7 -0
  135. package/dist/components/assistant-ui/elements/follow-up-suggestions.aui.js +30 -0
  136. package/dist/components/assistant-ui/elements/generative-ui.d.ts +8 -0
  137. package/dist/components/assistant-ui/elements/generative-ui.js +27 -0
  138. package/dist/components/assistant-ui/elements/geo-map.d.ts +29 -0
  139. package/dist/components/assistant-ui/elements/geo-map.js +190 -0
  140. package/dist/components/assistant-ui/elements/guardrail-notice.d.ts +15 -0
  141. package/dist/components/assistant-ui/elements/guardrail-notice.js +59 -0
  142. package/dist/components/assistant-ui/elements/heat-graph.d.ts +9 -0
  143. package/dist/components/assistant-ui/elements/heat-graph.js +90 -0
  144. package/dist/components/assistant-ui/elements/image-gallery.d.ts +22 -0
  145. package/dist/components/assistant-ui/elements/image-gallery.js +192 -0
  146. package/dist/components/assistant-ui/elements/image-generation.d.ts +11 -0
  147. package/dist/components/assistant-ui/elements/image-generation.js +64 -0
  148. package/dist/components/assistant-ui/elements/image.d.ts +59 -0
  149. package/dist/components/assistant-ui/elements/image.js +416 -0
  150. package/dist/components/assistant-ui/elements/inline-citation.d.ts +23 -0
  151. package/dist/components/assistant-ui/elements/inline-citation.js +90 -0
  152. package/dist/components/assistant-ui/elements/job-progress.d.ts +25 -0
  153. package/dist/components/assistant-ui/elements/job-progress.js +102 -0
  154. package/dist/components/assistant-ui/elements/launcher-bubble.d.ts +15 -0
  155. package/dist/components/assistant-ui/elements/launcher-bubble.js +71 -0
  156. package/dist/components/assistant-ui/elements/link-preview.d.ts +17 -0
  157. package/dist/components/assistant-ui/elements/link-preview.js +77 -0
  158. package/dist/components/assistant-ui/elements/loading-state.d.ts +13 -0
  159. package/dist/components/assistant-ui/elements/loading-state.js +33 -0
  160. package/dist/components/assistant-ui/elements/logos.d.ts +10 -0
  161. package/dist/components/assistant-ui/elements/logos.js +63 -0
  162. package/dist/components/assistant-ui/elements/map-answer.d.ts +19 -0
  163. package/dist/components/assistant-ui/elements/map-answer.js +120 -0
  164. package/dist/components/assistant-ui/elements/markdown-text.d.ts +11 -0
  165. package/dist/components/assistant-ui/elements/markdown-text.js +152 -0
  166. package/dist/components/assistant-ui/elements/math-block.d.ts +25 -0
  167. package/dist/components/assistant-ui/elements/math-block.js +60 -0
  168. package/dist/components/assistant-ui/elements/mcp-config.aui.d.ts +28 -0
  169. package/dist/components/assistant-ui/elements/mcp-config.aui.js +380 -0
  170. package/dist/components/assistant-ui/elements/mcp-server-panel.d.ts +20 -0
  171. package/dist/components/assistant-ui/elements/mcp-server-panel.js +114 -0
  172. package/dist/components/assistant-ui/elements/media-player.d.ts +21 -0
  173. package/dist/components/assistant-ui/elements/media-player.js +302 -0
  174. package/dist/components/assistant-ui/elements/memory-chips.d.ts +16 -0
  175. package/dist/components/assistant-ui/elements/memory-chips.js +44 -0
  176. package/dist/components/assistant-ui/elements/mermaid-diagram.aui.d.ts +14 -0
  177. package/dist/components/assistant-ui/elements/mermaid-diagram.aui.js +43 -0
  178. package/dist/components/assistant-ui/elements/mermaid-diagram.d.ts +20 -0
  179. package/dist/components/assistant-ui/elements/mermaid-diagram.js +258 -0
  180. package/dist/components/assistant-ui/elements/message-actions.d.ts +17 -0
  181. package/dist/components/assistant-ui/elements/message-actions.js +57 -0
  182. package/dist/components/assistant-ui/elements/message-attachment.d.ts +18 -0
  183. package/dist/components/assistant-ui/elements/message-attachment.js +58 -0
  184. package/dist/components/assistant-ui/elements/message-branches.d.ts +12 -0
  185. package/dist/components/assistant-ui/elements/message-branches.js +55 -0
  186. package/dist/components/assistant-ui/elements/message-pair.d.ts +16 -0
  187. package/dist/components/assistant-ui/elements/message-pair.js +63 -0
  188. package/dist/components/assistant-ui/elements/message-queue.d.ts +15 -0
  189. package/dist/components/assistant-ui/elements/message-queue.js +70 -0
  190. package/dist/components/assistant-ui/elements/message-timing.aui.d.ts +30 -0
  191. package/dist/components/assistant-ui/elements/message-timing.aui.js +98 -0
  192. package/dist/components/assistant-ui/elements/message-timing.d.ts +14 -0
  193. package/dist/components/assistant-ui/elements/message-timing.js +26 -0
  194. package/dist/components/assistant-ui/elements/mobile-composer.d.ts +18 -0
  195. package/dist/components/assistant-ui/elements/mobile-composer.js +76 -0
  196. package/dist/components/assistant-ui/elements/model-picker.d.ts +19 -0
  197. package/dist/components/assistant-ui/elements/model-picker.js +68 -0
  198. package/dist/components/assistant-ui/elements/model-selector.aui.d.ts +23 -0
  199. package/dist/components/assistant-ui/elements/model-selector.aui.js +79 -0
  200. package/dist/components/assistant-ui/elements/model-selector.d.ts +130 -0
  201. package/dist/components/assistant-ui/elements/model-selector.js +399 -0
  202. package/dist/components/assistant-ui/elements/number-ticker.d.ts +10 -0
  203. package/dist/components/assistant-ui/elements/number-ticker.js +41 -0
  204. package/dist/components/assistant-ui/elements/onboarding.d.ts +17 -0
  205. package/dist/components/assistant-ui/elements/onboarding.js +69 -0
  206. package/dist/components/assistant-ui/elements/option-list.d.ts +39 -0
  207. package/dist/components/assistant-ui/elements/option-list.js +176 -0
  208. package/dist/components/assistant-ui/elements/permission-grant.d.ts +14 -0
  209. package/dist/components/assistant-ui/elements/permission-grant.js +84 -0
  210. package/dist/components/assistant-ui/elements/prompt-library.d.ts +20 -0
  211. package/dist/components/assistant-ui/elements/prompt-library.js +121 -0
  212. package/dist/components/assistant-ui/elements/question-flow.d.ts +24 -0
  213. package/dist/components/assistant-ui/elements/question-flow.js +180 -0
  214. package/dist/components/assistant-ui/elements/quota-banner.d.ts +14 -0
  215. package/dist/components/assistant-ui/elements/quota-banner.js +68 -0
  216. package/dist/components/assistant-ui/elements/quote-reply.d.ts +20 -0
  217. package/dist/components/assistant-ui/elements/quote-reply.js +66 -0
  218. package/dist/components/assistant-ui/elements/quote.aui.d.ts +61 -0
  219. package/dist/components/assistant-ui/elements/quote.aui.js +170 -0
  220. package/dist/components/assistant-ui/elements/read-aloud.d.ts +16 -0
  221. package/dist/components/assistant-ui/elements/read-aloud.js +66 -0
  222. package/dist/components/assistant-ui/elements/reasoning-effort.d.ts +17 -0
  223. package/dist/components/assistant-ui/elements/reasoning-effort.js +67 -0
  224. package/dist/components/assistant-ui/elements/reasoning-panel.d.ts +20 -0
  225. package/dist/components/assistant-ui/elements/reasoning-panel.js +60 -0
  226. package/dist/components/assistant-ui/elements/reasoning.aui.d.ts +24 -0
  227. package/dist/components/assistant-ui/elements/reasoning.aui.js +70 -0
  228. package/dist/components/assistant-ui/elements/reasoning.d.ts +38 -0
  229. package/dist/components/assistant-ui/elements/reasoning.js +194 -0
  230. package/dist/components/assistant-ui/elements/recommendation-card.d.ts +16 -0
  231. package/dist/components/assistant-ui/elements/recommendation-card.js +65 -0
  232. package/dist/components/assistant-ui/elements/regenerate-menu.d.ts +18 -0
  233. package/dist/components/assistant-ui/elements/regenerate-menu.js +46 -0
  234. package/dist/components/assistant-ui/elements/research-report.d.ts +19 -0
  235. package/dist/components/assistant-ui/elements/research-report.js +63 -0
  236. package/dist/components/assistant-ui/elements/retrieval-chunks.d.ts +19 -0
  237. package/dist/components/assistant-ui/elements/retrieval-chunks.js +86 -0
  238. package/dist/components/assistant-ui/elements/reviewable-diff.d.ts +21 -0
  239. package/dist/components/assistant-ui/elements/reviewable-diff.js +104 -0
  240. package/dist/components/assistant-ui/elements/schedule-card.d.ts +19 -0
  241. package/dist/components/assistant-ui/elements/schedule-card.js +80 -0
  242. package/dist/components/assistant-ui/elements/score-breakdown.d.ts +19 -0
  243. package/dist/components/assistant-ui/elements/score-breakdown.js +107 -0
  244. package/dist/components/assistant-ui/elements/scroll-anchor.d.ts +15 -0
  245. package/dist/components/assistant-ui/elements/scroll-anchor.js +104 -0
  246. package/dist/components/assistant-ui/elements/settings-panel.d.ts +23 -0
  247. package/dist/components/assistant-ui/elements/settings-panel.js +108 -0
  248. package/dist/components/assistant-ui/elements/shared-conversation.d.ts +18 -0
  249. package/dist/components/assistant-ui/elements/shared-conversation.js +56 -0
  250. package/dist/components/assistant-ui/elements/shiki-highlighter.aui.d.ts +29 -0
  251. package/dist/components/assistant-ui/elements/shiki-highlighter.aui.js +31 -0
  252. package/dist/components/assistant-ui/elements/shiki-highlighter.d.ts +26 -0
  253. package/dist/components/assistant-ui/elements/shiki-highlighter.js +49 -0
  254. package/dist/components/assistant-ui/elements/sources.aui.d.ts +24 -0
  255. package/dist/components/assistant-ui/elements/sources.aui.js +121 -0
  256. package/dist/components/assistant-ui/elements/sources.d.ts +21 -0
  257. package/dist/components/assistant-ui/elements/sources.js +109 -0
  258. package/dist/components/assistant-ui/elements/speaker-identity.d.ts +17 -0
  259. package/dist/components/assistant-ui/elements/speaker-identity.js +45 -0
  260. package/dist/components/assistant-ui/elements/spec-sheet.d.ts +17 -0
  261. package/dist/components/assistant-ui/elements/spec-sheet.js +39 -0
  262. package/dist/components/assistant-ui/elements/stopped-run.d.ts +12 -0
  263. package/dist/components/assistant-ui/elements/stopped-run.js +44 -0
  264. package/dist/components/assistant-ui/elements/streaming-text.d.ts +15 -0
  265. package/dist/components/assistant-ui/elements/streaming-text.js +45 -0
  266. package/dist/components/assistant-ui/elements/subagent-list.d.ts +17 -0
  267. package/dist/components/assistant-ui/elements/subagent-list.js +74 -0
  268. package/dist/components/assistant-ui/elements/suggestions.d.ts +14 -0
  269. package/dist/components/assistant-ui/elements/suggestions.js +25 -0
  270. package/dist/components/assistant-ui/elements/surfaces.d.ts +42 -0
  271. package/dist/components/assistant-ui/elements/surfaces.js +87 -0
  272. package/dist/components/assistant-ui/elements/syntax-highlighter.d.ts +7 -0
  273. package/dist/components/assistant-ui/elements/syntax-highlighter.js +41 -0
  274. package/dist/components/assistant-ui/elements/task-card.aui.d.ts +24 -0
  275. package/dist/components/assistant-ui/elements/task-card.aui.js +136 -0
  276. package/dist/components/assistant-ui/elements/task-card.d.ts +22 -0
  277. package/dist/components/assistant-ui/elements/task-card.js +104 -0
  278. package/dist/components/assistant-ui/elements/terminal-block.d.ts +27 -0
  279. package/dist/components/assistant-ui/elements/terminal-block.js +266 -0
  280. package/dist/components/assistant-ui/elements/thinking-indicator.d.ts +10 -0
  281. package/dist/components/assistant-ui/elements/thinking-indicator.js +30 -0
  282. package/dist/components/assistant-ui/elements/thread-list.aui.d.ts +39 -0
  283. package/dist/components/assistant-ui/elements/thread-list.aui.js +331 -0
  284. package/dist/components/assistant-ui/elements/thread-list.d.ts +19 -0
  285. package/dist/components/assistant-ui/elements/thread-list.js +72 -0
  286. package/dist/components/assistant-ui/elements/thread-search.d.ts +20 -0
  287. package/dist/components/assistant-ui/elements/thread-search.js +94 -0
  288. package/dist/components/assistant-ui/elements/thread.aui.d.ts +36 -0
  289. package/dist/components/assistant-ui/elements/thread.aui.js +625 -0
  290. package/dist/components/assistant-ui/elements/threadlist-sidebar.aui.d.ts +19 -0
  291. package/dist/components/assistant-ui/elements/threadlist-sidebar.aui.js +75 -0
  292. package/dist/components/assistant-ui/elements/timeline.d.ts +18 -0
  293. package/dist/components/assistant-ui/elements/timeline.js +40 -0
  294. package/dist/components/assistant-ui/elements/todo-list.d.ts +21 -0
  295. package/dist/components/assistant-ui/elements/todo-list.js +100 -0
  296. package/dist/components/assistant-ui/elements/tool-call.d.ts +17 -0
  297. package/dist/components/assistant-ui/elements/tool-call.js +70 -0
  298. package/dist/components/assistant-ui/elements/tool-error.d.ts +16 -0
  299. package/dist/components/assistant-ui/elements/tool-error.js +62 -0
  300. package/dist/components/assistant-ui/elements/tool-fallback.aui.d.ts +44 -0
  301. package/dist/components/assistant-ui/elements/tool-fallback.aui.js +542 -0
  302. package/dist/components/assistant-ui/elements/tool-group.aui.d.ts +37 -0
  303. package/dist/components/assistant-ui/elements/tool-group.aui.js +104 -0
  304. package/dist/components/assistant-ui/elements/tool-group.d.ts +20 -0
  305. package/dist/components/assistant-ui/elements/tool-group.js +71 -0
  306. package/dist/components/assistant-ui/elements/tool-timeline.d.ts +44 -0
  307. package/dist/components/assistant-ui/elements/tool-timeline.js +109 -0
  308. package/dist/components/assistant-ui/elements/tooltip-icon-button.d.ts +12 -0
  309. package/dist/components/assistant-ui/elements/tooltip-icon-button.js +30 -0
  310. package/dist/components/assistant-ui/elements/trace-waterfall.d.ts +33 -0
  311. package/dist/components/assistant-ui/elements/trace-waterfall.js +102 -0
  312. package/dist/components/assistant-ui/elements/typing-indicator.d.ts +9 -0
  313. package/dist/components/assistant-ui/elements/typing-indicator.js +45 -0
  314. package/dist/components/assistant-ui/elements/voice-conversation.aui.d.ts +11 -0
  315. package/dist/components/assistant-ui/elements/voice-conversation.aui.js +54 -0
  316. package/dist/components/assistant-ui/elements/voice-conversation.d.ts +21 -0
  317. package/dist/components/assistant-ui/elements/voice-conversation.js +110 -0
  318. package/dist/components/assistant-ui/elements/voice.aui.d.ts +22 -0
  319. package/dist/components/assistant-ui/elements/voice.aui.js +100 -0
  320. package/dist/components/assistant-ui/elements/voice.d.ts +15 -0
  321. package/dist/components/assistant-ui/elements/voice.js +400 -0
  322. package/dist/components/assistant-ui/elements/web-preview.d.ts +18 -0
  323. package/dist/components/assistant-ui/elements/web-preview.js +61 -0
  324. package/dist/components/assistant-ui/elements/web-search.d.ts +17 -0
  325. package/dist/components/assistant-ui/elements/web-search.js +54 -0
  326. package/dist/components/assistant-ui/utils/href.d.ts +13 -0
  327. package/dist/components/assistant-ui/utils/href.js +39 -0
  328. package/dist/components/assistant-ui/utils/range.d.ts +22 -0
  329. package/dist/components/assistant-ui/utils/range.js +48 -0
  330. package/dist/components/assistant-ui/utils/task.d.ts +14 -0
  331. package/dist/components/assistant-ui/utils/task.js +75 -0
  332. package/dist/components/icons/github.js +13 -0
  333. package/dist/components/theme-provider.d.ts +16 -0
  334. package/dist/components/theme-provider.js +116 -0
  335. package/dist/components/ui/accordion.d.ts +8 -0
  336. package/dist/components/ui/accordion.js +53 -0
  337. package/dist/components/ui/alert-dialog.d.ts +20 -0
  338. package/dist/components/ui/alert-dialog.js +93 -0
  339. package/dist/components/ui/alert.d.ts +12 -0
  340. package/dist/components/ui/alert.js +42 -0
  341. package/dist/components/ui/aspect-ratio.d.ts +6 -0
  342. package/dist/components/ui/aspect-ratio.js +13 -0
  343. package/dist/components/ui/attachment.d.ts +25 -0
  344. package/dist/components/ui/attachment.js +103 -0
  345. package/dist/components/ui/avatar.d.ts +13 -0
  346. package/dist/components/ui/avatar.js +50 -0
  347. package/dist/components/ui/badge.d.ts +14 -0
  348. package/dist/components/ui/badge.js +30 -0
  349. package/dist/components/ui/breadcrumb.d.ts +12 -0
  350. package/dist/components/ui/breadcrumb.js +71 -0
  351. package/dist/components/ui/bubble.d.ts +18 -0
  352. package/dist/components/ui/bubble.js +72 -0
  353. package/dist/components/ui/button-group.d.ts +12 -0
  354. package/dist/components/ui/button-group.js +41 -0
  355. package/dist/components/ui/button.d.ts +19 -0
  356. package/dist/components/ui/button.js +71 -0
  357. package/dist/components/ui/calendar.d.ts +12 -0
  358. package/dist/components/ui/calendar.js +108 -0
  359. package/dist/components/ui/card.d.ts +13 -0
  360. package/dist/components/ui/card.js +55 -0
  361. package/dist/components/ui/carousel.d.ts +30 -0
  362. package/dist/components/ui/carousel.js +131 -0
  363. package/dist/components/ui/chart.d.ts +46 -0
  364. package/dist/components/ui/chart.js +148 -0
  365. package/dist/components/ui/checkbox.d.ts +5 -0
  366. package/dist/components/ui/checkbox.js +20 -0
  367. package/dist/components/ui/collapsible.d.ts +7 -0
  368. package/dist/components/ui/collapsible.js +23 -0
  369. package/dist/components/ui/combobox.d.ts +26 -0
  370. package/dist/components/ui/combobox.js +161 -0
  371. package/dist/components/ui/command.d.ts +21 -0
  372. package/dist/components/ui/command.js +87 -0
  373. package/dist/components/ui/context-menu.d.ts +31 -0
  374. package/dist/components/ui/context-menu.js +132 -0
  375. package/dist/components/ui/dialog.d.ts +19 -0
  376. package/dist/components/ui/dialog.js +91 -0
  377. package/dist/components/ui/diff-viewer.d.ts +100 -0
  378. package/dist/components/ui/diff-viewer.js +461 -0
  379. package/dist/components/ui/direction.d.ts +2 -0
  380. package/dist/components/ui/direction.js +2 -0
  381. package/dist/components/ui/dot-matrix.d.ts +150 -0
  382. package/dist/components/ui/dot-matrix.js +248 -0
  383. package/dist/components/ui/drawer.d.ts +18 -0
  384. package/dist/components/ui/drawer.js +123 -0
  385. package/dist/components/ui/dropdown-menu.d.ts +31 -0
  386. package/dist/components/ui/dropdown-menu.js +136 -0
  387. package/dist/components/ui/empty.d.ts +13 -0
  388. package/dist/components/ui/empty.js +59 -0
  389. package/dist/components/ui/field.d.ts +26 -0
  390. package/dist/components/ui/field.js +109 -0
  391. package/dist/components/ui/hover-card.d.ts +7 -0
  392. package/dist/components/ui/hover-card.js +36 -0
  393. package/dist/components/ui/input-group.d.ts +20 -0
  394. package/dist/components/ui/input-group.js +77 -0
  395. package/dist/components/ui/input-otp.d.ts +13 -0
  396. package/dist/components/ui/input-otp.js +46 -0
  397. package/dist/components/ui/input.d.ts +5 -0
  398. package/dist/components/ui/input.js +14 -0
  399. package/dist/components/ui/item.d.ts +24 -0
  400. package/dist/components/ui/item.js +120 -0
  401. package/dist/components/ui/kbd.d.ts +5 -0
  402. package/dist/components/ui/kbd.js +19 -0
  403. package/dist/components/ui/label.d.ts +5 -0
  404. package/dist/components/ui/label.js +12 -0
  405. package/dist/components/ui/marker.d.ts +12 -0
  406. package/dist/components/ui/marker.js +42 -0
  407. package/dist/components/ui/menubar.d.ts +31 -0
  408. package/dist/components/ui/menubar.js +135 -0
  409. package/dist/components/ui/message-scroller.d.ts +12 -0
  410. package/dist/components/ui/message-scroller.js +59 -0
  411. package/dist/components/ui/message.d.ts +12 -0
  412. package/dist/components/ui/message.js +48 -0
  413. package/dist/components/ui/native-select.d.ts +10 -0
  414. package/dist/components/ui/native-select.js +37 -0
  415. package/dist/components/ui/navigation-menu.d.ts +13 -0
  416. package/dist/components/ui/navigation-menu.js +82 -0
  417. package/dist/components/ui/number-roll.d.ts +21 -0
  418. package/dist/components/ui/number-roll.js +269 -0
  419. package/dist/components/ui/pagination.d.ts +19 -0
  420. package/dist/components/ui/pagination.js +79 -0
  421. package/dist/components/ui/popover.d.ts +11 -0
  422. package/dist/components/ui/popover.js +54 -0
  423. package/dist/components/ui/progress.d.ts +9 -0
  424. package/dist/components/ui/progress.js +44 -0
  425. package/dist/components/ui/questionnaire.d.ts +21 -0
  426. package/dist/components/ui/questionnaire.js +169 -0
  427. package/dist/components/ui/radio-group.d.ts +7 -0
  428. package/dist/components/ui/radio-group.js +26 -0
  429. package/dist/components/ui/resizable.d.ts +9 -0
  430. package/dist/components/ui/resizable.js +28 -0
  431. package/dist/components/ui/scroll-area.d.ts +6 -0
  432. package/dist/components/ui/scroll-area.js +35 -0
  433. package/dist/components/ui/select.d.ts +17 -0
  434. package/dist/components/ui/select.js +96 -0
  435. package/dist/components/ui/separator.d.ts +5 -0
  436. package/dist/components/ui/separator.js +14 -0
  437. package/dist/components/ui/sheet.d.ts +16 -0
  438. package/dist/components/ui/sheet.js +87 -0
  439. package/dist/components/ui/sidebar.d.ts +65 -0
  440. package/dist/components/ui/sidebar.js +386 -0
  441. package/dist/components/ui/skeleton.d.ts +4 -0
  442. package/dist/components/ui/skeleton.js +12 -0
  443. package/dist/components/ui/slider.d.ts +5 -0
  444. package/dist/components/ui/slider.js +33 -0
  445. package/dist/components/ui/spinner.d.ts +4 -0
  446. package/dist/components/ui/spinner.js +15 -0
  447. package/dist/components/ui/switch.d.ts +7 -0
  448. package/dist/components/ui/switch.js +19 -0
  449. package/dist/components/ui/table.d.ts +12 -0
  450. package/dist/components/ui/table.js +65 -0
  451. package/dist/components/ui/tabs.d.ts +12 -0
  452. package/dist/components/ui/tabs.js +45 -0
  453. package/dist/components/ui/textarea.d.ts +5 -0
  454. package/dist/components/ui/textarea.js +12 -0
  455. package/dist/components/ui/toast.d.ts +18 -0
  456. package/dist/components/ui/toast.js +121 -0
  457. package/dist/components/ui/toggle-group.d.ts +13 -0
  458. package/dist/components/ui/toggle-group.js +51 -0
  459. package/dist/components/ui/toggle.d.ts +10 -0
  460. package/dist/components/ui/toggle.js +35 -0
  461. package/dist/components/ui/tooltip.d.ts +8 -0
  462. package/dist/components/ui/tooltip.js +43 -0
  463. package/dist/compositions/app-rail/app-rail.d.ts +19 -0
  464. package/dist/compositions/app-rail/app-rail.js +58 -0
  465. package/dist/compositions/app-shell/app-shell.d.ts +56 -0
  466. package/dist/compositions/app-shell/app-shell.js +143 -0
  467. package/dist/compositions/app-shell/theme-toggle.d.ts +10 -0
  468. package/dist/compositions/app-shell/theme-toggle.js +65 -0
  469. package/dist/compositions/confirm-action/confirm-action.d.ts +48 -0
  470. package/dist/compositions/confirm-action/confirm-action.js +48 -0
  471. package/dist/compositions/data-table/data-table-state.d.ts +23 -0
  472. package/dist/compositions/data-table/data-table-state.js +46 -0
  473. package/dist/compositions/data-table/data-table.d.ts +185 -0
  474. package/dist/compositions/data-table/data-table.js +615 -0
  475. package/dist/compositions/date-range-picker/date-range-options.d.ts +28 -0
  476. package/dist/compositions/date-range-picker/date-range-options.js +61 -0
  477. package/dist/compositions/date-range-picker/date-range-picker.d.ts +55 -0
  478. package/dist/compositions/date-range-picker/date-range-picker.js +409 -0
  479. package/dist/compositions/decision-queue/decision-queue.d.ts +114 -0
  480. package/dist/compositions/decision-queue/decision-queue.js +478 -0
  481. package/dist/compositions/event-feed/event-feed.d.ts +59 -0
  482. package/dist/compositions/event-feed/event-feed.js +105 -0
  483. package/dist/compositions/feedback.d.ts +20 -0
  484. package/dist/compositions/feedback.js +49 -0
  485. package/dist/compositions/fields.d.ts +64 -0
  486. package/dist/compositions/fields.js +293 -0
  487. package/dist/compositions/form-kit/form-context.d.ts +10 -0
  488. package/dist/compositions/form-kit/form-context.js +12 -0
  489. package/dist/compositions/form-kit/form-fields.d.ts +95 -0
  490. package/dist/compositions/form-kit/form-fields.js +233 -0
  491. package/dist/compositions/form-kit/form-kit.d.ts +128 -0
  492. package/dist/compositions/form-kit/form-kit.js +119 -0
  493. package/dist/compositions/inspector/inspector.d.ts +53 -0
  494. package/dist/compositions/inspector/inspector.js +80 -0
  495. package/dist/compositions/layout.d.ts +36 -0
  496. package/dist/compositions/layout.js +86 -0
  497. package/dist/compositions/state-blocks/state-blocks.d.ts +42 -0
  498. package/dist/compositions/state-blocks/state-blocks.js +81 -0
  499. package/dist/compositions/status-panel/status-panel.d.ts +94 -0
  500. package/dist/compositions/status-panel/status-panel.js +189 -0
  501. package/dist/fonts/InterVariable.woff2 +0 -0
  502. package/dist/fonts/inter.css +15 -0
  503. package/dist/hooks/use-attachment-src.js +35 -0
  504. package/dist/hooks/use-copy-to-clipboard.js +34 -0
  505. package/dist/hooks/use-mobile.d.ts +3 -0
  506. package/dist/hooks/use-mobile.js +18 -0
  507. package/dist/index.d.ts +102 -0
  508. package/dist/index.js +102 -0
  509. package/dist/lib/context-level.js +7 -0
  510. package/dist/lib/elapsed.js +61 -0
  511. package/dist/lib/iso-date.js +30 -0
  512. package/dist/lib/motion-loop.js +41 -0
  513. package/dist/lib/pointer.js +14 -0
  514. package/dist/lib/status-tone.d.ts +7 -0
  515. package/dist/lib/status-tone.js +55 -0
  516. package/dist/lib/triage-keys.js +229 -0
  517. package/dist/lib/utils.js +2 -0
  518. package/dist/motion/alert-toast/alert-toast.d.ts +51 -0
  519. package/dist/motion/alert-toast/alert-toast.js +226 -0
  520. package/dist/motion/branch-menu/branch-menu.d.ts +47 -0
  521. package/dist/motion/branch-menu/branch-menu.js +287 -0
  522. package/dist/motion/check-item/check-item.d.ts +24 -0
  523. package/dist/motion/check-item/check-item.js +110 -0
  524. package/dist/motion/dial/dial.d.ts +39 -0
  525. package/dist/motion/dial/dial.js +290 -0
  526. package/dist/motion/dictation-button/dictation-button.d.ts +45 -0
  527. package/dist/motion/dictation-button/dictation-button.js +232 -0
  528. package/dist/motion/hold-button/hold-button.d.ts +37 -0
  529. package/dist/motion/hold-button/hold-button.js +192 -0
  530. package/dist/motion/masonry-grid/masonry-grid.d.ts +42 -0
  531. package/dist/motion/masonry-grid/masonry-grid.js +145 -0
  532. package/dist/motion/prompt-composer/prompt-composer.d.ts +90 -0
  533. package/dist/motion/prompt-composer/prompt-composer.js +374 -0
  534. package/dist/motion/scrub-select/scrub-select.d.ts +33 -0
  535. package/dist/motion/scrub-select/scrub-select.js +346 -0
  536. package/dist/motion/spotlight-grid/spotlight-grid.d.ts +40 -0
  537. package/dist/motion/spotlight-grid/spotlight-grid.js +171 -0
  538. package/dist/motion/star-rating/star-rating.d.ts +32 -0
  539. package/dist/motion/star-rating/star-rating.js +191 -0
  540. package/dist/motion/status-glyph/status-glyph.d.ts +28 -0
  541. package/dist/motion/status-glyph/status-glyph.js +171 -0
  542. package/dist/motion/stepper/stepper.d.ts +56 -0
  543. package/dist/motion/stepper/stepper.js +211 -0
  544. package/dist/motion/swipe-row/swipe-row.d.ts +52 -0
  545. package/dist/motion/swipe-row/swipe-row.js +208 -0
  546. package/dist/motion/thinking-trace/thinking-trace.d.ts +32 -0
  547. package/dist/motion/thinking-trace/thinking-trace.js +186 -0
  548. package/dist/motion/tool-call-chip/tool-call-chip.d.ts +36 -0
  549. package/dist/motion/tool-call-chip/tool-call-chip.js +135 -0
  550. package/dist/motion/working-indicator/working-indicator.d.ts +38 -0
  551. package/dist/motion/working-indicator/working-indicator.js +171 -0
  552. package/dist/styles.css +828 -0
  553. package/dist/tokens.css +230 -0
  554. package/licenses/Inter-OFL.txt +92 -0
  555. package/licenses/assistant-ui-MIT.txt +21 -0
  556. package/licenses/shadcn-MIT.md +21 -0
  557. package/package.json +131 -3
@@ -0,0 +1,30 @@
1
+ import { FC } from "react";
2
+ declare namespace message_timing_aui_d_exports {
3
+ export { MessageTiming };
4
+ }
5
+ /**
6
+ * Shows streaming stats (TTFT, total time, tok/s, chunks) as a badge with a
7
+ * hover/focus tooltip. Renders nothing until the stream completes.
8
+ *
9
+ * Place it inside `ActionBarPrimitive.Root` in your `thread.tsx` so it
10
+ * inherits the action bar's autohide behaviour:
11
+ *
12
+ * ```tsx
13
+ * import { MessageTiming } from "@/components/assistant-ui/elements/message-timing.aui";
14
+ *
15
+ * <ActionBarPrimitive.Root >
16
+ * <ActionBarPrimitive.Copy />
17
+ * <ActionBarPrimitive.Reload />
18
+ * <MessageTiming /> // <-- add this
19
+ * </ActionBarPrimitive.Root>
20
+ * ```
21
+ *
22
+ * @param side - Side of the tooltip relative to the badge trigger.
23
+ * @default "right"
24
+ */
25
+ export declare const MessageTiming: FC<{
26
+ className?: string;
27
+ side?: "top" | "right" | "bottom" | "left";
28
+ }>;
29
+ //#endregion
30
+ export { message_timing_aui_d_exports };
@@ -0,0 +1,98 @@
1
+ "use client";
2
+ import { __exportAll } from "../../../_virtual/_rolldown/runtime.js";
3
+ import { cn } from "../../../lib/utils.js";
4
+ import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from "../../ui/tooltip.js";
5
+ import { jsx, jsxs } from "react/jsx-runtime";
6
+ import { useMessageTiming } from "@assistant-ui/react";
7
+ //#region src/components/assistant-ui/elements/message-timing.aui.tsx
8
+ var message_timing_aui_exports = /* @__PURE__ */ __exportAll({ MessageTiming: () => MessageTiming });
9
+ const formatTimingMs = (ms) => {
10
+ if (ms === void 0) return "—";
11
+ if (ms < 1e3) return `${Math.round(ms)}ms`;
12
+ return `${(ms / 1e3).toFixed(2)}s`;
13
+ };
14
+ /**
15
+ * Shows streaming stats (TTFT, total time, tok/s, chunks) as a badge with a
16
+ * hover/focus tooltip. Renders nothing until the stream completes.
17
+ *
18
+ * Place it inside `ActionBarPrimitive.Root` in your `thread.tsx` so it
19
+ * inherits the action bar's autohide behaviour:
20
+ *
21
+ * ```tsx
22
+ * import { MessageTiming } from "@/components/assistant-ui/elements/message-timing.aui";
23
+ *
24
+ * <ActionBarPrimitive.Root >
25
+ * <ActionBarPrimitive.Copy />
26
+ * <ActionBarPrimitive.Reload />
27
+ * <MessageTiming /> // <-- add this
28
+ * </ActionBarPrimitive.Root>
29
+ * ```
30
+ *
31
+ * @param side - Side of the tooltip relative to the badge trigger.
32
+ * @default "right"
33
+ */
34
+ const MessageTiming = ({ className, side = "right" }) => {
35
+ const timing = useMessageTiming();
36
+ if (timing?.totalStreamTime === void 0) return null;
37
+ return /* @__PURE__ */ jsx(TooltipProvider, { children: /* @__PURE__ */ jsxs(Tooltip, { children: [/* @__PURE__ */ jsx(TooltipTrigger, {
38
+ render: /* @__PURE__ */ jsx("button", {
39
+ type: "button",
40
+ "data-slot": "message-timing-trigger",
41
+ "aria-label": "Message timing",
42
+ className: cn("text-muted-foreground hover:bg-accent hover:text-accent-foreground flex items-center rounded-md p-1 font-mono text-xs tabular-nums transition-colors", className)
43
+ }),
44
+ children: formatTimingMs(timing.totalStreamTime)
45
+ }), /* @__PURE__ */ jsx(TooltipContent, {
46
+ side,
47
+ sideOffset: 8,
48
+ "data-slot": "message-timing-popover",
49
+ className: "bg-popover text-popover-foreground border px-3 py-2 [&_[data-slot=tooltip-arrow]]:hidden",
50
+ children: /* @__PURE__ */ jsxs("div", {
51
+ className: "grid min-w-35 gap-1.5 text-xs",
52
+ children: [
53
+ timing.firstTokenTime !== void 0 && /* @__PURE__ */ jsxs("div", {
54
+ className: "flex items-center justify-between gap-4",
55
+ children: [/* @__PURE__ */ jsx("span", {
56
+ className: "text-muted-foreground",
57
+ children: "First token"
58
+ }), /* @__PURE__ */ jsx("span", {
59
+ className: "font-mono tabular-nums",
60
+ children: formatTimingMs(timing.firstTokenTime)
61
+ })]
62
+ }),
63
+ /* @__PURE__ */ jsxs("div", {
64
+ className: "flex items-center justify-between gap-4",
65
+ children: [/* @__PURE__ */ jsx("span", {
66
+ className: "text-muted-foreground",
67
+ children: "Total"
68
+ }), /* @__PURE__ */ jsx("span", {
69
+ className: "font-mono tabular-nums",
70
+ children: formatTimingMs(timing.totalStreamTime)
71
+ })]
72
+ }),
73
+ timing.tokensPerSecond !== void 0 && /* @__PURE__ */ jsxs("div", {
74
+ className: "flex items-center justify-between gap-4",
75
+ children: [/* @__PURE__ */ jsx("span", {
76
+ className: "text-muted-foreground",
77
+ children: "Speed"
78
+ }), /* @__PURE__ */ jsxs("span", {
79
+ className: "font-mono tabular-nums",
80
+ children: [timing.tokensPerSecond.toFixed(1), " tok/s"]
81
+ })]
82
+ }),
83
+ /* @__PURE__ */ jsxs("div", {
84
+ className: "flex items-center justify-between gap-4",
85
+ children: [/* @__PURE__ */ jsx("span", {
86
+ className: "text-muted-foreground",
87
+ children: "Chunks"
88
+ }), /* @__PURE__ */ jsx("span", {
89
+ className: "font-mono tabular-nums",
90
+ children: timing.totalChunks
91
+ })]
92
+ })
93
+ ]
94
+ })
95
+ })] }) });
96
+ };
97
+ //#endregion
98
+ export { MessageTiming, message_timing_aui_exports };
@@ -0,0 +1,14 @@
1
+ import { ComponentProps } from "react";
2
+ declare namespace message_timing_d_exports {
3
+ export { MessageTiming, TimingStat };
4
+ }
5
+ export interface TimingStat {
6
+ label: string;
7
+ value: string;
8
+ }
9
+ export declare function MessageTiming({ stats, streaming, className, ...props }: Omit<ComponentProps<"div">, "children" | "stats" | "streaming"> & {
10
+ stats: readonly TimingStat[];
11
+ streaming?: boolean;
12
+ }): import("react").JSX.Element;
13
+ //#endregion
14
+ export { message_timing_d_exports };
@@ -0,0 +1,26 @@
1
+ "use client";
2
+ import { __exportAll } from "../../../_virtual/_rolldown/runtime.js";
3
+ import { cn } from "../../../lib/utils.js";
4
+ import { mono } from "./surfaces.js";
5
+ import { jsx, jsxs } from "react/jsx-runtime";
6
+ //#region src/components/assistant-ui/elements/message-timing.tsx
7
+ var message_timing_exports = /* @__PURE__ */ __exportAll({ MessageTiming: () => MessageTiming });
8
+ function MessageTiming({ stats, streaming, className, ...props }) {
9
+ return /* @__PURE__ */ jsx("div", {
10
+ "data-slot": "message-timing",
11
+ className: cn("fade-in animate-in flex w-full max-w-sm flex-wrap items-center gap-x-3 gap-y-1 duration-500", className),
12
+ ...props,
13
+ children: stats.map((stat) => /* @__PURE__ */ jsxs("span", {
14
+ className: "flex items-baseline gap-1",
15
+ children: [/* @__PURE__ */ jsx("span", {
16
+ className: cn(mono, "text-muted-foreground"),
17
+ children: stat.label
18
+ }), /* @__PURE__ */ jsx("span", {
19
+ className: cn(mono, "tabular-nums", streaming ? "text-foreground" : "text-muted-foreground"),
20
+ children: stat.value
21
+ })]
22
+ }, stat.label))
23
+ });
24
+ }
25
+ //#endregion
26
+ export { MessageTiming, message_timing_exports };
@@ -0,0 +1,18 @@
1
+ import { ComponentProps } from "react";
2
+ declare namespace mobile_composer_d_exports {
3
+ export { MobileComposer };
4
+ }
5
+ export declare function MobileComposer({ value, keyboardOpen, running, actions, onAction, onAttach, onValueChange, onSend, onStop, onFocus, className, ...props }: Omit<ComponentProps<"div">, "children" | "value" | "keyboardOpen" | "running" | "actions" | "onAction" | "onAttach" | "onValueChange" | "onSend" | "onStop" | "onFocus"> & {
6
+ value: string;
7
+ keyboardOpen: boolean;
8
+ running: boolean;
9
+ actions: readonly string[];
10
+ onAction?: (action: string) => void;
11
+ onAttach?: () => void;
12
+ onValueChange?: (value: string) => void;
13
+ onSend?: () => void;
14
+ onStop?: () => void;
15
+ onFocus?: () => void;
16
+ }): import("react").JSX.Element;
17
+ //#endregion
18
+ export { mobile_composer_d_exports };
@@ -0,0 +1,76 @@
1
+ "use client";
2
+ import { __exportAll } from "../../../_virtual/_rolldown/runtime.js";
3
+ import { cn } from "../../../lib/utils.js";
4
+ import { field, ghostButton } from "./surfaces.js";
5
+ import { jsx, jsxs } from "react/jsx-runtime";
6
+ import { ArrowUpIcon, MicIcon, PlusIcon, SquareIcon } from "lucide-react";
7
+ //#region src/components/assistant-ui/elements/mobile-composer.tsx
8
+ var mobile_composer_exports = /* @__PURE__ */ __exportAll({ MobileComposer: () => MobileComposer });
9
+ function MobileComposer({ value, keyboardOpen, running, actions, onAction, onAttach, onValueChange, onSend, onStop, onFocus, className, ...props }) {
10
+ return /* @__PURE__ */ jsxs("div", {
11
+ "data-slot": "mobile-composer",
12
+ className: cn("bg-background border-foreground/[0.07] flex w-full max-w-[19rem] flex-col gap-2.5 rounded-t-[20px] border-t px-3 pt-3", keyboardOpen ? "pb-3" : "pb-6", className),
13
+ ...props,
14
+ children: [
15
+ !keyboardOpen && /* @__PURE__ */ jsx("div", {
16
+ className: cn("fade-in animate-in -mx-3 flex gap-1.5 overflow-x-auto px-3 pb-0.5 duration-200", "[mask-image:linear-gradient(to_right,black_calc(100%-1.5rem),transparent)]"),
17
+ children: actions.map((action) => /* @__PURE__ */ jsx("button", {
18
+ type: "button",
19
+ onClick: () => onAction?.(action),
20
+ disabled: !onAction,
21
+ className: cn("disabled:pointer-events-none", "bg-muted", "text-muted-foreground shrink-0 rounded-full px-3 py-1.5 text-xs whitespace-nowrap"),
22
+ children: action
23
+ }, action))
24
+ }),
25
+ /* @__PURE__ */ jsxs("div", {
26
+ className: "flex items-end gap-2",
27
+ children: [
28
+ /* @__PURE__ */ jsx("button", {
29
+ type: "button",
30
+ "aria-label": "Add an attachment",
31
+ onClick: onAttach,
32
+ disabled: !onAttach,
33
+ className: cn(ghostButton, field, "size-9 shrink-0 disabled:pointer-events-none disabled:opacity-30"),
34
+ children: /* @__PURE__ */ jsx(PlusIcon, { className: "size-4" })
35
+ }),
36
+ /* @__PURE__ */ jsxs("div", {
37
+ className: cn(field, "flex min-w-0 flex-1 items-center gap-2 rounded-[18px] px-3 py-2"),
38
+ children: [/* @__PURE__ */ jsx("textarea", {
39
+ rows: 1,
40
+ value,
41
+ onChange: (event) => onValueChange?.(event.target.value),
42
+ onFocus,
43
+ onKeyDown: (event) => {
44
+ if (event.key !== "Enter" || event.shiftKey) return;
45
+ if (event.nativeEvent.isComposing) return;
46
+ event.preventDefault();
47
+ if (!running && value !== "" && onSend) onSend();
48
+ },
49
+ placeholder: "Message",
50
+ "aria-label": "Message",
51
+ className: "text-foreground/85 placeholder:text-muted-foreground max-h-28 min-w-0 flex-1 resize-none bg-transparent text-[16px] leading-snug outline-none [field-sizing:content]"
52
+ }), value === "" && /* @__PURE__ */ jsx(MicIcon, { className: "text-muted-foreground size-4 shrink-0" })]
53
+ }),
54
+ (onSend || onStop) && /* @__PURE__ */ jsx("button", {
55
+ type: "button",
56
+ "aria-label": running ? "Stop" : "Send",
57
+ onClick: running ? onStop : onSend,
58
+ disabled: running ? !onStop : !onSend || value === "",
59
+ className: cn("bg-foreground text-background transition-[opacity,scale] duration-150 ease-[cubic-bezier(0.23,1,0.32,1)] hover:opacity-90 active:scale-[0.96] motion-reduce:transition-none", "flex size-9 shrink-0 items-center justify-center rounded-full disabled:pointer-events-none disabled:opacity-25"),
60
+ children: running ? /* @__PURE__ */ jsx(SquareIcon, { className: "size-3 fill-current" }) : /* @__PURE__ */ jsx(ArrowUpIcon, { className: "size-4" })
61
+ })
62
+ ]
63
+ }),
64
+ keyboardOpen && /* @__PURE__ */ jsx("span", {
65
+ className: cn("font-mono text-[11px] tracking-tight", "text-muted-foreground text-center"),
66
+ children: "return to send"
67
+ }),
68
+ /* @__PURE__ */ jsx("span", {
69
+ "aria-hidden": true,
70
+ className: "bg-foreground/15 mx-auto h-1 w-28 rounded-full"
71
+ })
72
+ ]
73
+ });
74
+ }
75
+ //#endregion
76
+ export { MobileComposer, mobile_composer_exports };
@@ -0,0 +1,19 @@
1
+ import { ComponentProps } from "react";
2
+ declare namespace model_picker_d_exports {
3
+ export { ModelPicker, PickableModel };
4
+ }
5
+ export interface PickableModel {
6
+ id: string;
7
+ name: string;
8
+ family: string;
9
+ context: string;
10
+ price: string;
11
+ capabilities: readonly string[];
12
+ }
13
+ export declare function ModelPicker({ models, selectedId, onSelect, className, ...props }: Omit<ComponentProps<"div">, "children" | "models" | "selectedId" | "onSelect"> & {
14
+ models: readonly PickableModel[];
15
+ selectedId: string;
16
+ onSelect?: (id: string) => void;
17
+ }): import("react").JSX.Element;
18
+ //#endregion
19
+ export { model_picker_d_exports };
@@ -0,0 +1,68 @@
1
+ "use client";
2
+ import { __exportAll } from "../../../_virtual/_rolldown/runtime.js";
3
+ import { cn } from "../../../lib/utils.js";
4
+ import { field, mono, paper } from "./surfaces.js";
5
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
6
+ import { CheckIcon } from "lucide-react";
7
+ //#region src/components/assistant-ui/elements/model-picker.tsx
8
+ var model_picker_exports = /* @__PURE__ */ __exportAll({ ModelPicker: () => ModelPicker });
9
+ function ModelPicker({ models, selectedId, onSelect, className, ...props }) {
10
+ const families = [...new Set(models.map((model) => model.family))];
11
+ return /* @__PURE__ */ jsx("div", {
12
+ "data-slot": "model-picker",
13
+ className: cn(paper, "flex w-full max-w-sm flex-col gap-1 rounded-2xl p-2", className),
14
+ ...props,
15
+ children: families.map((family) => /* @__PURE__ */ jsxs("div", {
16
+ className: "flex flex-col",
17
+ children: [/* @__PURE__ */ jsx("span", {
18
+ className: cn(mono, "text-muted-foreground px-2 pt-2 pb-1"),
19
+ children: family
20
+ }), models.filter((model) => model.family === family).map((model) => {
21
+ const selected = model.id === selectedId;
22
+ const className = cn("flex items-center gap-2.5 rounded-xl px-2 py-2 text-start transition-colors outline-none focus-visible:ring-1 focus-visible:ring-foreground/20", selected ? "bg-foreground/[0.06]" : onSelect ? "hover:bg-foreground/[0.035]" : void 0);
23
+ const content = /* @__PURE__ */ jsxs(Fragment, { children: [
24
+ /* @__PURE__ */ jsx("span", {
25
+ className: "flex size-3.5 shrink-0 items-center justify-center",
26
+ children: selected && /* @__PURE__ */ jsx(CheckIcon, { className: "fade-in zoom-in-90 animate-in text-muted-foreground size-3.5 duration-200" })
27
+ }),
28
+ /* @__PURE__ */ jsxs("span", {
29
+ className: "flex min-w-0 flex-1 flex-col gap-1",
30
+ children: [/* @__PURE__ */ jsx("span", {
31
+ className: "truncate text-[13.5px]",
32
+ children: model.name
33
+ }), /* @__PURE__ */ jsx("span", {
34
+ className: "flex flex-wrap gap-1",
35
+ children: model.capabilities.map((capability) => /* @__PURE__ */ jsx("span", {
36
+ className: cn(field, mono, "text-muted-foreground rounded px-1 py-px"),
37
+ children: capability
38
+ }, capability))
39
+ })]
40
+ }),
41
+ /* @__PURE__ */ jsxs("span", {
42
+ className: "flex shrink-0 flex-col items-end gap-1",
43
+ children: [/* @__PURE__ */ jsx("span", {
44
+ className: cn(mono, "text-muted-foreground tabular-nums"),
45
+ children: model.context
46
+ }), /* @__PURE__ */ jsx("span", {
47
+ className: cn(mono, "text-muted-foreground tabular-nums"),
48
+ children: model.price
49
+ })]
50
+ })
51
+ ] });
52
+ return onSelect ? /* @__PURE__ */ jsx("button", {
53
+ type: "button",
54
+ "aria-pressed": selected,
55
+ onClick: () => onSelect(model.id),
56
+ className,
57
+ children: content
58
+ }, model.id) : /* @__PURE__ */ jsx("div", {
59
+ "aria-current": selected ? "true" : void 0,
60
+ className,
61
+ children: content
62
+ }, model.id);
63
+ })]
64
+ }, family))
65
+ });
66
+ }
67
+ //#endregion
68
+ export { ModelPicker, model_picker_exports };
@@ -0,0 +1,23 @@
1
+ import { DEFAULT_EFFORT_OPTIONS, ModelOption, ModelSelectorContent, ModelSelectorContentProps, ModelSelectorEffort, ModelSelectorEffortOption, ModelSelectorEffortProps, ModelSelectorEmpty, ModelSelectorEmptyProps, ModelSelectorFocusAnchor, ModelSelectorGroup, ModelSelectorGroupProps, ModelSelectorItem, ModelSelectorItemProps, ModelSelectorList, ModelSelectorListProps, ModelSelectorProps, ModelSelectorRoot, ModelSelectorRootProps, ModelSelectorSearch, ModelSelectorSearchProps, ModelSelectorSeparator, ModelSelectorSeparatorProps, ModelSelectorTrigger, ModelSelectorTriggerProps, ModelSelectorValue, ModelSelectorValueProps, modelSelectorTriggerVariants, resolveModelEffort, useModelSelectorEfforts } from "./model-selector.js";
2
+ declare namespace model_selector_aui_d_exports {
3
+ export { DEFAULT_EFFORT_OPTIONS, ModelOption, ModelSelector, ModelSelectorContent, ModelSelectorContentProps, ModelSelectorEffort, ModelSelectorEffortOption, ModelSelectorEffortProps, ModelSelectorEmpty, ModelSelectorEmptyProps, ModelSelectorFocusAnchor, ModelSelectorGroup, ModelSelectorGroupProps, ModelSelectorItem, ModelSelectorItemProps, ModelSelectorList, ModelSelectorListProps, ModelSelectorProps, ModelSelectorRoot, ModelSelectorRootProps, ModelSelectorSearch, ModelSelectorSearchProps, ModelSelectorSeparator, ModelSelectorSeparatorProps, ModelSelectorTrigger, ModelSelectorTriggerProps, ModelSelectorValue, ModelSelectorValueProps, modelSelectorTriggerVariants, resolveModelEffort, useModelSelectorEfforts };
4
+ }
5
+ declare const ModelSelectorImpl: ({ searchable, variant, size, align, className, contentClassName, ...rootProps }: ModelSelectorProps) => import("react").JSX.Element;
6
+ type ModelSelectorComponent = typeof ModelSelectorImpl & {
7
+ displayName?: string;
8
+ Root: typeof ModelSelectorRoot;
9
+ Trigger: typeof ModelSelectorTrigger;
10
+ Value: typeof ModelSelectorValue;
11
+ Content: typeof ModelSelectorContent;
12
+ Search: typeof ModelSelectorSearch;
13
+ FocusAnchor: typeof ModelSelectorFocusAnchor;
14
+ List: typeof ModelSelectorList;
15
+ Empty: typeof ModelSelectorEmpty;
16
+ Group: typeof ModelSelectorGroup;
17
+ Separator: typeof ModelSelectorSeparator;
18
+ Item: typeof ModelSelectorItem;
19
+ Effort: typeof ModelSelectorEffort;
20
+ };
21
+ declare const ModelSelector: ModelSelectorComponent;
22
+ //#endregion
23
+ export { DEFAULT_EFFORT_OPTIONS, type ModelOption, ModelSelector, ModelSelectorContent, type ModelSelectorContentProps, ModelSelectorEffort, type ModelSelectorEffortOption, type ModelSelectorEffortProps, ModelSelectorEmpty, type ModelSelectorEmptyProps, ModelSelectorFocusAnchor, ModelSelectorGroup, type ModelSelectorGroupProps, ModelSelectorItem, type ModelSelectorItemProps, ModelSelectorList, type ModelSelectorListProps, type ModelSelectorProps, ModelSelectorRoot, type ModelSelectorRootProps, ModelSelectorSearch, type ModelSelectorSearchProps, ModelSelectorSeparator, type ModelSelectorSeparatorProps, ModelSelectorTrigger, type ModelSelectorTriggerProps, ModelSelectorValue, type ModelSelectorValueProps, modelSelectorTriggerVariants, model_selector_aui_d_exports, resolveModelEffort, useModelSelectorEfforts };
@@ -0,0 +1,79 @@
1
+ "use client";
2
+ import { __exportAll } from "../../../_virtual/_rolldown/runtime.js";
3
+ import { DEFAULT_EFFORT_OPTIONS, ModelSelectorContent, ModelSelectorEffort, ModelSelectorEmpty, ModelSelectorFocusAnchor, ModelSelectorGroup, ModelSelectorItem, ModelSelectorList, ModelSelectorRoot, ModelSelectorSearch, ModelSelectorSeparator, ModelSelectorTrigger, ModelSelectorValue, modelSelectorTriggerVariants, resolveModelEffort, useModelSelectorContext, useModelSelectorEfforts } from "./model-selector.js";
4
+ import { memo, useEffect } from "react";
5
+ import { jsx, jsxs } from "react/jsx-runtime";
6
+ import { useAui } from "@assistant-ui/react";
7
+ //#region src/components/assistant-ui/elements/model-selector.aui.tsx
8
+ var model_selector_aui_exports = /* @__PURE__ */ __exportAll({
9
+ DEFAULT_EFFORT_OPTIONS: () => DEFAULT_EFFORT_OPTIONS,
10
+ ModelSelector: () => ModelSelector,
11
+ ModelSelectorContent: () => ModelSelectorContent,
12
+ ModelSelectorEffort: () => ModelSelectorEffort,
13
+ ModelSelectorEmpty: () => ModelSelectorEmpty,
14
+ ModelSelectorFocusAnchor: () => ModelSelectorFocusAnchor,
15
+ ModelSelectorGroup: () => ModelSelectorGroup,
16
+ ModelSelectorItem: () => ModelSelectorItem,
17
+ ModelSelectorList: () => ModelSelectorList,
18
+ ModelSelectorRoot: () => ModelSelectorRoot,
19
+ ModelSelectorSearch: () => ModelSelectorSearch,
20
+ ModelSelectorSeparator: () => ModelSelectorSeparator,
21
+ ModelSelectorTrigger: () => ModelSelectorTrigger,
22
+ ModelSelectorValue: () => ModelSelectorValue,
23
+ modelSelectorTriggerVariants: () => modelSelectorTriggerVariants,
24
+ resolveModelEffort: () => resolveModelEffort,
25
+ useModelSelectorEfforts: () => useModelSelectorEfforts
26
+ });
27
+ /** Registers the selection with assistant-ui's ModelContext system. The
28
+ * context's effort is already resolved against the selected model. */
29
+ function ModelSelectorModelContext() {
30
+ const { value, effort } = useModelSelectorContext();
31
+ const api = useAui();
32
+ useEffect(() => {
33
+ if (value === void 0) return;
34
+ const config = { config: {
35
+ modelName: value,
36
+ ...effort !== void 0 ? { reasoningEffort: effort } : void 0
37
+ } };
38
+ return api.modelContext.register({ getModelContext: () => config });
39
+ }, [
40
+ api,
41
+ value,
42
+ effort
43
+ ]);
44
+ return null;
45
+ }
46
+ const ModelSelectorImpl = ({ searchable, variant, size, align, className, contentClassName, ...rootProps }) => {
47
+ return /* @__PURE__ */ jsxs(ModelSelectorRoot, {
48
+ ...rootProps,
49
+ children: [
50
+ /* @__PURE__ */ jsx(ModelSelectorModelContext, {}),
51
+ /* @__PURE__ */ jsx(ModelSelectorTrigger, {
52
+ variant,
53
+ size,
54
+ className
55
+ }),
56
+ /* @__PURE__ */ jsx(ModelSelectorContent, {
57
+ ...align !== void 0 ? { align } : {},
58
+ className: contentClassName,
59
+ searchable: searchable ?? false
60
+ })
61
+ ]
62
+ });
63
+ };
64
+ const ModelSelector = memo(ModelSelectorImpl);
65
+ ModelSelector.displayName = "ModelSelector";
66
+ ModelSelector.Root = ModelSelectorRoot;
67
+ ModelSelector.Trigger = ModelSelectorTrigger;
68
+ ModelSelector.Value = ModelSelectorValue;
69
+ ModelSelector.Content = ModelSelectorContent;
70
+ ModelSelector.Search = ModelSelectorSearch;
71
+ ModelSelector.FocusAnchor = ModelSelectorFocusAnchor;
72
+ ModelSelector.List = ModelSelectorList;
73
+ ModelSelector.Empty = ModelSelectorEmpty;
74
+ ModelSelector.Group = ModelSelectorGroup;
75
+ ModelSelector.Separator = ModelSelectorSeparator;
76
+ ModelSelector.Item = ModelSelectorItem;
77
+ ModelSelector.Effort = ModelSelectorEffort;
78
+ //#endregion
79
+ export { DEFAULT_EFFORT_OPTIONS, ModelSelector, ModelSelectorContent, ModelSelectorEffort, ModelSelectorEmpty, ModelSelectorFocusAnchor, ModelSelectorGroup, ModelSelectorItem, ModelSelectorList, ModelSelectorRoot, ModelSelectorSearch, ModelSelectorSeparator, ModelSelectorTrigger, ModelSelectorValue, modelSelectorTriggerVariants, model_selector_aui_exports, resolveModelEffort, useModelSelectorEfforts };
@@ -0,0 +1,130 @@
1
+ import { CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandSeparator } from "../../ui/command.js";
2
+ import { PopoverContent, PopoverTrigger } from "../../ui/popover.js";
3
+ import { ComponentPropsWithoutRef, ReactNode } from "react";
4
+ import { VariantProps } from "class-variance-authority";
5
+ declare namespace model_selector_d_exports {
6
+ export { DEFAULT_EFFORT_OPTIONS, ModelOption, ModelSelectorContent, ModelSelectorContentProps, ModelSelectorEffort, ModelSelectorEffortOption, ModelSelectorEffortProps, ModelSelectorEmpty, ModelSelectorEmptyProps, ModelSelectorFocusAnchor, ModelSelectorGroup, ModelSelectorGroupProps, ModelSelectorItem, ModelSelectorItemProps, ModelSelectorList, ModelSelectorListProps, ModelSelectorProps, ModelSelectorRoot, ModelSelectorRootProps, ModelSelectorSearch, ModelSelectorSearchProps, ModelSelectorSeparator, ModelSelectorSeparatorProps, ModelSelectorTrigger, ModelSelectorTriggerProps, ModelSelectorValue, ModelSelectorValueProps, modelSelectorTriggerVariants, resolveModelEffort, useModelSelectorContext, useModelSelectorEfforts };
7
+ }
8
+ export type ModelSelectorEffortOption = {
9
+ id: string;
10
+ name: string;
11
+ };
12
+ export declare const DEFAULT_EFFORT_OPTIONS: readonly ModelSelectorEffortOption[];
13
+ export type ModelOption = {
14
+ id: string;
15
+ name: string;
16
+ description?: string;
17
+ icon?: ReactNode;
18
+ disabled?: boolean;
19
+ /** Extra terms matched by ModelSelector.Search, in addition to id and name. */
20
+ keywords?: readonly string[];
21
+ /**
22
+ * Reasoning effort levels the model supports. Pass `true` for the default
23
+ * low/medium/high levels, or a custom list. Omit for models without
24
+ * configurable reasoning.
25
+ */
26
+ efforts?: boolean | readonly ModelSelectorEffortOption[];
27
+ };
28
+ /**
29
+ * Returns the effort id if the given model supports it, otherwise undefined.
30
+ * Effort selection is kept sticky across model switches; this resolves what
31
+ * actually applies to the current model.
32
+ */
33
+ export declare function resolveModelEffort(models: readonly ModelOption[], modelId: string | undefined, effort: string | undefined): string | undefined;
34
+ type ModelSelectorContextValue = {
35
+ models: readonly ModelOption[];
36
+ value: string | undefined;
37
+ setValue: (value: string) => void;
38
+ /** The model matching `value`, derived once for all sub-components. */
39
+ selectedModel: ModelOption | undefined;
40
+ /** The selected model's effort levels, undefined when not configurable. */
41
+ efforts: readonly ModelSelectorEffortOption[] | undefined;
42
+ /** Effort resolved against the selected model's supported levels. */
43
+ effort: string | undefined;
44
+ setEffort: (effort: string) => void;
45
+ setOpen: (open: boolean) => void;
46
+ };
47
+ export declare function useModelSelectorContext(): ModelSelectorContextValue;
48
+ /**
49
+ * The selected model's effort levels and the active selection. Use it to build
50
+ * a custom effort UI inside ModelSelector.Content (e.g. a slider or a shadcn
51
+ * DropdownMenu) when the built-in ModelSelector.Effort layout doesn't fit.
52
+ * `efforts` is undefined for models without configurable reasoning.
53
+ */
54
+ export declare function useModelSelectorEfforts(): {
55
+ efforts: readonly ModelSelectorEffortOption[] | undefined;
56
+ effort: string | undefined;
57
+ setEffort: (effort: string) => void;
58
+ };
59
+ export type ModelSelectorRootProps = {
60
+ models: readonly ModelOption[];
61
+ value?: string;
62
+ defaultValue?: string;
63
+ onValueChange?: (value: string) => void;
64
+ effort?: string;
65
+ defaultEffort?: string;
66
+ onEffortChange?: (effort: string) => void;
67
+ open?: boolean;
68
+ defaultOpen?: boolean;
69
+ onOpenChange?: (open: boolean) => void;
70
+ children: ReactNode;
71
+ };
72
+ declare function ModelSelectorRoot({ models, value: valueProp, defaultValue, onValueChange, effort: effortProp, defaultEffort, onEffortChange, open: openProp, defaultOpen, onOpenChange, children }: ModelSelectorRootProps): import("react").JSX.Element;
73
+ export declare const modelSelectorTriggerVariants: (props?: ({
74
+ variant?: "ghost" | "muted" | "outline" | null | undefined;
75
+ size?: "default" | "lg" | "sm" | null | undefined;
76
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
77
+ export type ModelSelectorTriggerProps = ComponentPropsWithoutRef<typeof PopoverTrigger> & VariantProps<typeof modelSelectorTriggerVariants>;
78
+ declare function ModelSelectorTrigger({ className, variant, size, children, onKeyDown, ...props }: ModelSelectorTriggerProps): import("react").JSX.Element;
79
+ export type ModelSelectorValueProps = {
80
+ placeholder?: ReactNode;
81
+ /** Show the active effort level next to the model name. */
82
+ showEffort?: boolean;
83
+ className?: string;
84
+ };
85
+ declare function ModelSelectorValue({ placeholder, showEffort, className }: ModelSelectorValueProps): import("react").JSX.Element;
86
+ export type ModelSelectorContentProps = Omit<ComponentPropsWithoutRef<typeof PopoverContent>, "side"> & {
87
+ /**
88
+ * Preferred side for the initial placement. Once the popover is open, the
89
+ * rendered side takes over until it closes, so the popup does not jump
90
+ * between sides while filtering resizes the list.
91
+ */
92
+ side?: ComponentPropsWithoutRef<typeof PopoverContent>["side"];
93
+ searchable?: boolean;
94
+ };
95
+ /**
96
+ * Hidden input that anchors cmdk's keyboard navigation, keeping the list
97
+ * keyboard-operable without a visible search box. ModelSelectorContent renders
98
+ * one automatically when unfiltered.
99
+ */
100
+ declare function ModelSelectorFocusAnchor(): import("react").JSX.Element;
101
+ declare function ModelSelectorContent({ className, align, side, sideOffset, searchable, children, ...props }: ModelSelectorContentProps): import("react").JSX.Element;
102
+ export type ModelSelectorSearchProps = ComponentPropsWithoutRef<typeof CommandInput>;
103
+ declare function ModelSelectorSearch({ placeholder, ...props }: ModelSelectorSearchProps): import("react").JSX.Element;
104
+ export type ModelSelectorListProps = ComponentPropsWithoutRef<typeof CommandList>;
105
+ declare function ModelSelectorList({ className, children, ...props }: ModelSelectorListProps): import("react").JSX.Element;
106
+ export type ModelSelectorEmptyProps = ComponentPropsWithoutRef<typeof CommandEmpty>;
107
+ declare function ModelSelectorEmpty({ children, ...props }: ModelSelectorEmptyProps): import("react").JSX.Element;
108
+ export type ModelSelectorGroupProps = ComponentPropsWithoutRef<typeof CommandGroup>;
109
+ declare function ModelSelectorGroup(props: ModelSelectorGroupProps): import("react").JSX.Element;
110
+ export type ModelSelectorSeparatorProps = ComponentPropsWithoutRef<typeof CommandSeparator>;
111
+ declare function ModelSelectorSeparator(props: ModelSelectorSeparatorProps): import("react").JSX.Element;
112
+ export type ModelSelectorItemProps = Omit<ComponentPropsWithoutRef<typeof CommandItem>, "value"> & {
113
+ model: ModelOption;
114
+ };
115
+ declare function ModelSelectorItem({ model, className, children, onSelect, ...props }: ModelSelectorItemProps): import("react").JSX.Element;
116
+ export type ModelSelectorEffortProps = ComponentPropsWithoutRef<"div"> & {
117
+ label?: ReactNode;
118
+ };
119
+ declare function ModelSelectorEffort({ label, className, onKeyDown, onKeyDownCapture, ...props }: ModelSelectorEffortProps): import("react").JSX.Element | null;
120
+ export type ModelSelectorProps = Omit<ModelSelectorRootProps, "children"> & VariantProps<typeof modelSelectorTriggerVariants> & {
121
+ /** Render a search input above the model list. */
122
+ searchable?: boolean;
123
+ /** Alignment of the dropdown relative to the trigger. Use `"end"` when the
124
+ * trigger sits at the right edge of its container. */
125
+ align?: ModelSelectorContentProps["align"];
126
+ className?: string;
127
+ contentClassName?: string;
128
+ };
129
+ //#endregion
130
+ export { ModelSelectorContent, ModelSelectorEffort, ModelSelectorEmpty, ModelSelectorFocusAnchor, ModelSelectorGroup, ModelSelectorItem, ModelSelectorList, ModelSelectorRoot, ModelSelectorSearch, ModelSelectorSeparator, ModelSelectorTrigger, ModelSelectorValue, model_selector_d_exports };