@nadicodeai/ui 0.6.0 → 0.8.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 (387) hide show
  1. package/AGENTS.md +12 -0
  2. package/dist/ai-elements.d.ts.map +1 -1
  3. package/dist/components/accordion.d.ts.map +1 -1
  4. package/dist/components/action-band.d.ts.map +1 -1
  5. package/dist/components/action-status.d.ts +11 -0
  6. package/dist/components/action-status.d.ts.map +1 -0
  7. package/dist/components/action-status.js +6 -0
  8. package/dist/components/agent-avatar.d.ts +7 -0
  9. package/dist/components/agent-avatar.d.ts.map +1 -0
  10. package/dist/components/agent-avatar.js +6 -0
  11. package/dist/components/agent-chat.d.ts.map +1 -1
  12. package/dist/components/agent-chat.js +2 -2
  13. package/dist/components/agent-composer.d.ts +1 -1
  14. package/dist/components/agent-composer.d.ts.map +1 -1
  15. package/dist/components/agent-composer.js +5 -9
  16. package/dist/components/agent-message.d.ts +1 -1
  17. package/dist/components/agent-message.d.ts.map +1 -1
  18. package/dist/components/agent-message.js +19 -23
  19. package/dist/components/agent-thread.d.ts +1 -1
  20. package/dist/components/agent-thread.d.ts.map +1 -1
  21. package/dist/components/agent-thread.js +5 -7
  22. package/dist/components/agent-tool-approval.d.ts +5 -10
  23. package/dist/components/agent-tool-approval.d.ts.map +1 -1
  24. package/dist/components/agent-tool-approval.js +10 -31
  25. package/dist/components/ai-elements/agent.d.ts.map +1 -1
  26. package/dist/components/ai-elements/agent.js +1 -3
  27. package/dist/components/ai-elements/artifact.d.ts.map +1 -1
  28. package/dist/components/ai-elements/artifact.js +1 -1
  29. package/dist/components/ai-elements/attachments.d.ts.map +1 -1
  30. package/dist/components/ai-elements/attachments.js +3 -3
  31. package/dist/components/ai-elements/audio-player.d.ts.map +1 -1
  32. package/dist/components/ai-elements/audio-player.js +2 -4
  33. package/dist/components/ai-elements/chain-of-thought.d.ts.map +1 -1
  34. package/dist/components/ai-elements/chain-of-thought.js +2 -2
  35. package/dist/components/ai-elements/checkpoint.d.ts.map +1 -1
  36. package/dist/components/ai-elements/checkpoint.js +2 -2
  37. package/dist/components/ai-elements/code-block.d.ts.map +1 -1
  38. package/dist/components/ai-elements/code-block.js +12 -24
  39. package/dist/components/ai-elements/commit.d.ts.map +1 -1
  40. package/dist/components/ai-elements/commit.js +2 -2
  41. package/dist/components/ai-elements/confirmation.d.ts +2 -2
  42. package/dist/components/ai-elements/confirmation.d.ts.map +1 -1
  43. package/dist/components/ai-elements/confirmation.js +4 -8
  44. package/dist/components/ai-elements/connection.d.ts.map +1 -1
  45. package/dist/components/ai-elements/connection.js +1 -1
  46. package/dist/components/ai-elements/context.d.ts.map +1 -1
  47. package/dist/components/ai-elements/context.js +4 -4
  48. package/dist/components/ai-elements/conversation.d.ts.map +1 -1
  49. package/dist/components/ai-elements/conversation.js +1 -1
  50. package/dist/components/ai-elements/edge.d.ts.map +1 -1
  51. package/dist/components/ai-elements/environment-variables.d.ts.map +1 -1
  52. package/dist/components/ai-elements/environment-variables.js +1 -3
  53. package/dist/components/ai-elements/file-tree.d.ts.map +1 -1
  54. package/dist/components/ai-elements/file-tree.js +3 -3
  55. package/dist/components/ai-elements/image.d.ts.map +1 -1
  56. package/dist/components/ai-elements/inline-citation.d.ts.map +1 -1
  57. package/dist/components/ai-elements/inline-citation.js +6 -6
  58. package/dist/components/ai-elements/jsx-preview.d.ts.map +1 -1
  59. package/dist/components/ai-elements/jsx-preview.js +2 -11
  60. package/dist/components/ai-elements/message.d.ts.map +1 -1
  61. package/dist/components/ai-elements/message.js +4 -5
  62. package/dist/components/ai-elements/mic-selector.d.ts.map +1 -1
  63. package/dist/components/ai-elements/mic-selector.js +3 -7
  64. package/dist/components/ai-elements/model-selector.d.ts.map +1 -1
  65. package/dist/components/ai-elements/model-selector.js +6 -6
  66. package/dist/components/ai-elements/node.d.ts.map +1 -1
  67. package/dist/components/ai-elements/node.js +1 -1
  68. package/dist/components/ai-elements/open-in-chat.d.ts.map +1 -1
  69. package/dist/components/ai-elements/open-in-chat.js +3 -3
  70. package/dist/components/ai-elements/package-info.d.ts.map +1 -1
  71. package/dist/components/ai-elements/package-info.js +1 -1
  72. package/dist/components/ai-elements/panel.d.ts.map +1 -1
  73. package/dist/components/ai-elements/persona.d.ts.map +1 -1
  74. package/dist/components/ai-elements/persona.js +1 -2
  75. package/dist/components/ai-elements/plan.d.ts.map +1 -1
  76. package/dist/components/ai-elements/plan.js +1 -1
  77. package/dist/components/ai-elements/prompt-input.d.ts.map +1 -1
  78. package/dist/components/ai-elements/prompt-input.js +22 -33
  79. package/dist/components/ai-elements/queue.d.ts.map +1 -1
  80. package/dist/components/ai-elements/queue.js +3 -7
  81. package/dist/components/ai-elements/reasoning.d.ts.map +1 -1
  82. package/dist/components/ai-elements/reasoning.js +2 -5
  83. package/dist/components/ai-elements/sandbox.d.ts.map +1 -1
  84. package/dist/components/ai-elements/sandbox.js +2 -2
  85. package/dist/components/ai-elements/schema-display.d.ts.map +1 -1
  86. package/dist/components/ai-elements/schema-display.js +7 -7
  87. package/dist/components/ai-elements/shimmer.d.ts.map +1 -1
  88. package/dist/components/ai-elements/snippet.d.ts.map +1 -1
  89. package/dist/components/ai-elements/snippet.js +1 -1
  90. package/dist/components/ai-elements/sources.d.ts.map +1 -1
  91. package/dist/components/ai-elements/sources.js +1 -1
  92. package/dist/components/ai-elements/speech-input.d.ts.map +1 -1
  93. package/dist/components/ai-elements/stack-trace.d.ts.map +1 -1
  94. package/dist/components/ai-elements/stack-trace.js +3 -5
  95. package/dist/components/ai-elements/suggestion.d.ts.map +1 -1
  96. package/dist/components/ai-elements/suggestion.js +1 -1
  97. package/dist/components/ai-elements/task.d.ts.map +1 -1
  98. package/dist/components/ai-elements/task.js +1 -1
  99. package/dist/components/ai-elements/terminal.d.ts.map +1 -1
  100. package/dist/components/ai-elements/test-results.d.ts.map +1 -1
  101. package/dist/components/ai-elements/test-results.js +2 -2
  102. package/dist/components/ai-elements/tool.d.ts.map +1 -1
  103. package/dist/components/ai-elements/tool.js +3 -5
  104. package/dist/components/ai-elements/toolbar.d.ts.map +1 -1
  105. package/dist/components/ai-elements/transcription.d.ts.map +1 -1
  106. package/dist/components/ai-elements/voice-selector.d.ts.map +1 -1
  107. package/dist/components/ai-elements/voice-selector.js +4 -4
  108. package/dist/components/ai-elements/web-preview.d.ts.map +1 -1
  109. package/dist/components/ai-elements/web-preview.js +3 -3
  110. package/dist/components/alert-dialog.d.ts.map +1 -1
  111. package/dist/components/alert-dialog.js +2 -2
  112. package/dist/components/alert.d.ts.map +1 -1
  113. package/dist/components/artifact-panel.d.ts +3 -4
  114. package/dist/components/artifact-panel.d.ts.map +1 -1
  115. package/dist/components/artifact-panel.js +19 -28
  116. package/dist/components/aspect-ratio.d.ts.map +1 -1
  117. package/dist/components/attachment.d.ts +24 -0
  118. package/dist/components/attachment.d.ts.map +1 -0
  119. package/dist/components/attachment.js +68 -0
  120. package/dist/components/automation-section.d.ts +1 -1
  121. package/dist/components/automation-section.d.ts.map +1 -1
  122. package/dist/components/automation-section.js +2 -2
  123. package/dist/components/avatar.d.ts +1 -1
  124. package/dist/components/avatar.d.ts.map +1 -1
  125. package/dist/components/avatar.js +1 -1
  126. package/dist/components/badge.d.ts.map +1 -1
  127. package/dist/components/benefits-bento.d.ts.map +1 -1
  128. package/dist/components/bento.d.ts.map +1 -1
  129. package/dist/components/brand.d.ts.map +1 -1
  130. package/dist/components/brand.js +1 -3
  131. package/dist/components/breadcrumb.d.ts.map +1 -1
  132. package/dist/components/breadcrumb.js +1 -1
  133. package/dist/components/bubble.d.ts +17 -0
  134. package/dist/components/bubble.d.ts.map +1 -0
  135. package/dist/components/bubble.js +59 -0
  136. package/dist/components/button-group.d.ts +1 -1
  137. package/dist/components/button-group.d.ts.map +1 -1
  138. package/dist/components/button-group.js +1 -1
  139. package/dist/components/button.d.ts.map +1 -1
  140. package/dist/components/calendar.d.ts.map +1 -1
  141. package/dist/components/calendar.js +6 -6
  142. package/dist/components/card-marketing.d.ts.map +1 -1
  143. package/dist/components/card.d.ts +1 -1
  144. package/dist/components/card.d.ts.map +1 -1
  145. package/dist/components/card.js +1 -1
  146. package/dist/components/carousel.d.ts.map +1 -1
  147. package/dist/components/chart-breakdown-table.d.ts.map +1 -1
  148. package/dist/components/chart-breakdown-table.js +1 -3
  149. package/dist/components/chart-bullet-bar.d.ts.map +1 -1
  150. package/dist/components/chart-date-range-control.d.ts.map +1 -1
  151. package/dist/components/chart-date-range-control.js +2 -4
  152. package/dist/components/chart-date-range.d.ts +1 -1
  153. package/dist/components/chart-date-range.d.ts.map +1 -1
  154. package/dist/components/chart-date-range.js +2 -4
  155. package/dist/components/chart-delta.d.ts.map +1 -1
  156. package/dist/components/chart-delta.js +1 -1
  157. package/dist/components/chart-entity-colors.d.ts +1 -1
  158. package/dist/components/chart-entity-colors.d.ts.map +1 -1
  159. package/dist/components/chart-entity-colors.js +1 -1
  160. package/dist/components/chart-kpi-stat.d.ts.map +1 -1
  161. package/dist/components/chart-sparkline.d.ts.map +1 -1
  162. package/dist/components/chart-sparkline.js +2 -7
  163. package/dist/components/chart-time-series.d.ts.map +1 -1
  164. package/dist/components/chart-time-series.js +5 -10
  165. package/dist/components/chart.d.ts.map +1 -1
  166. package/dist/components/chart.js +5 -19
  167. package/dist/components/checkbox.d.ts.map +1 -1
  168. package/dist/components/code-editor-mockup.d.ts.map +1 -1
  169. package/dist/components/code-editor-mockup.js +1 -1
  170. package/dist/components/collapsible.d.ts.map +1 -1
  171. package/dist/components/collapsible.js +2 -2
  172. package/dist/components/combobox.d.ts.map +1 -1
  173. package/dist/components/combobox.js +1 -1
  174. package/dist/components/command.d.ts.map +1 -1
  175. package/dist/components/command.js +1 -1
  176. package/dist/components/contact.d.ts.map +1 -1
  177. package/dist/components/context-menu.d.ts.map +1 -1
  178. package/dist/components/context-menu.js +4 -4
  179. package/dist/components/dashboard-shell.d.ts.map +1 -1
  180. package/dist/components/dashboard-shell.js +3 -5
  181. package/dist/components/demo-surface.d.ts.map +1 -1
  182. package/dist/components/desktop-shell.d.ts.map +1 -1
  183. package/dist/components/desktop-shell.js +2 -2
  184. package/dist/components/dialog.d.ts.map +1 -1
  185. package/dist/components/diff-count.d.ts +7 -0
  186. package/dist/components/diff-count.d.ts.map +1 -0
  187. package/dist/components/diff-count.js +18 -0
  188. package/dist/components/direction.d.ts.map +1 -1
  189. package/dist/components/disclosure-row.d.ts +12 -0
  190. package/dist/components/disclosure-row.d.ts.map +1 -0
  191. package/dist/components/disclosure-row.js +11 -0
  192. package/dist/components/drawer.d.ts.map +1 -1
  193. package/dist/components/drawer.js +1 -1
  194. package/dist/components/dropdown-menu.d.ts.map +1 -1
  195. package/dist/components/dropdown-menu.js +1 -1
  196. package/dist/components/empty.d.ts +1 -1
  197. package/dist/components/empty.d.ts.map +1 -1
  198. package/dist/components/empty.js +1 -1
  199. package/dist/components/expandable-block.d.ts +10 -0
  200. package/dist/components/expandable-block.d.ts.map +1 -0
  201. package/dist/components/expandable-block.js +22 -0
  202. package/dist/components/fact-cell.d.ts.map +1 -1
  203. package/dist/components/faq-item.d.ts.map +1 -1
  204. package/dist/components/faq.d.ts.map +1 -1
  205. package/dist/components/faq.js +1 -1
  206. package/dist/components/feedback-state.d.ts.map +1 -1
  207. package/dist/components/feedback-state.js +1 -4
  208. package/dist/components/field.d.ts.map +1 -1
  209. package/dist/components/field.js +1 -3
  210. package/dist/components/file-type-icon.d.ts +8 -0
  211. package/dist/components/file-type-icon.d.ts.map +1 -0
  212. package/dist/components/file-type-icon.js +90 -0
  213. package/dist/components/files-preview.d.ts.map +1 -1
  214. package/dist/components/files-preview.js +3 -6
  215. package/dist/components/footer.d.ts.map +1 -1
  216. package/dist/components/footer.js +1 -3
  217. package/dist/components/form.d.ts.map +1 -1
  218. package/dist/components/glyph-spinner.d.ts +10 -0
  219. package/dist/components/glyph-spinner.d.ts.map +1 -0
  220. package/dist/components/glyph-spinner.js +101 -0
  221. package/dist/components/handoff-banner.d.ts +9 -0
  222. package/dist/components/handoff-banner.d.ts.map +1 -0
  223. package/dist/components/handoff-banner.js +6 -0
  224. package/dist/components/hero-split.d.ts.map +1 -1
  225. package/dist/components/hover-card.d.ts.map +1 -1
  226. package/dist/components/hover-card.js +1 -1
  227. package/dist/components/input-group.d.ts.map +1 -1
  228. package/dist/components/input-otp.d.ts.map +1 -1
  229. package/dist/components/input.d.ts.map +1 -1
  230. package/dist/components/installer-shell.d.ts.map +1 -1
  231. package/dist/components/installer-shell.js +2 -2
  232. package/dist/components/item.d.ts.map +1 -1
  233. package/dist/components/kbd.d.ts.map +1 -1
  234. package/dist/components/label-system.d.ts +6 -2
  235. package/dist/components/label-system.d.ts.map +1 -1
  236. package/dist/components/label-system.js +4 -1
  237. package/dist/components/label.d.ts.map +1 -1
  238. package/dist/components/logo-band.d.ts.map +1 -1
  239. package/dist/components/logo-tile.d.ts.map +1 -1
  240. package/dist/components/logo-tile.js +1 -3
  241. package/dist/components/marker.d.ts +11 -0
  242. package/dist/components/marker.d.ts.map +1 -0
  243. package/dist/components/marker.js +34 -0
  244. package/dist/components/media-mount.d.ts.map +1 -1
  245. package/dist/components/media-mount.js +1 -3
  246. package/dist/components/memory-item.d.ts +9 -0
  247. package/dist/components/memory-item.d.ts.map +1 -0
  248. package/dist/components/memory-item.js +6 -0
  249. package/dist/components/menubar.d.ts.map +1 -1
  250. package/dist/components/message-scroller.d.ts +17 -0
  251. package/dist/components/message-scroller.d.ts.map +1 -0
  252. package/dist/components/message-scroller.js +29 -0
  253. package/dist/components/message.d.ts +11 -0
  254. package/dist/components/message.d.ts.map +1 -0
  255. package/dist/components/message.js +21 -0
  256. package/dist/components/native-select.d.ts.map +1 -1
  257. package/dist/components/nav-bar.d.ts.map +1 -1
  258. package/dist/components/navigation-menu.d.ts.map +1 -1
  259. package/dist/components/newsletter.d.ts.map +1 -1
  260. package/dist/components/page-frame.d.ts.map +1 -1
  261. package/dist/components/pagination.d.ts.map +1 -1
  262. package/dist/components/plugin-slot-boundary.d.ts.map +1 -1
  263. package/dist/components/plugin-slot-boundary.js +2 -2
  264. package/dist/components/popover.d.ts +1 -1
  265. package/dist/components/popover.d.ts.map +1 -1
  266. package/dist/components/popover.js +1 -1
  267. package/dist/components/pricing-card.d.ts.map +1 -1
  268. package/dist/components/pricing.d.ts.map +1 -1
  269. package/dist/components/pricing.js +3 -6
  270. package/dist/components/progress.d.ts +1 -1
  271. package/dist/components/progress.d.ts.map +1 -1
  272. package/dist/components/progress.js +1 -1
  273. package/dist/components/proof-slot.d.ts.map +1 -1
  274. package/dist/components/quote-card.d.ts +1 -1
  275. package/dist/components/quote-card.d.ts.map +1 -1
  276. package/dist/components/quote-card.js +1 -1
  277. package/dist/components/radio-group.d.ts.map +1 -1
  278. package/dist/components/resizable.d.ts.map +1 -1
  279. package/dist/components/resizable.js +1 -1
  280. package/dist/components/run-timeline.d.ts +16 -0
  281. package/dist/components/run-timeline.d.ts.map +1 -0
  282. package/dist/components/run-timeline.js +9 -0
  283. package/dist/components/scroll-area.d.ts.map +1 -1
  284. package/dist/components/seam-grid.d.ts.map +1 -1
  285. package/dist/components/section-intro.d.ts.map +1 -1
  286. package/dist/components/select.d.ts.map +1 -1
  287. package/dist/components/separator.d.ts.map +1 -1
  288. package/dist/components/settings-section.d.ts.map +1 -1
  289. package/dist/components/settings-section.js +2 -2
  290. package/dist/components/sheet.d.ts.map +1 -1
  291. package/dist/components/shift-band.d.ts.map +1 -1
  292. package/dist/components/shift-band.js +1 -1
  293. package/dist/components/sidebar.d.ts.map +1 -1
  294. package/dist/components/sidebar.js +4 -5
  295. package/dist/components/skeleton.d.ts.map +1 -1
  296. package/dist/components/slider.d.ts.map +1 -1
  297. package/dist/components/sonner.d.ts.map +1 -1
  298. package/dist/components/sonner.js +6 -6
  299. package/dist/components/spinner.d.ts.map +1 -1
  300. package/dist/components/stat-block.d.ts.map +1 -1
  301. package/dist/components/state-notice.d.ts.map +1 -1
  302. package/dist/components/state-notice.js +1 -1
  303. package/dist/components/stats-band.d.ts.map +1 -1
  304. package/dist/components/status-dot.d.ts +9 -0
  305. package/dist/components/status-dot.d.ts.map +1 -0
  306. package/dist/components/status-dot.js +12 -0
  307. package/dist/components/status-row.d.ts +18 -0
  308. package/dist/components/status-row.d.ts.map +1 -0
  309. package/dist/components/status-row.js +21 -0
  310. package/dist/components/switch.d.ts.map +1 -1
  311. package/dist/components/table.d.ts +1 -1
  312. package/dist/components/table.d.ts.map +1 -1
  313. package/dist/components/table.js +2 -2
  314. package/dist/components/tabs.d.ts.map +1 -1
  315. package/dist/components/testimonials.d.ts.map +1 -1
  316. package/dist/components/testimonials.js +1 -3
  317. package/dist/components/textarea.d.ts.map +1 -1
  318. package/dist/components/theme-mode-switcher.d.ts.map +1 -1
  319. package/dist/components/theme-mode-switcher.js +1 -1
  320. package/dist/components/toggle-group.d.ts.map +1 -1
  321. package/dist/components/toggle.d.ts.map +1 -1
  322. package/dist/components/tool-icon.d.ts +8 -0
  323. package/dist/components/tool-icon.d.ts.map +1 -0
  324. package/dist/components/tool-icon.js +23 -0
  325. package/dist/components/tooltip.d.ts.map +1 -1
  326. package/dist/components/tooltip.js +1 -1
  327. package/dist/components/usage-meter.d.ts +9 -0
  328. package/dist/components/usage-meter.d.ts.map +1 -0
  329. package/dist/components/usage-meter.js +10 -0
  330. package/dist/components/use-case-bento.d.ts.map +1 -1
  331. package/dist/components/use-case-bento.js +1 -1
  332. package/dist/components/watch-it-work-band.d.ts.map +1 -1
  333. package/dist/components/watch-it-work-band.js +2 -2
  334. package/dist/hooks/index.d.ts +3 -0
  335. package/dist/hooks/index.d.ts.map +1 -0
  336. package/dist/hooks/index.js +2 -0
  337. package/dist/hooks/use-controllable-state.d.ts +1 -1
  338. package/dist/hooks/use-controllable-state.d.ts.map +1 -1
  339. package/dist/hooks/use-controllable-state.js +2 -4
  340. package/dist/index.d.ts +26 -7
  341. package/dist/index.d.ts.map +1 -1
  342. package/dist/index.js +26 -7
  343. package/dist/lib/agent-attachment.d.ts.map +1 -1
  344. package/dist/lib/agent-contracts.d.ts +132 -0
  345. package/dist/lib/agent-contracts.d.ts.map +1 -0
  346. package/dist/lib/agent-contracts.js +6 -0
  347. package/dist/lib/agent-state.d.ts +22 -0
  348. package/dist/lib/agent-state.d.ts.map +1 -0
  349. package/dist/lib/agent-state.js +96 -0
  350. package/dist/lib/agent-work-state.d.ts.map +1 -1
  351. package/dist/lib/message-scroller-primitive/components.d.ts +17 -0
  352. package/dist/lib/message-scroller-primitive/components.d.ts.map +1 -0
  353. package/dist/lib/message-scroller-primitive/components.js +204 -0
  354. package/dist/lib/message-scroller-primitive/geometry.d.ts +55 -0
  355. package/dist/lib/message-scroller-primitive/geometry.d.ts.map +1 -0
  356. package/dist/lib/message-scroller-primitive/geometry.js +199 -0
  357. package/dist/lib/message-scroller-primitive/index.d.ts +12 -0
  358. package/dist/lib/message-scroller-primitive/index.d.ts.map +1 -0
  359. package/dist/lib/message-scroller-primitive/index.js +12 -0
  360. package/dist/lib/message-scroller-primitive/stores.d.ts +7 -0
  361. package/dist/lib/message-scroller-primitive/stores.d.ts.map +1 -0
  362. package/dist/lib/message-scroller-primitive/stores.js +53 -0
  363. package/dist/lib/message-scroller-primitive/types.d.ts +89 -0
  364. package/dist/lib/message-scroller-primitive/types.d.ts.map +1 -0
  365. package/dist/lib/message-scroller-primitive/types.js +40 -0
  366. package/dist/lib/message-scroller-primitive/use-message-scroller-commands.d.ts +19 -0
  367. package/dist/lib/message-scroller-primitive/use-message-scroller-commands.d.ts.map +1 -0
  368. package/dist/lib/message-scroller-primitive/use-message-scroller-commands.js +188 -0
  369. package/dist/lib/message-scroller-primitive/use-message-scroller-controller.d.ts +7 -0
  370. package/dist/lib/message-scroller-primitive/use-message-scroller-controller.d.ts.map +1 -0
  371. package/dist/lib/message-scroller-primitive/use-message-scroller-controller.js +506 -0
  372. package/dist/lib/message-scroller-primitive/use-message-scroller-refs.d.ts +49 -0
  373. package/dist/lib/message-scroller-primitive/use-message-scroller-refs.d.ts.map +1 -0
  374. package/dist/lib/message-scroller-primitive/use-message-scroller-refs.js +90 -0
  375. package/dist/lib/message-scroller-primitive/use-render.d.ts +22 -0
  376. package/dist/lib/message-scroller-primitive/use-render.d.ts.map +1 -0
  377. package/dist/lib/message-scroller-primitive/use-render.js +113 -0
  378. package/dist/lib/message-scroller-primitive/utils.d.ts +4 -0
  379. package/dist/lib/message-scroller-primitive/utils.d.ts.map +1 -0
  380. package/dist/lib/message-scroller-primitive/utils.js +9 -0
  381. package/dist/lib/seam.d.ts.map +1 -1
  382. package/dist/lib/theme-mode.d.ts.map +1 -1
  383. package/dist/styles/globals.css +32 -29
  384. package/docs/agent-work-surfaces.md +36 -3
  385. package/docs/consuming-cross-repo.md +72 -0
  386. package/docs/migration/ai-elements-vendoring.md +29 -0
  387. package/package.json +14 -2
package/AGENTS.md CHANGED
@@ -32,6 +32,18 @@ skills.
32
32
  - **Brand renderers live here for React consumers.** `BrandMark` is the logo mark, and `BrandWordmark` is the text-only wordmark. A full lockup is exactly one `BrandMark` followed by one `BrandWordmark`; compact mark-only usage uses `BrandMark` alone. These adapters are the only place React code imports the raw `@nadicodeai/design-system/assets/*` logo SVG exports. Website, portal, and sibling routes use these adapters instead of importing logo assets directly, drawing brand SVG inline, masking/recoloring assets, or embedding the mark inside the wordmark.
33
33
  - **No fake proof APIs.** Components may support future testimonials, logos, stats, and proof slots, but they must render nothing public when the proof is absent. Do not ship placeholder customer names, metrics, or logos.
34
34
 
35
+ ## Component Admission
36
+
37
+ Agent work surfaces — chat, composer, tool approval, artifacts, threads,
38
+ diffs, terminal/file preview, and the underlying agent state models — are
39
+ NadicodeAI core domain. They belong in this package outright, not behind a
40
+ named consumer. Any other new product composition (a shell, a settings
41
+ surface, a generic section) is admitted only with a named consuming surface
42
+ landing in the same change. Genuinely app-bespoke UI — window chrome,
43
+ boot/install overlays, mascots, PTY/xterm embeds — stays in the consuming
44
+ app; it never becomes a package abstraction. A component left unconsumed
45
+ after its target migration ships gets removed.
46
+
35
47
  ## Reusable Section Vocabulary
36
48
 
37
49
  The soft-launch homepage relies on this reusable vocabulary, and future reusable
@@ -1 +1 @@
1
- {"version":3,"file":"ai-elements.d.ts","sourceRoot":"","sources":["../src/ai-elements.ts"],"names":[],"mappings":"AAAA,cAAc,gCAAgC,CAAA;AAC9C,cAAc,mCAAmC,CAAA;AACjD,cAAc,sCAAsC,CAAA;AACpD,cAAc,uCAAuC,CAAA;AACrD,cAAc,iCAAiC,CAAA;AAC/C,cAAc,2CAA2C,CAAA;AACzD,cAAc,qCAAqC,CAAA;AACnD,cAAc,qCAAqC,CAAA;AACnD,cAAc,iCAAiC,CAAA;AAC/C,cAAc,uCAAuC,CAAA;AACrD,cAAc,qCAAqC,CAAA;AACnD,cAAc,kCAAkC,CAAA;AAChD,cAAc,mCAAmC,CAAA;AACjD,cAAc,uCAAuC,CAAA;AACrD,cAAc,+BAA+B,CAAA;AAC7C,cAAc,gDAAgD,CAAA;AAC9D,cAAc,oCAAoC,CAAA;AAClD,cAAc,gCAAgC,CAAA;AAC9C,cAAc,0CAA0C,CAAA;AACxD,cAAc,sCAAsC,CAAA;AACpD,cAAc,kCAAkC,CAAA;AAChD,cAAc,uCAAuC,CAAA;AACrD,cAAc,yCAAyC,CAAA;AACvD,cAAc,+BAA+B,CAAA;AAC7C,cAAc,uCAAuC,CAAA;AACrD,cAAc,uCAAuC,CAAA;AACrD,cAAc,gCAAgC,CAAA;AAC9C,cAAc,kCAAkC,CAAA;AAChD,cAAc,+BAA+B,CAAA;AAC7C,cAAc,uCAAuC,CAAA;AACrD,cAAc,gCAAgC,CAAA;AAC9C,cAAc,oCAAoC,CAAA;AAClD,cAAc,kCAAkC,CAAA;AAChD,cAAc,yCAAyC,CAAA;AACvD,cAAc,kCAAkC,CAAA;AAChD,cAAc,kCAAkC,CAAA;AAChD,cAAc,kCAAkC,CAAA;AAChD,cAAc,uCAAuC,CAAA;AACrD,cAAc,sCAAsC,CAAA;AACpD,cAAc,qCAAqC,CAAA;AACnD,cAAc,+BAA+B,CAAA;AAC7C,cAAc,mCAAmC,CAAA;AACjD,cAAc,uCAAuC,CAAA;AACrD,cAAc,+BAA+B,CAAA;AAC7C,cAAc,kCAAkC,CAAA;AAChD,cAAc,wCAAwC,CAAA;AACtD,cAAc,yCAAyC,CAAA;AACvD,cAAc,sCAAsC,CAAA"}
1
+ {"version":3,"file":"ai-elements.d.ts","sourceRoot":"","sources":["../src/ai-elements.ts"],"names":[],"mappings":"AAAA,cAAc,gCAAgC,CAAC;AAC/C,cAAc,mCAAmC,CAAC;AAClD,cAAc,sCAAsC,CAAC;AACrD,cAAc,uCAAuC,CAAC;AACtD,cAAc,iCAAiC,CAAC;AAChD,cAAc,2CAA2C,CAAC;AAC1D,cAAc,qCAAqC,CAAC;AACpD,cAAc,qCAAqC,CAAC;AACpD,cAAc,iCAAiC,CAAC;AAChD,cAAc,uCAAuC,CAAC;AACtD,cAAc,qCAAqC,CAAC;AACpD,cAAc,kCAAkC,CAAC;AACjD,cAAc,mCAAmC,CAAC;AAClD,cAAc,uCAAuC,CAAC;AACtD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,gDAAgD,CAAC;AAC/D,cAAc,oCAAoC,CAAC;AACnD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,0CAA0C,CAAC;AACzD,cAAc,sCAAsC,CAAC;AACrD,cAAc,kCAAkC,CAAC;AACjD,cAAc,uCAAuC,CAAC;AACtD,cAAc,yCAAyC,CAAC;AACxD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,uCAAuC,CAAC;AACtD,cAAc,uCAAuC,CAAC;AACtD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,kCAAkC,CAAC;AACjD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,uCAAuC,CAAC;AACtD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,oCAAoC,CAAC;AACnD,cAAc,kCAAkC,CAAC;AACjD,cAAc,yCAAyC,CAAC;AACxD,cAAc,kCAAkC,CAAC;AACjD,cAAc,kCAAkC,CAAC;AACjD,cAAc,kCAAkC,CAAC;AACjD,cAAc,uCAAuC,CAAC;AACtD,cAAc,sCAAsC,CAAC;AACrD,cAAc,qCAAqC,CAAC;AACpD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,mCAAmC,CAAC;AAClD,cAAc,uCAAuC,CAAC;AACtD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,kCAAkC,CAAC;AACjD,cAAc,wCAAwC,CAAC;AACvD,cAAc,yCAAyC,CAAC;AACxD,cAAc,sCAAsC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"accordion.d.ts","sourceRoot":"","sources":["../../src/components/accordion.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,IAAI,kBAAkB,EAAE,MAAM,0BAA0B,CAAA;AAK1E,iBAAS,SAAS,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,kBAAkB,CAAC,IAAI,CAAC,KAAK,+BAQxE;AAED,iBAAS,aAAa,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,kBAAkB,CAAC,IAAI,CAAC,KAAK,+BAQ5E;AAED,iBAAS,gBAAgB,CAAC,EACxB,SAAS,EACT,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,kBAAkB,CAAC,OAAO,CAAC,KAAK,+BAiBlC;AAED,iBAAS,gBAAgB,CAAC,EACxB,SAAS,EACT,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,kBAAkB,CAAC,KAAK,CAAC,KAAK,+BAiBhC;AAED,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,CAAA"}
1
+ {"version":3,"file":"accordion.d.ts","sourceRoot":"","sources":["../../src/components/accordion.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,IAAI,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAK3E,iBAAS,SAAS,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,kBAAkB,CAAC,IAAI,CAAC,KAAK,+BAQxE;AAED,iBAAS,aAAa,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,kBAAkB,CAAC,IAAI,CAAC,KAAK,+BAQ5E;AAED,iBAAS,gBAAgB,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAE,EAAE,kBAAkB,CAAC,OAAO,CAAC,KAAK,+BAuB5F;AAED,iBAAS,gBAAgB,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAE,EAAE,kBAAkB,CAAC,KAAK,CAAC,KAAK,+BAiB1F;AAED,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"action-band.d.ts","sourceRoot":"","sources":["../../src/components/action-band.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAuC9B,KAAK,eAAe,GAAG,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG;IACnD,MAAM,CAAC,EAAE,OAAO,GAAG,MAAM,CAAA;CAC1B,CAAA;AAED,iBAAS,UAAU,CAAC,EAClB,MAAgB,EAChB,SAAS,EACT,QAAQ,EACR,KAAK,EACL,GAAG,KAAK,EACT,EAAE,eAAe,qBAsBjB;AAED,iBAAS,iBAAiB,CAAC,EACzB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,qBAW7B;AAED,iBAAS,cAAc,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,qBAW3E;AAED,iBAAS,gBAAgB,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,qBAW7E;AAED,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,cAAc,EAAE,gBAAgB,EAAE,CAAA"}
1
+ {"version":3,"file":"action-band.d.ts","sourceRoot":"","sources":["../../src/components/action-band.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAmC/B,KAAK,eAAe,GAAG,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG;IACnD,MAAM,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;CAC3B,CAAC;AAEF,iBAAS,UAAU,CAAC,EAAE,MAAgB,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,KAAK,EAAE,EAAE,eAAe,qBAsB9F;AAED,iBAAS,iBAAiB,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,qBAQ9E;AAED,iBAAS,cAAc,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,qBAW3E;AAED,iBAAS,gBAAgB,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,qBAW7E;AAED,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,cAAc,EAAE,gBAAgB,EAAE,CAAC"}
@@ -0,0 +1,11 @@
1
+ import type { ReactNode } from "react";
2
+ interface ActionStatusProps {
3
+ state: "done" | "idle" | "saving";
4
+ idle: string;
5
+ busy: string;
6
+ done: string;
7
+ idleIcon?: ReactNode;
8
+ }
9
+ declare function ActionStatus({ state, idle, busy, done, idleIcon }: ActionStatusProps): import("react").JSX.Element;
10
+ export { ActionStatus };
11
+ //# sourceMappingURL=action-status.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"action-status.d.ts","sourceRoot":"","sources":["../../src/components/action-status.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGvC,UAAU,iBAAiB;IACzB,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,QAAQ,CAAC;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AACD,iBAAS,YAAY,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,QAAe,EAAE,EAAE,iBAAiB,+BAapF;AACD,OAAO,EAAE,YAAY,EAAE,CAAC"}
@@ -0,0 +1,6 @@
1
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { CheckIcon, Loader2Icon } from "lucide-react";
3
+ function ActionStatus({ state, idle, busy, done, idleIcon = null }) {
4
+ return (_jsxs(_Fragment, { children: [state === "saving" ? (_jsx(Loader2Icon, { "aria-hidden": "true", className: "animate-spin", "data-icon": "inline-start" })) : state === "done" ? (_jsx(CheckIcon, { "aria-hidden": "true", "data-icon": "inline-start" })) : (idleIcon), state === "saving" ? busy : state === "done" ? done : idle] }));
5
+ }
6
+ export { ActionStatus };
@@ -0,0 +1,7 @@
1
+ import * as React from "react";
2
+ export type AgentAvatarAccent = "green" | "cyan" | "amber" | "ink" | "red";
3
+ declare function AgentAvatar({ className, accent, children, ...props }: React.ComponentProps<"span"> & {
4
+ accent?: AgentAvatarAccent;
5
+ }): React.JSX.Element;
6
+ export { AgentAvatar };
7
+ //# sourceMappingURL=agent-avatar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-avatar.d.ts","sourceRoot":"","sources":["../../src/components/agent-avatar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,MAAM,MAAM,iBAAiB,GAAG,OAAO,GAAG,MAAM,GAAG,OAAO,GAAG,KAAK,GAAG,KAAK,CAAC;AAE3E,iBAAS,WAAW,CAAC,EACnB,SAAS,EACT,MAAM,EACN,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,GAAG;IAAE,MAAM,CAAC,EAAE,iBAAiB,CAAA;CAAE,qBAW/D;AAED,OAAO,EAAE,WAAW,EAAE,CAAC"}
@@ -0,0 +1,6 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { cn } from "../lib/utils.js";
3
+ function AgentAvatar({ className, accent, children, ...props }) {
4
+ return (_jsx("span", { "data-slot": "agent-avatar", "data-accent": accent, className: cn("nc-agent-avatar", className), ...props, children: children }));
5
+ }
6
+ export { AgentAvatar };
@@ -1 +1 @@
1
- {"version":3,"file":"agent-chat.d.ts","sourceRoot":"","sources":["../../src/components/agent-chat.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,OAAO,EAEL,KAAK,kBAAkB,EACxB,MAAM,6BAA6B,CAAA;AACpC,OAAO,EAEL,KAAK,oBAAoB,EAC1B,MAAM,2BAA2B,CAAA;AAClC,OAAO,EACL,KAAK,iBAAiB,EACtB,KAAK,gCAAgC,EACrC,KAAK,cAAc,EACpB,MAAM,4BAA4B,CAAA;AAGnC,iBAAS,SAAS,CAAC,EACjB,QAAQ,EACR,KAAc,EACd,SAAS,EACT,UAAU,EACV,QAAQ,EACR,aAAa,EACb,WAAW,EACX,WAAW,EACX,oBAAoB,EACpB,WAAW,EACX,MAAM,EACN,SAAS,EACT,eAAe,EACf,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,SAAS,CAAC,GAAG;IACnC,QAAQ,EAAE,iBAAiB,EAAE,CAAA;IAC7B,KAAK,CAAC,EAAE,cAAc,CAAA;IACtB,SAAS,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,cAAc,EAAE,MAAM,CAAC,EAAE,oBAAoB,CAAC,CAAC,CAAA;IAClF,UAAU,CAAC,EAAE,oBAAoB,CAAA;IACjC,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC1B,aAAa,CAAC,EAAE,kBAAkB,CAAA;IAClC,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC,CAAA;IAC7C,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC7B,oBAAoB,CAAC,EAAE,gCAAgC,CAAA;IACvD,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACxB,eAAe,CAAC,EAAE,MAAM,CAAA;CACzB,qBAgCA;AAED,OAAO,EAAE,SAAS,EAAE,CAAA"}
1
+ {"version":3,"file":"agent-chat.d.ts","sourceRoot":"","sources":["../../src/components/agent-chat.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAiB,KAAK,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACrF,OAAO,EAAe,KAAK,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACnF,OAAO,EACL,KAAK,iBAAiB,EACtB,KAAK,gCAAgC,EACrC,KAAK,cAAc,EACpB,MAAM,4BAA4B,CAAC;AAGpC,iBAAS,SAAS,CAAC,EACjB,QAAQ,EACR,KAAc,EACd,SAAS,EACT,UAAU,EACV,QAAQ,EACR,aAAa,EACb,WAAW,EACX,WAAW,EACX,oBAAoB,EACpB,WAAW,EACX,MAAM,EACN,SAAS,EACT,eAAe,EACf,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,SAAS,CAAC,GAAG;IACnC,QAAQ,EAAE,iBAAiB,EAAE,CAAC;IAC9B,KAAK,CAAC,EAAE,cAAc,CAAC;IACvB,SAAS,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,cAAc,EAAE,MAAM,CAAC,EAAE,oBAAoB,CAAC,CAAC,CAAC;IACnF,UAAU,CAAC,EAAE,oBAAoB,CAAC;IAClC,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,aAAa,CAAC,EAAE,kBAAkB,CAAC;IACnC,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;IAC9C,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC9B,oBAAoB,CAAC,EAAE,gCAAgC,CAAC;IACxD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B,qBAgCA;AAED,OAAO,EAAE,SAAS,EAAE,CAAC"}
@@ -1,7 +1,7 @@
1
1
  "use client";
2
2
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
- import { AgentComposer, } from "./agent-composer.js";
4
- import { AgentThread, } from "./agent-thread.js";
3
+ import { AgentComposer } from "./agent-composer.js";
4
+ import { AgentThread } from "./agent-thread.js";
5
5
  import { cn } from "../lib/utils.js";
6
6
  function AgentChat({ messages, state = "idle", stateCopy, emptyState, composer, composerProps, toolActions, retryAction, onToolApprovalChoice, maxMessages, header, className, threadClassName, ...props }) {
7
7
  return (_jsxs("section", { "data-slot": "agent-chat", "data-agent-state": state, className: cn("flex min-h-0 flex-col gap-4 rounded-lg border bg-[var(--nc-app-surface-panel)] p-3", className), ...props, children: [header && _jsx("div", { "data-slot": "agent-chat-header", children: header }), _jsx(AgentThread, { messages: messages, state: state, stateCopy: stateCopy, emptyState: emptyState, toolActions: toolActions, retryAction: retryAction, onToolApprovalChoice: onToolApprovalChoice, maxMessages: maxMessages, className: cn("flex-1", threadClassName) }), composer ??
@@ -52,5 +52,5 @@ declare function AgentQueuePanel({ queue, actions, className, }: {
52
52
  className?: string;
53
53
  }): React.JSX.Element | null;
54
54
  declare function AgentComposer({ value, defaultValue, placeholder, attachments, queue, state, disabled, slashMenu, mentionMenu, tools, submitLabel, stopLabel, onValueChange, onSubmit, onStop, onRemoveAttachment, queueActions, footer, className, ...props }: AgentComposerProps): React.JSX.Element;
55
- export { AgentComposer, AgentComposerAttachments, AgentQueuePanel, };
55
+ export { AgentComposer, AgentComposerAttachments, AgentQueuePanel };
56
56
  //# sourceMappingURL=agent-composer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"agent-composer.d.ts","sourceRoot":"","sources":["../../src/components/agent-composer.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agent-composer.d.ts","sourceRoot":"","sources":["../../src/components/agent-composer.tsx"],"names":[],"mappings":"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"}
@@ -4,7 +4,7 @@ import { AtSignIcon, SlashIcon } from "lucide-react";
4
4
  import { Attachment, AttachmentInfo, AttachmentPreview, AttachmentRemove, Attachments, } from "./ai-elements/attachments.js";
5
5
  import { PromptInput, PromptInputBody, PromptInputFooter, PromptInputHeader, PromptInputSubmit, PromptInputTextarea, PromptInputTools, } from "./ai-elements/prompt-input.js";
6
6
  import { Queue, QueueItem, QueueItemContent, QueueItemDescription, QueueItemIndicator, QueueList, QueueSection, QueueSectionContent, QueueSectionLabel, QueueSectionTrigger, } from "./ai-elements/queue.js";
7
- import { getAgentRedactionText, } from "./artifact-panel.js";
7
+ import { getAgentRedactionText } from "./artifact-panel.js";
8
8
  import { Badge } from "./badge.js";
9
9
  import { Button } from "./button.js";
10
10
  import { agentAttachmentToData } from "../lib/agent-attachment.js";
@@ -32,9 +32,7 @@ function AgentComposerAttachments({ attachments, onRemoveAttachment, }) {
32
32
  if (!attachments?.length) {
33
33
  return null;
34
34
  }
35
- return (_jsx(Attachments, { "data-slot": "agent-composer-attachments", variant: "list", className: "w-full", children: attachments.map((attachment) => (_jsxs(Attachment, { data: agentAttachmentToData(attachment), onRemove: onRemoveAttachment
36
- ? () => onRemoveAttachment(attachment)
37
- : undefined, children: [_jsx(AttachmentPreview, {}), _jsx(AttachmentInfo, { showMediaType: true }), attachment.sizeLabel && (_jsx("span", { className: "text-xs text-muted-foreground", children: attachment.sizeLabel })), attachment.redaction && (_jsx("span", { className: "sr-only", children: getAgentRedactionText(attachment.redaction) })), _jsx(AttachmentRemove, {})] }, attachment.id))) }));
35
+ return (_jsx(Attachments, { "data-slot": "agent-composer-attachments", variant: "list", className: "w-full", children: attachments.map((attachment) => (_jsxs(Attachment, { data: agentAttachmentToData(attachment), onRemove: onRemoveAttachment ? () => onRemoveAttachment(attachment) : undefined, children: [_jsx(AttachmentPreview, {}), _jsx(AttachmentInfo, { showMediaType: true }), attachment.sizeLabel && (_jsx("span", { className: "text-xs text-muted-foreground", children: attachment.sizeLabel })), attachment.redaction && (_jsx("span", { className: "sr-only", children: getAgentRedactionText(attachment.redaction) })), _jsx(AttachmentRemove, {})] }, attachment.id))) }));
38
36
  }
39
37
  function AgentQueuePanel({ queue, actions, className, }) {
40
38
  if (!queue.items.length) {
@@ -43,9 +41,7 @@ function AgentQueuePanel({ queue, actions, className, }) {
43
41
  return (_jsx(Queue, { "data-slot": "agent-queue", className: className, children: _jsxs(QueueSection, { defaultOpen: true, children: [_jsx(QueueSectionTrigger, { children: _jsx(QueueSectionLabel, { count: queue.items.length, label: queue.title ?? "queued tasks" }) }), _jsxs(QueueSectionContent, { children: [queue.description && (_jsx("p", { className: "px-3 pt-2 text-sm text-muted-foreground", children: queue.description })), _jsx(QueueList, { children: queue.items.map((item) => {
44
42
  const status = item.status ?? "queued";
45
43
  const completed = status === "complete";
46
- return (_jsxs(QueueItem, { "data-queue-status": status, className: "gap-2", children: [_jsxs("div", { className: "flex items-start gap-2", children: [_jsx(QueueItemIndicator, { completed: completed }), _jsxs("div", { className: "min-w-0 flex-1", children: [_jsx(QueueItemContent, { completed: completed, children: item.redaction
47
- ? getAgentRedactionText(item.redaction)
48
- : item.title }), item.description && (_jsx(QueueItemDescription, { completed: completed, children: item.description }))] }), _jsx(Badge, { variant: "outline", children: queueStatusLabels[status] }), actions?.[item.id]] }), _jsx(AgentComposerAttachments, { attachments: item.attachments })] }, item.id));
44
+ return (_jsxs(QueueItem, { "data-queue-status": status, className: "gap-2", children: [_jsxs("div", { className: "flex items-start gap-2", children: [_jsx(QueueItemIndicator, { completed: completed }), _jsxs("div", { className: "min-w-0 flex-1", children: [_jsx(QueueItemContent, { completed: completed, children: item.redaction ? getAgentRedactionText(item.redaction) : item.title }), item.description && (_jsx(QueueItemDescription, { completed: completed, children: item.description }))] }), _jsx(Badge, { variant: "outline", children: queueStatusLabels[status] }), actions?.[item.id]] }), _jsx(AgentComposerAttachments, { attachments: item.attachments })] }, item.id));
49
45
  }) })] })] }) }));
50
46
  }
51
47
  function AgentComposer({ value, defaultValue, placeholder = "Ask Nadia to work on this...", attachments = [], queue, state = "idle", disabled = false, slashMenu, mentionMenu, tools, submitLabel = "Submit", stopLabel = "Stop", onValueChange, onSubmit, onStop, onRemoveAttachment, queueActions, footer, className, ...props }) {
@@ -55,6 +51,6 @@ function AgentComposer({ value, defaultValue, placeholder = "Ask Nadia to work o
55
51
  attachments,
56
52
  queue,
57
53
  value: message.text,
58
- }, event), ...props, children: [(attachments.length > 0 || slashMenu || mentionMenu) && (_jsxs(PromptInputHeader, { children: [_jsx(AgentComposerAttachments, { attachments: attachments, onRemoveAttachment: onRemoveAttachment }), slashMenu && (_jsx("div", { "data-slot": "agent-composer-slash-menu", children: slashMenu })), mentionMenu && (_jsx("div", { "data-slot": "agent-composer-mention-menu", children: mentionMenu }))] })), _jsx(PromptInputBody, { children: _jsx(PromptInputTextarea, { value: value, defaultValue: defaultValue, placeholder: placeholder, disabled: isDisabled || isStreaming, onChange: (event) => onValueChange?.(event.currentTarget.value) }) }), _jsxs(PromptInputFooter, { children: [_jsxs(PromptInputTools, { children: [tools, !slashMenu && (_jsxs(Button, { "aria-label": "Slash commands", title: "Slash commands", type: "button", variant: "ghost", size: "icon-sm", disabled: isDisabled, children: [_jsx(SlashIcon, { className: "size-4", "data-icon": true }), _jsx("span", { className: "sr-only", children: "Slash commands" })] })), !mentionMenu && (_jsxs(Button, { "aria-label": "Mention context", title: "Mention context", type: "button", variant: "ghost", size: "icon-sm", disabled: isDisabled, children: [_jsx(AtSignIcon, { className: "size-4", "data-icon": true }), _jsx("span", { className: "sr-only", children: "Mention context" })] }))] }), _jsx(PromptInputSubmit, { "aria-label": isStreaming ? stopLabel : submitLabel, status: composerStateToChatStatus(state), onStop: onStop, disabled: isStreaming ? !onStop : isDisabled })] })] }), footer && _jsx("div", { "data-slot": "agent-composer-footer", children: footer })] }));
54
+ }, event), ...props, children: [(attachments.length > 0 || slashMenu || mentionMenu) && (_jsxs(PromptInputHeader, { children: [_jsx(AgentComposerAttachments, { attachments: attachments, onRemoveAttachment: onRemoveAttachment }), slashMenu && _jsx("div", { "data-slot": "agent-composer-slash-menu", children: slashMenu }), mentionMenu && _jsx("div", { "data-slot": "agent-composer-mention-menu", children: mentionMenu })] })), _jsx(PromptInputBody, { children: _jsx(PromptInputTextarea, { value: value, defaultValue: defaultValue, placeholder: placeholder, disabled: isDisabled || isStreaming, onChange: (event) => onValueChange?.(event.currentTarget.value) }) }), _jsxs(PromptInputFooter, { children: [_jsxs(PromptInputTools, { children: [tools, !slashMenu && (_jsxs(Button, { "aria-label": "Slash commands", title: "Slash commands", type: "button", variant: "ghost", size: "icon-sm", disabled: isDisabled, children: [_jsx(SlashIcon, { className: "size-4", "data-icon": true }), _jsx("span", { className: "sr-only", children: "Slash commands" })] })), !mentionMenu && (_jsxs(Button, { "aria-label": "Mention context", title: "Mention context", type: "button", variant: "ghost", size: "icon-sm", disabled: isDisabled, children: [_jsx(AtSignIcon, { className: "size-4", "data-icon": true }), _jsx("span", { className: "sr-only", children: "Mention context" })] }))] }), _jsx(PromptInputSubmit, { "aria-label": isStreaming ? stopLabel : submitLabel, status: composerStateToChatStatus(state), onStop: onStop, disabled: isStreaming ? !onStop : isDisabled })] })] }), footer && _jsx("div", { "data-slot": "agent-composer-footer", children: footer })] }));
59
55
  }
60
- export { AgentComposer, AgentComposerAttachments, AgentQueuePanel, };
56
+ export { AgentComposer, AgentComposerAttachments, AgentQueuePanel };
@@ -96,7 +96,7 @@ declare function AgentMessageStateNotice({ state, title, description, actions, }
96
96
  description?: React.ReactNode;
97
97
  actions?: React.ReactNode;
98
98
  }): React.JSX.Element;
99
- declare function AgentAttachmentsList({ attachments, }: {
99
+ declare function AgentAttachmentsList({ attachments }: {
100
100
  attachments?: AgentAttachmentModel[];
101
101
  }): React.JSX.Element | null;
102
102
  declare function AgentSourcesList({ sources }: {
@@ -1 +1 @@
1
- {"version":3,"file":"agent-message.d.ts","sourceRoot":"","sources":["../../src/components/agent-message.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agent-message.d.ts","sourceRoot":"","sources":["../../src/components/agent-message.tsx"],"names":[],"mappings":"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"}
@@ -2,10 +2,11 @@
2
2
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
3
3
  import { BotIcon, InfoIcon, UserIcon } from "lucide-react";
4
4
  import { Attachment, AttachmentInfo, AttachmentPreview, Attachments, } from "./ai-elements/attachments.js";
5
- import { Message, MessageContent, MessageResponse, } from "./ai-elements/message.js";
6
- import { Reasoning, ReasoningContent, ReasoningTrigger, } from "./ai-elements/reasoning.js";
7
- import { Source, Sources, SourcesContent, SourcesTrigger, } from "./ai-elements/sources.js";
8
- import { Tool, ToolContent, ToolHeader, ToolInput, ToolOutput, } from "./ai-elements/tool.js";
5
+ import { Message, MessageResponse } from "./ai-elements/message.js";
6
+ import { Reasoning, ReasoningContent, ReasoningTrigger } from "./ai-elements/reasoning.js";
7
+ import { Source, Sources, SourcesContent, SourcesTrigger } from "./ai-elements/sources.js";
8
+ import { ToolContent, ToolHeader, ToolInput, ToolOutput, } from "./ai-elements/tool.js";
9
+ import { Collapsible } from "./collapsible.js";
9
10
  import { ArtifactPanel, RedactedNotice, StackTraceDisclosure, getAgentRedactionText, } from "./artifact-panel.js";
10
11
  import { AgentToolApproval, } from "./agent-tool-approval.js";
11
12
  import { Badge } from "./badge.js";
@@ -40,7 +41,7 @@ const toolStatusToAiState = {
40
41
  function AgentMessageStateNotice({ state, title, description, actions, }) {
41
42
  return (_jsx(StateNotice, { "data-slot": "agent-message-state", state: state, icon: statePresentation(state).icon, title: title ?? stateMeta[state].label, description: description, actions: actions, className: "rounded-md px-3 py-2" }));
42
43
  }
43
- function AgentAttachmentsList({ attachments, }) {
44
+ function AgentAttachmentsList({ attachments }) {
44
45
  if (!attachments?.length) {
45
46
  return null;
46
47
  }
@@ -50,26 +51,26 @@ function AgentSourcesList({ sources }) {
50
51
  if (!sources?.length) {
51
52
  return null;
52
53
  }
53
- return (_jsxs(Sources, { "data-slot": "agent-message-sources", children: [_jsx(SourcesTrigger, { count: sources.length }), _jsx(SourcesContent, { keepMounted: true, children: sources.map((source) => (_jsx(Source, { href: source.url ?? "#", title: source.redaction
54
- ? getAgentRedactionText(source.redaction)
55
- : source.title }, source.id))) })] }));
54
+ return (_jsxs(Sources, { "data-slot": "agent-message-sources", children: [_jsx(SourcesTrigger, { count: sources.length }), _jsx(SourcesContent, { keepMounted: true, children: sources.map((source) => (_jsx(Source, { href: source.url ?? "#", title: source.redaction ? getAgentRedactionText(source.redaction) : source.title }, source.id))) })] }));
56
55
  }
57
- function AgentReasoningBlock({ reasoning, }) {
58
- return (_jsxs(Reasoning, { "data-slot": "agent-reasoning-summary", "data-reasoning-status": reasoning.status, isStreaming: reasoning.status === "streaming", defaultOpen: reasoning.status === "streaming", duration: reasoning.durationSeconds, children: [_jsx(ReasoningTrigger, { getThinkingMessage: (isStreaming) => reasoning.title ??
59
- (isStreaming ? "Preparing reasoning summary" : "Reasoning summary") }), reasoning.redaction ? (_jsx("div", { className: "mt-3", children: _jsx(RedactedNotice, { redaction: reasoning.redaction }) })) : (_jsx(ReasoningContent, { children: reasoning.summary ?? "No reasoning summary supplied." }))] }));
56
+ function AgentReasoningBlock({ reasoning }) {
57
+ return (_jsxs(Reasoning, { "data-slot": "agent-reasoning-summary", "data-reasoning-status": reasoning.status, isStreaming: reasoning.status === "streaming", defaultOpen: reasoning.status === "streaming", duration: reasoning.durationSeconds, children: [_jsx(ReasoningTrigger, { getThinkingMessage: (isStreaming) => reasoning.title ?? (isStreaming ? "Preparing reasoning summary" : "Reasoning summary") }), reasoning.redaction ? (_jsx("div", { className: "mt-3", children: _jsx(RedactedNotice, { redaction: reasoning.redaction }) })) : (_jsx(ReasoningContent, { children: reasoning.summary ?? "No reasoning summary supplied." }))] }));
60
58
  }
61
59
  function AgentToolCall({ toolCall, actions, onApprovalChoice, }) {
62
60
  const state = toolStatusToAiState[toolCall.status];
63
- return (_jsxs(Tool, { "data-slot": "agent-tool-call", "data-tool-status": toolCall.status, defaultOpen: true, children: [_jsx(ToolHeader, { type: `tool-${toolCall.name}`, state: state, title: toolCall.title ?? toolCall.name }), _jsxs(ToolContent, { children: [toolCall.approval && (_jsx(AgentToolApproval, { request: toolCall.approval, disabled: !onApprovalChoice, onChoice: onApprovalChoice
61
+ return (_jsxs(Collapsible, { "data-slot": "agent-tool-call", "data-tool-status": toolCall.status, className: "group not-prose w-full rounded-md border", defaultOpen: true, children: [_jsx(ToolHeader, { className: "nc-tool-call-trace", type: `tool-${toolCall.name}`, state: state, title: toolCall.title ?? toolCall.name }), _jsxs(ToolContent, { children: [toolCall.approval && (_jsx(AgentToolApproval, { request: toolCall.approval, disabled: !onApprovalChoice, onChoice: onApprovalChoice
64
62
  ? (choice, request) => onApprovalChoice(choice, request, toolCall)
65
- : undefined })), toolCall.redaction ? (_jsx(RedactedNotice, { redaction: toolCall.redaction })) : (_jsxs(_Fragment, { children: [toolCall.input !== undefined && (_jsx(ToolInput, { input: toolCall.input })), (toolCall.output !== undefined || toolCall.error) && (_jsx(ToolOutput, { output: toolCall.output, errorText: toolCall.error }))] })), !toolCall.redaction && toolCall.trace && (_jsx(StackTraceDisclosure, { trace: toolCall.trace })), actions] })] }));
63
+ : undefined })), toolCall.redaction ? (_jsx(RedactedNotice, { redaction: toolCall.redaction })) : (_jsxs(_Fragment, { children: [toolCall.input !== undefined && (_jsx(ToolInput, { input: toolCall.input })), (toolCall.output !== undefined || toolCall.error) && (_jsx(ToolOutput, { output: toolCall.output, errorText: toolCall.error }))] })), !toolCall.redaction && toolCall.trace && _jsx(StackTraceDisclosure, { trace: toolCall.trace }), actions] })] }));
66
64
  }
67
- function AgentMessagePartView({ part, toolActions, onToolApprovalChoice, }) {
65
+ function AgentMessagePartView({ part, role, toolActions, onToolApprovalChoice, }) {
68
66
  if (part.type === "text") {
69
67
  if (part.redaction) {
70
68
  return _jsx(RedactedNotice, { redaction: part.redaction });
71
69
  }
72
- return _jsx(MessageResponse, { children: part.text });
70
+ if (role === "system") {
71
+ return _jsx(MessageResponse, { children: part.text });
72
+ }
73
+ return (_jsx("div", { "data-slot": "agent-message-bubble", className: role === "user" ? "nc-chat-bubble-user" : "nc-chat-bubble-agent", children: _jsx(MessageResponse, { children: part.text }) }));
73
74
  }
74
75
  if (part.type === "reasoning") {
75
76
  return _jsx(AgentReasoningBlock, { reasoning: part.reasoning });
@@ -88,16 +89,11 @@ function AgentMessagePartView({ part, toolActions, onToolApprovalChoice, }) {
88
89
  function AgentMessageMeta({ role, metadata, state, }) {
89
90
  const Icon = roleIcons[role];
90
91
  const label = metadata?.label ?? role;
91
- return (_jsxs("div", { "data-slot": "agent-message-meta", className: "flex flex-wrap items-center gap-2 text-xs text-muted-foreground", children: [_jsx(Icon, { className: "size-3.5" }), _jsx("span", { className: "font-medium capitalize", children: label }), metadata?.model && _jsx(Badge, { variant: "outline", children: metadata.model }), metadata?.timestamp && _jsx("span", { children: metadata.timestamp }), state && state !== "idle" && (_jsx(Badge, { variant: "secondary", children: stateMeta[state].label }))] }));
92
+ return (_jsxs("div", { "data-slot": "agent-message-meta", className: "flex flex-wrap items-center gap-2 text-xs text-muted-foreground", children: [_jsx(Icon, { className: "size-3.5" }), _jsx("span", { className: "font-medium capitalize", children: label }), metadata?.model && _jsx(Badge, { variant: "outline", children: metadata.model }), metadata?.timestamp && _jsx("span", { children: metadata.timestamp }), state && state !== "idle" && _jsx(Badge, { variant: "secondary", children: stateMeta[state].label })] }));
92
93
  }
93
94
  function AgentMessage({ message, toolActions, retryAction, onToolApprovalChoice, className, ...props }) {
94
- const parts = message.parts ??
95
- (message.content
96
- ? [{ text: message.content, type: "text" }]
97
- : []);
95
+ const parts = message.parts ?? (message.content ? [{ text: message.content, type: "text" }] : []);
98
96
  const aiRole = message.role === "user" ? "user" : "assistant";
99
- return (_jsx("article", { "data-slot": "agent-message", "data-message-role": message.role, "data-agent-state": message.state, className: className, ...props, children: _jsxs(Message, { from: aiRole, className: cn("max-w-full", message.role === "system" && "mx-auto border-y bg-muted/20 px-4 py-3"), children: [_jsx(AgentMessageMeta, { role: message.role, metadata: message.metadata, state: message.state }), _jsxs(MessageContent, { className: cn("w-full", message.role === "system" && "text-muted-foreground"), children: [_jsx(AgentAttachmentsList, { attachments: message.attachments }), message.redaction ? (_jsx(RedactedNotice, { redaction: message.redaction })) : (parts.map((part, index) => (_jsx(AgentMessagePartView, { part: part, toolActions: toolActions, onToolApprovalChoice: onToolApprovalChoice }, `${message.id}-${part.type}-${index}`)))), _jsx(AgentSourcesList, { sources: message.sources }), message.state &&
100
- message.state !== "idle" &&
101
- message.state !== "streaming" && (_jsx(AgentMessageStateNotice, { state: message.state, actions: message.state === "retryable" ? retryAction : undefined }))] })] }) }));
97
+ return (_jsx("article", { "data-slot": "agent-message", "data-message-role": message.role, "data-agent-state": message.state, className: className, ...props, children: _jsxs(Message, { from: aiRole, className: cn("max-w-full", message.role === "system" && "mx-auto border-y bg-muted/20 px-4 py-3"), children: [_jsx(AgentMessageMeta, { role: message.role, metadata: message.metadata, state: message.state }), _jsxs("div", { "data-slot": "agent-message-content", className: cn("flex w-full min-w-0 flex-col gap-2 text-sm", message.role === "system" && "text-muted-foreground"), children: [_jsx(AgentAttachmentsList, { attachments: message.attachments }), message.redaction ? (_jsx(RedactedNotice, { redaction: message.redaction })) : (parts.map((part, index) => (_jsx(AgentMessagePartView, { part: part, role: message.role, toolActions: toolActions, onToolApprovalChoice: onToolApprovalChoice }, `${message.id}-${part.type}-${index}`)))), _jsx(AgentSourcesList, { sources: message.sources }), message.state && message.state !== "idle" && message.state !== "streaming" && (_jsx(AgentMessageStateNotice, { state: message.state, actions: message.state === "retryable" ? retryAction : undefined }))] })] }) }));
102
98
  }
103
99
  export { AgentAttachmentsList, AgentMessage, AgentMessageStateNotice, AgentSourcesList, AgentToolCall, };
@@ -9,7 +9,7 @@ export type AgentThreadStateCopy = {
9
9
  declare function AgentThreadStateBanner({ state, title, description, actions, }: AgentThreadStateCopy & {
10
10
  state: Exclude<AgentWorkState, "idle" | "empty">;
11
11
  }): React.JSX.Element;
12
- declare function AgentThreadEmptyState({ title, description, actions, }: AgentThreadStateCopy): React.JSX.Element;
12
+ declare function AgentThreadEmptyState({ title, description, actions }: AgentThreadStateCopy): React.JSX.Element;
13
13
  declare function AgentThread({ messages, state, stateCopy, emptyState, toolActions, retryAction, onToolApprovalChoice, maxMessages, className, contentClassName, children, ...props }: Omit<React.ComponentProps<typeof Conversation>, "children"> & {
14
14
  messages: AgentMessageModel[];
15
15
  state?: AgentWorkState;
@@ -1 +1 @@
1
- {"version":3,"file":"agent-thread.d.ts","sourceRoot":"","sources":["../../src/components/agent-thread.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,OAAO,EACL,YAAY,EAEb,MAAM,uCAAuC,CAAA;AAC9C,OAAO,EAEL,KAAK,iBAAiB,EACtB,KAAK,gCAAgC,EACrC,KAAK,cAAc,EACpB,MAAM,4BAA4B,CAAA;AAMnC,MAAM,MAAM,oBAAoB,GAAG;IACjC,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACvB,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC7B,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;CAC1B,CAAA;AAsCD,iBAAS,sBAAsB,CAAC,EAC9B,KAAK,EACL,KAAK,EACL,WAAW,EACX,OAAO,GACR,EAAE,oBAAoB,GAAG;IACxB,KAAK,EAAE,OAAO,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,CAAA;CACjD,qBAcA;AAED,iBAAS,qBAAqB,CAAC,EAC7B,KAAK,EACL,WAAW,EACX,OAAO,GACR,EAAE,oBAAoB,qBAYtB;AAiBD,iBAAS,WAAW,CAAC,EACnB,QAAQ,EACR,KAAc,EACd,SAAS,EACT,UAAU,EACV,WAAW,EACX,WAAW,EACX,oBAAoB,EACpB,WAA2C,EAC3C,SAAS,EACT,gBAAgB,EAChB,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,YAAY,CAAC,EAAE,UAAU,CAAC,GAAG;IAC/D,QAAQ,EAAE,iBAAiB,EAAE,CAAA;IAC7B,KAAK,CAAC,EAAE,cAAc,CAAA;IACtB,SAAS,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,cAAc,EAAE,MAAM,CAAC,EAAE,oBAAoB,CAAC,CAAC,CAAA;IAClF,UAAU,CAAC,EAAE,oBAAoB,CAAA;IACjC,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC,CAAA;IAC7C,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC7B,oBAAoB,CAAC,EAAE,gCAAgC,CAAA;IACvD,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;CAC3B,qBAqDA;AAED,OAAO,EAAE,WAAW,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,CAAA"}
1
+ {"version":3,"file":"agent-thread.d.ts","sourceRoot":"","sources":["../../src/components/agent-thread.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,YAAY,EAAuB,MAAM,uCAAuC,CAAC;AAC1F,OAAO,EAEL,KAAK,iBAAiB,EACtB,KAAK,gCAAgC,EACrC,KAAK,cAAc,EACpB,MAAM,4BAA4B,CAAC;AAMpC,MAAM,MAAM,oBAAoB,GAAG;IACjC,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC9B,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B,CAAC;AAyCF,iBAAS,sBAAsB,CAAC,EAC9B,KAAK,EACL,KAAK,EACL,WAAW,EACX,OAAO,GACR,EAAE,oBAAoB,GAAG;IACxB,KAAK,EAAE,OAAO,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC;CAClD,qBAcA;AAED,iBAAS,qBAAqB,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,EAAE,oBAAoB,qBAYnF;AAaD,iBAAS,WAAW,CAAC,EACnB,QAAQ,EACR,KAAc,EACd,SAAS,EACT,UAAU,EACV,WAAW,EACX,WAAW,EACX,oBAAoB,EACpB,WAA2C,EAC3C,SAAS,EACT,gBAAgB,EAChB,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,YAAY,CAAC,EAAE,UAAU,CAAC,GAAG;IAC/D,QAAQ,EAAE,iBAAiB,EAAE,CAAC;IAC9B,KAAK,CAAC,EAAE,cAAc,CAAC;IACvB,SAAS,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,cAAc,EAAE,MAAM,CAAC,EAAE,oBAAoB,CAAC,CAAC,CAAC;IACnF,UAAU,CAAC,EAAE,oBAAoB,CAAC;IAClC,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;IAC9C,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC9B,oBAAoB,CAAC,EAAE,gCAAgC,CAAC;IACxD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B,qBA+CA;AAED,OAAO,EAAE,WAAW,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,CAAC"}
@@ -1,6 +1,6 @@
1
1
  "use client";
2
2
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
- import { Conversation, ConversationContent, } from "./ai-elements/conversation.js";
3
+ import { Conversation, ConversationContent } from "./ai-elements/conversation.js";
4
4
  import { AgentMessage, } from "./agent-message.js";
5
5
  import { FeedbackState } from "./feedback-state.js";
6
6
  import { StateNotice } from "./state-notice.js";
@@ -41,10 +41,10 @@ function AgentThreadStateBanner({ state, title, description, actions, }) {
41
41
  const fallback = threadStateDefaults[state];
42
42
  return (_jsx(StateNotice, { "data-slot": "agent-thread-state", state: state, icon: statePresentation(state).icon, title: title ?? fallback.title, description: description ?? fallback.description, actions: actions, className: "rounded-lg px-4 py-3" }));
43
43
  }
44
- function AgentThreadEmptyState({ title, description, actions, }) {
44
+ function AgentThreadEmptyState({ title, description, actions }) {
45
45
  return (_jsx(FeedbackState, { "data-slot": "agent-thread-empty-state", status: "empty", title: title ?? threadStateDefaults.empty.title, description: description ?? threadStateDefaults.empty.description, actions: actions, compact: true, className: "min-h-56 rounded-lg bg-muted/20" }));
46
46
  }
47
- function AgentThreadOverflowSummary({ omittedMessages, }) {
47
+ function AgentThreadOverflowSummary({ omittedMessages }) {
48
48
  return (_jsxs("div", { "data-slot": "agent-thread-overflow-summary", className: "rounded-md border bg-muted/30 px-3 py-2 text-muted-foreground text-xs", children: [omittedMessages, " earlier messages not shown."] }));
49
49
  }
50
50
  function AgentThread({ messages, state = "idle", stateCopy, emptyState, toolActions, retryAction, onToolApprovalChoice, maxMessages = defaultMaxAgentThreadMessages, className, contentClassName, children, ...props }) {
@@ -57,9 +57,7 @@ function AgentThread({ messages, state = "idle", stateCopy, emptyState, toolActi
57
57
  const nonIdleState = state === "idle" ? undefined : state;
58
58
  const stateForRender = nonIdleState && nonIdleState !== "empty" ? nonIdleState : undefined;
59
59
  const stateProps = nonIdleState ? stateCopy?.[nonIdleState] : undefined;
60
- const stateActions = stateForRender === "retryable"
61
- ? retryAction ?? stateProps?.actions
62
- : stateProps?.actions;
63
- return (_jsx(Conversation, { "data-slot": "agent-thread", "data-agent-state": state, className: cn("min-h-0 rounded-lg border bg-[var(--nc-chat-surface)]", className), ...props, children: _jsxs(ConversationContent, { className: cn("gap-4", contentClassName), children: [stateForRender && (_jsx(AgentThreadStateBanner, { state: stateForRender, actions: stateActions, title: stateProps?.title, description: stateProps?.description })), omittedMessages > 0 && (_jsx(AgentThreadOverflowSummary, { omittedMessages: omittedMessages })), !hasMessages ? (_jsx(AgentThreadEmptyState, { ...(stateProps ?? emptyState ?? {}) })) : (visibleMessages.map((message) => (_jsx(AgentMessage, { message: message, toolActions: toolActions, retryAction: retryAction, onToolApprovalChoice: onToolApprovalChoice }, message.id)))), children] }) }));
60
+ const stateActions = stateForRender === "retryable" ? (retryAction ?? stateProps?.actions) : stateProps?.actions;
61
+ return (_jsx(Conversation, { "data-slot": "agent-thread", "data-agent-state": state, className: cn("nc-chat-thread min-h-0", className), ...props, children: _jsxs(ConversationContent, { className: cn("nc-chat-thread-body", contentClassName), children: [stateForRender && (_jsx(AgentThreadStateBanner, { state: stateForRender, actions: stateActions, title: stateProps?.title, description: stateProps?.description })), omittedMessages > 0 && _jsx(AgentThreadOverflowSummary, { omittedMessages: omittedMessages }), !hasMessages ? (_jsx(AgentThreadEmptyState, { ...(stateProps ?? emptyState ?? {}) })) : (visibleMessages.map((message) => (_jsx(AgentMessage, { message: message, toolActions: toolActions, retryAction: retryAction, onToolApprovalChoice: onToolApprovalChoice }, message.id)))), children] }) }));
64
62
  }
65
63
  export { AgentThread, AgentThreadEmptyState, AgentThreadStateBanner };
@@ -1,7 +1,8 @@
1
1
  import * as React from "react";
2
- import { Card } from "./card";
3
- export type AgentApprovalChoice = "run" | "deny" | "session" | "always";
4
- export type AgentApprovalAlias = "approve-once" | "reject" | "approve-session" | "approve-always";
2
+ import type { Card } from "./card";
3
+ import type { AgentApprovalChoice } from "../lib/agent-contracts";
4
+ export type { AgentApprovalAlias, AgentApprovalChoice } from "../lib/agent-contracts";
5
+ export { agentApprovalAliases } from "../lib/agent-contracts";
5
6
  export type AgentApprovalRisk = "low" | "review" | "elevated" | "blocked";
6
7
  export type AgentToolApprovalRequest = {
7
8
  id: string;
@@ -12,13 +13,7 @@ export type AgentToolApprovalRequest = {
12
13
  risk?: AgentApprovalRisk;
13
14
  choices?: AgentApprovalChoice[];
14
15
  };
15
- export declare const agentApprovalAliases: {
16
- readonly always: "approve-always";
17
- readonly deny: "reject";
18
- readonly run: "approve-once";
19
- readonly session: "approve-session";
20
- };
21
- declare function AgentToolApproval({ request, title, description, choices, choiceLabels, onChoice, disabled, footer, className, ...props }: Omit<React.ComponentProps<typeof Card>, "children" | "title"> & {
16
+ declare function AgentToolApproval({ request, title, description, choices, choiceLabels, onChoice, disabled, footer, size, className, ...props }: Omit<React.ComponentProps<typeof Card>, "children" | "title"> & {
22
17
  request: AgentToolApprovalRequest;
23
18
  title?: React.ReactNode;
24
19
  description?: React.ReactNode;
@@ -1 +1 @@
1
- {"version":3,"file":"agent-tool-approval.d.ts","sourceRoot":"","sources":["../../src/components/agent-tool-approval.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAU9B,OAAO,EACL,IAAI,EAML,MAAM,mBAAmB,CAAA;AAG1B,MAAM,MAAM,mBAAmB,GAAG,KAAK,GAAG,MAAM,GAAG,SAAS,GAAG,QAAQ,CAAA;AAEvE,MAAM,MAAM,kBAAkB,GAC1B,cAAc,GACd,QAAQ,GACR,iBAAiB,GACjB,gBAAgB,CAAA;AAEpB,MAAM,MAAM,iBAAiB,GAAG,KAAK,GAAG,QAAQ,GAAG,UAAU,GAAG,SAAS,CAAA;AAEzE,MAAM,MAAM,wBAAwB,GAAG;IACrC,EAAE,EAAE,MAAM,CAAA;IACV,QAAQ,EAAE,MAAM,CAAA;IAChB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,IAAI,CAAC,EAAE,iBAAiB,CAAA;IACxB,OAAO,CAAC,EAAE,mBAAmB,EAAE,CAAA;CAChC,CAAA;AAED,eAAO,MAAM,oBAAoB;;;;;CAKmC,CAAA;AAuDpE,iBAAS,iBAAiB,CAAC,EACzB,OAAO,EACP,KAAK,EACL,WAAW,EACX,OAAiE,EACjE,YAAY,EACZ,QAAQ,EACR,QAAgB,EAChB,MAAM,EACN,SAAS,EACT,GAAG,KAAK,EACT,EAAE,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,IAAI,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,GAAG;IACjE,OAAO,EAAE,wBAAwB,CAAA;IACjC,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACvB,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC7B,OAAO,CAAC,EAAE,mBAAmB,EAAE,CAAA;IAC/B,YAAY,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,mBAAmB,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC,CAAA;IACpE,QAAQ,CAAC,EAAE,CACT,MAAM,EAAE,mBAAmB,EAC3B,OAAO,EAAE,wBAAwB,KAC9B,IAAI,CAAA;IACT,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;CACzB,qBA4DA;AAED,OAAO,EAAE,iBAAiB,EAAE,CAAA"}
1
+ {"version":3,"file":"agent-tool-approval.d.ts","sourceRoot":"","sources":["../../src/components/agent-tool-approval.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAIjE,YAAY,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AACrF,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAE7D,MAAM,MAAM,iBAAiB,GAAG,KAAK,GAAG,QAAQ,GAAG,UAAU,GAAG,SAAS,CAAC;AAE1E,MAAM,MAAM,wBAAwB,GAAG;IACrC,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,iBAAiB,CAAC;IACzB,OAAO,CAAC,EAAE,mBAAmB,EAAE,CAAC;CACjC,CAAC;AAgCF,iBAAS,iBAAiB,CAAC,EACzB,OAAO,EACP,KAAK,EACL,WAAW,EACX,OAAiE,EACjE,YAAY,EACZ,QAAQ,EACR,QAAgB,EAChB,MAAM,EACN,IAAI,EACJ,SAAS,EACT,GAAG,KAAK,EACT,EAAE,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,IAAI,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,GAAG;IACjE,OAAO,EAAE,wBAAwB,CAAC;IAClC,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC9B,OAAO,CAAC,EAAE,mBAAmB,EAAE,CAAC;IAChC,YAAY,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,mBAAmB,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;IACrE,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,mBAAmB,EAAE,OAAO,EAAE,wBAAwB,KAAK,IAAI,CAAC;IACpF,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC1B,qBAgDA;AAED,OAAO,EAAE,iBAAiB,EAAE,CAAC"}
@@ -1,16 +1,9 @@
1
1
  "use client";
2
2
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
- import { BanIcon, CheckIcon, ClockIcon, ShieldCheckIcon, } from "lucide-react";
4
- import { Badge } from "./badge.js";
5
- import { Button } from "./button.js";
6
- import { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, } from "./card.js";
3
+ import { BanIcon, CheckIcon, ClockIcon, ShieldCheckIcon } from "lucide-react";
4
+ import { agentApprovalAliases } from "../lib/agent-contracts.js";
7
5
  import { cn } from "../lib/utils.js";
8
- export const agentApprovalAliases = {
9
- always: "approve-always",
10
- deny: "reject",
11
- run: "approve-once",
12
- session: "approve-session",
13
- };
6
+ export { agentApprovalAliases } from "../lib/agent-contracts.js";
14
7
  const approvalChoiceDefaults = {
15
8
  always: {
16
9
  icon: ShieldCheckIcon,
@@ -39,26 +32,12 @@ const approvalRiskLabels = {
39
32
  low: "Low risk",
40
33
  review: "Review",
41
34
  };
42
- function getApprovalChoiceClass(choice, variant) {
43
- if (variant !== "outline") {
44
- return undefined;
45
- }
46
- if (choice === "run") {
47
- return "text-[var(--nc-tool-approval-run)]";
48
- }
49
- if (choice === "deny") {
50
- return "text-[var(--nc-tool-approval-deny)]";
51
- }
52
- if (choice === "session") {
53
- return "text-[var(--nc-tool-approval-session)]";
54
- }
55
- return "text-[var(--nc-tool-approval-always)]";
56
- }
57
- function AgentToolApproval({ request, title, description, choices = request.choices ?? ["run", "deny", "session", "always"], choiceLabels, onChoice, disabled = false, footer, className, ...props }) {
58
- return (_jsxs(Card, { "data-slot": "agent-tool-approval", "data-tool-name": request.toolName, "data-risk": request.risk, className: cn("gap-4 border-dashed bg-muted/20 shadow-none", className), ...props, children: [_jsxs(CardHeader, { className: "gap-2", children: [_jsxs("div", { className: "flex flex-wrap items-center gap-2", children: [request.risk && (_jsx(Badge, { variant: "outline", children: approvalRiskLabels[request.risk] })), _jsx(Badge, { variant: "secondary", children: request.toolName })] }), _jsx(CardTitle, { children: title ?? request.title ?? "Approval required" }), (description ?? request.description) && (_jsx(CardDescription, { children: description ?? request.description })), request.scope && (_jsx(CardDescription, { "data-slot": "agent-tool-approval-scope", children: request.scope }))] }), _jsx(CardContent, { children: _jsx("div", { "data-slot": "agent-tool-approval-choices", className: "flex flex-wrap gap-2", children: choices.map((choice) => {
59
- const defaults = approvalChoiceDefaults[choice];
60
- const Icon = defaults.icon;
61
- return (_jsxs(Button, { type: "button", variant: defaults.variant, disabled: disabled, "data-approval-choice": choice, "data-approval-alias": agentApprovalAliases[choice], className: cn(getApprovalChoiceClass(choice, defaults.variant)), onClick: () => onChoice?.(choice, request), children: [_jsx(Icon, { className: "size-4", "data-icon": true }), choiceLabels?.[choice] ?? defaults.label] }, choice));
62
- }) }) }), footer && _jsx(CardFooter, { children: footer })] }));
35
+ function AgentToolApproval({ request, title, description, choices = request.choices ?? ["run", "deny", "session", "always"], choiceLabels, onChoice, disabled = false, footer, size, className, ...props }) {
36
+ return (_jsxs("div", { "data-slot": "agent-tool-approval", "data-tool-name": request.toolName, "data-risk": request.risk, "data-size": size, className: cn("nc-approval-gate", className), ...props, children: [_jsx("span", { className: "nc-approval-gate-label", children: request.risk
37
+ ? `${approvalRiskLabels[request.risk]} · ${request.toolName}`
38
+ : request.toolName }), _jsx("span", { className: "nc-approval-gate-title", children: title ?? request.title ?? "Approval required" }), (description ?? request.description) && (_jsx("span", { className: "nc-approval-gate-copy", children: description ?? request.description })), request.scope && (_jsx("span", { "data-slot": "agent-tool-approval-scope", className: "nc-approval-gate-copy", children: request.scope })), _jsx("div", { "data-slot": "agent-tool-approval-choices", className: "nc-approval-gate-actions", children: choices.map((choice) => {
39
+ const defaults = approvalChoiceDefaults[choice];
40
+ return (_jsx("button", { type: "button", disabled: disabled, "data-approval-choice": choice, "data-approval-alias": agentApprovalAliases[choice], "data-variant": defaults.variant, onClick: () => onChoice?.(choice, request), children: choiceLabels?.[choice] ?? defaults.label }, choice));
41
+ }) }), footer] }));
63
42
  }
64
43
  export { AgentToolApproval };
@@ -1 +1 @@
1
- {"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../../src/components/ai-elements/agent.tsx"],"names":[],"mappings":"AAEA,OAAO,EACL,SAAS,EAET,aAAa,EAEd,MAAM,wBAAwB,CAAC;AAGhC,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,IAAI,CAAC;AAE/B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAK5C,MAAM,MAAM,UAAU,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;AAE/C,eAAO,MAAM,KAAK,gEAAkC,UAAU,iCAK5D,CAAC;AAEH,MAAM,MAAM,gBAAgB,GAAG,cAAc,CAAC,KAAK,CAAC,GAAG;IACrD,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,eAAO,MAAM,WAAW,6EACiB,gBAAgB,iCAmBxD,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;AAEtD,eAAO,MAAM,YAAY,gEACG,iBAAiB,iCAG5C,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG,cAAc,CAAC,KAAK,CAAC,GAAG;IAC3D,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,eAAO,MAAM,iBAAiB,0EACQ,sBAAsB,iCAU3D,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG,cAAc,CAAC,OAAO,SAAS,CAAC,CAAC;AAE/D,eAAO,MAAM,UAAU,gEAAkC,eAAe,iCAKtE,CAAC;AAEH,MAAM,MAAM,cAAc,GAAG,cAAc,CAAC,OAAO,aAAa,CAAC,GAAG;IAClE,IAAI,EAAE,IAAI,CAAC;CACZ,CAAC;AAEF,eAAO,MAAM,SAAS,6EACmB,cAAc,iCAuBtD,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG,cAAc,CAAC,KAAK,CAAC,GAAG;IACrD,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,eAAO,MAAM,WAAW,wEACY,gBAAgB,iCAUnD,CAAC"}
1
+ {"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../../src/components/ai-elements/agent.tsx"],"names":[],"mappings":"AAEA,OAAO,EACL,SAAS,EAET,aAAa,EAEd,MAAM,wBAAwB,CAAC;AAGhC,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,IAAI,CAAC;AAE/B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAK5C,MAAM,MAAM,UAAU,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;AAE/C,eAAO,MAAM,KAAK,gEAAkC,UAAU,iCAE5D,CAAC;AAEH,MAAM,MAAM,gBAAgB,GAAG,cAAc,CAAC,KAAK,CAAC,GAAG;IACrD,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,eAAO,MAAM,WAAW,6EAA+C,gBAAgB,iCAYrF,CAAC;AAEH,MAAM,MAAM,iBAAiB,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;AAEtD,eAAO,MAAM,YAAY,gEAAkC,iBAAiB,iCAE1E,CAAC;AAEH,MAAM,MAAM,sBAAsB,GAAG,cAAc,CAAC,KAAK,CAAC,GAAG;IAC3D,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,eAAO,MAAM,iBAAiB,0EACQ,sBAAsB,iCAQ3D,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG,cAAc,CAAC,OAAO,SAAS,CAAC,CAAC;AAE/D,eAAO,MAAM,UAAU,gEAAkC,eAAe,iCAKtE,CAAC;AAEH,MAAM,MAAM,cAAc,GAAG,cAAc,CAAC,OAAO,aAAa,CAAC,GAAG;IAClE,IAAI,EAAE,IAAI,CAAC;CACZ,CAAC;AAEF,eAAO,MAAM,SAAS,6EAA+C,cAAc,iCAejF,CAAC;AAEH,MAAM,MAAM,gBAAgB,GAAG,cAAc,CAAC,KAAK,CAAC,GAAG;IACrD,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,eAAO,MAAM,WAAW,wEAA0C,gBAAgB,iCAOhF,CAAC"}
@@ -12,9 +12,7 @@ export const AgentContent = memo(({ className, ...props }) => (_jsx("div", { cla
12
12
  export const AgentInstructions = memo(({ className, children, ...props }) => (_jsxs("div", { className: cn("flex flex-col gap-2", className), ...props, children: [_jsx("span", { className: "font-medium text-muted-foreground text-sm", children: "Instructions" }), _jsx("div", { className: "rounded-md bg-muted/50 p-3 text-muted-foreground text-sm", children: _jsx("p", { children: children }) })] })));
13
13
  export const AgentTools = memo(({ className, ...props }) => (_jsxs("div", { className: cn("flex flex-col gap-2", className), children: [_jsx("span", { className: "font-medium text-muted-foreground text-sm", children: "Tools" }), _jsx(Accordion, { className: "rounded-md border", ...props })] })));
14
14
  export const AgentTool = memo(({ className, tool, value, ...props }) => {
15
- const schema = "jsonSchema" in tool && tool.jsonSchema
16
- ? tool.jsonSchema
17
- : tool.inputSchema;
15
+ const schema = "jsonSchema" in tool && tool.jsonSchema ? tool.jsonSchema : tool.inputSchema;
18
16
  return (_jsxs(AccordionItem, { className: cn("border-b last:border-b-0", className), value: value, ...props, children: [_jsx(AccordionTrigger, { className: "px-3 py-2 text-sm hover:no-underline", children: tool.description ?? "No description" }), _jsx(AccordionContent, { className: "px-3 pb-3", children: _jsx("div", { className: "rounded-md bg-muted/50", children: _jsx(CodeBlock, { code: JSON.stringify(schema, null, 2), language: "json" }) }) })] }));
19
17
  });
20
18
  export const AgentOutput = memo(({ className, schema, ...props }) => (_jsxs("div", { className: cn("flex flex-col gap-2", className), ...props, children: [_jsx("span", { className: "font-medium text-muted-foreground text-sm", children: "Output Schema" }), _jsx("div", { className: "rounded-md bg-muted/50", children: _jsx(CodeBlock, { code: schema, language: "typescript" }) })] })));
@@ -1 +1 @@
1
- {"version":3,"file":"artifact.d.ts","sourceRoot":"","sources":["../../../src/components/ai-elements/artifact.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAQ7C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE/C,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAE5D,MAAM,MAAM,aAAa,GAAG,cAAc,CAAC,cAAc,CAAC,CAAC;AAE3D,eAAO,MAAM,QAAQ,GAAI,yBAAyB,aAAa,gCAQ9D,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG,cAAc,CAAC,cAAc,CAAC,CAAC;AAEjE,eAAO,MAAM,cAAc,GAAI,yBAG5B,mBAAmB,gCAQrB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG,cAAc,CAAC,OAAO,MAAM,CAAC,CAAC;AAE/D,eAAO,MAAM,aAAa,GAAI,kDAM3B,kBAAkB,gCAcpB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG,cAAc,CAAC,oBAAoB,CAAC,CAAC;AAEtE,eAAO,MAAM,aAAa,GAAI,yBAAyB,kBAAkB,gCAKxE,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG,cAAc,CAAC,oBAAoB,CAAC,CAAC;AAE5E,eAAO,MAAM,mBAAmB,GAAI,yBAGjC,wBAAwB,gCAE1B,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG,cAAc,CAAC,cAAc,CAAC,CAAC;AAElE,eAAO,MAAM,eAAe,GAAI,yBAG7B,oBAAoB,gCAEtB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG,cAAc,CAAC,OAAO,MAAM,CAAC,GAAG;IAChE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,UAAU,CAAC;CACnB,CAAC;AAEF,eAAO,MAAM,cAAc,GAAI,8EAS5B,mBAAmB,gCA+BrB,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG,cAAc,CAAC,cAAc,CAAC,CAAC;AAElE,eAAO,MAAM,eAAe,GAAI,yBAG7B,oBAAoB,gCAEtB,CAAC"}
1
+ {"version":3,"file":"artifact.d.ts","sourceRoot":"","sources":["../../../src/components/ai-elements/artifact.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAG7C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE/C,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAE5D,MAAM,MAAM,aAAa,GAAG,cAAc,CAAC,cAAc,CAAC,CAAC;AAE3D,eAAO,MAAM,QAAQ,GAAI,yBAAyB,aAAa,gCAQ9D,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG,cAAc,CAAC,cAAc,CAAC,CAAC;AAEjE,eAAO,MAAM,cAAc,GAAI,yBAAyB,mBAAmB,gCAK1E,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG,cAAc,CAAC,OAAO,MAAM,CAAC,CAAC;AAE/D,eAAO,MAAM,aAAa,GAAI,kDAM3B,kBAAkB,gCAWpB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG,cAAc,CAAC,oBAAoB,CAAC,CAAC;AAEtE,eAAO,MAAM,aAAa,GAAI,yBAAyB,kBAAkB,gCAExE,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG,cAAc,CAAC,oBAAoB,CAAC,CAAC;AAE5E,eAAO,MAAM,mBAAmB,GAAI,yBAAyB,wBAAwB,gCAEpF,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG,cAAc,CAAC,cAAc,CAAC,CAAC;AAElE,eAAO,MAAM,eAAe,GAAI,yBAAyB,oBAAoB,gCAE5E,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG,cAAc,CAAC,OAAO,MAAM,CAAC,GAAG;IAChE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,UAAU,CAAC;CACnB,CAAC;AAEF,eAAO,MAAM,cAAc,GAAI,8EAS5B,mBAAmB,gCA4BrB,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG,cAAc,CAAC,cAAc,CAAC,CAAC;AAElE,eAAO,MAAM,eAAe,GAAI,yBAAyB,oBAAoB,gCAE5E,CAAC"}
@@ -1,7 +1,7 @@
1
1
  "use client";
2
2
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
3
  import { Button } from "../button.js";
4
- import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, } from "../tooltip.js";
4
+ import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from "../tooltip.js";
5
5
  import { cn } from "../../lib/utils.js";
6
6
  import { XIcon } from "lucide-react";
7
7
  export const Artifact = ({ className, ...props }) => (_jsx("div", { className: cn("flex flex-col overflow-hidden rounded-lg border bg-background shadow-sm", className), ...props }));
@@ -1 +1 @@
1
- {"version":3,"file":"attachments.d.ts","sourceRoot":"","sources":["../../../src/components/ai-elements/attachments.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"attachments.d.ts","sourceRoot":"","sources":["../../../src/components/ai-elements/attachments.tsx"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  "use client";
2
2
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
3
  import { Button } from "../button.js";
4
- import { HoverCard, HoverCardContent, HoverCardTrigger, } from "../hover-card.js";
4
+ import { HoverCard, HoverCardContent, HoverCardTrigger } from "../hover-card.js";
5
5
  import { cn } from "../../lib/utils.js";
6
6
  import { FileTextIcon, GlobeIcon, ImageIcon, Music2Icon, PaperclipIcon, VideoIcon, XIcon, } from "lucide-react";
7
7
  import { createContext, useCallback, useContext, useMemo } from "react";
@@ -119,7 +119,7 @@ export const AttachmentRemove = ({ label = "Remove", className, children, ...pro
119
119
  "[&>svg]:size-2.5",
120
120
  ], variant === "list" && ["size-8 shrink-0 rounded p-0", "[&>svg]:size-4"], className), onClick: handleClick, type: "button", variant: "ghost", ...props, children: [children ?? _jsx(XIcon, {}), _jsx("span", { className: "sr-only", children: label })] }));
121
121
  };
122
- export const AttachmentHoverCard = (props) => (_jsx(HoverCard, { ...props }));
123
- export const AttachmentHoverCardTrigger = (props) => _jsx(HoverCardTrigger, { closeDelay: 0, delay: 0, ...props });
122
+ export const AttachmentHoverCard = (props) => _jsx(HoverCard, { ...props });
123
+ export const AttachmentHoverCardTrigger = (props) => (_jsx(HoverCardTrigger, { closeDelay: 0, delay: 0, ...props }));
124
124
  export const AttachmentHoverCardContent = ({ align = "start", className, ...props }) => (_jsx(HoverCardContent, { align: align, className: cn("w-auto p-2", className), ...props }));
125
125
  export const AttachmentEmpty = ({ className, children, ...props }) => (_jsx("div", { className: cn("flex items-center justify-center p-4 text-muted-foreground text-sm", className), ...props, children: children ?? "No attachments" }));