@nadicodeai/ui 0.20.0 → 0.22.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 (350) hide show
  1. package/AGENTS.md +4 -3
  2. package/README.md +14 -21
  3. package/dist/agents.d.ts +10 -0
  4. package/dist/agents.d.ts.map +1 -0
  5. package/dist/agents.js +9 -0
  6. package/dist/components/badge.d.ts +1 -1
  7. package/dist/components/brand-icons/apple.d.ts +18 -0
  8. package/dist/components/brand-icons/apple.d.ts.map +1 -0
  9. package/dist/components/brand-icons/apple.js +22 -0
  10. package/dist/components/brand-icons/brand-icon.d.ts +22 -0
  11. package/dist/components/brand-icons/brand-icon.d.ts.map +1 -0
  12. package/dist/components/brand-icons/brand-icon.js +26 -0
  13. package/dist/components/brand-icons/linux.d.ts +18 -0
  14. package/dist/components/brand-icons/linux.d.ts.map +1 -0
  15. package/dist/components/brand-icons/linux.js +25 -0
  16. package/dist/components/brand-icons/windows.d.ts +18 -0
  17. package/dist/components/brand-icons/windows.d.ts.map +1 -0
  18. package/dist/components/brand-icons/windows.js +22 -0
  19. package/dist/components/brand-icons.d.ts +5 -0
  20. package/dist/components/brand-icons.d.ts.map +1 -0
  21. package/dist/components/brand-icons.js +10 -0
  22. package/dist/components/button.d.ts +1 -1
  23. package/dist/components/button.js +1 -1
  24. package/dist/components/card-marketing.js +2 -2
  25. package/dist/components/card.d.ts +4 -3
  26. package/dist/components/card.d.ts.map +1 -1
  27. package/dist/components/card.js +12 -2
  28. package/dist/components/chart-breakdown-table.js +1 -1
  29. package/dist/components/chart-bullet-bar.d.ts +18 -2
  30. package/dist/components/chart-bullet-bar.d.ts.map +1 -1
  31. package/dist/components/chart-bullet-bar.js +62 -9
  32. package/dist/components/chart-date-range-control.d.ts +11 -1
  33. package/dist/components/chart-date-range-control.d.ts.map +1 -1
  34. package/dist/components/chart-date-range-control.js +13 -3
  35. package/dist/components/chart-entity-colors.d.ts +7 -1
  36. package/dist/components/chart-entity-colors.d.ts.map +1 -1
  37. package/dist/components/chart-entity-colors.js +7 -1
  38. package/dist/components/chart-kpi-stat.d.ts.map +1 -1
  39. package/dist/components/chart-kpi-stat.js +1 -1
  40. package/dist/components/chart-time-series.d.ts.map +1 -1
  41. package/dist/components/chart-time-series.js +62 -4
  42. package/dist/components/chart.js +2 -2
  43. package/dist/components/code-editor-mockup.js +1 -1
  44. package/dist/components/nav-bar.js +1 -1
  45. package/dist/components/radio-group.d.ts +1 -1
  46. package/dist/components/radio-group.d.ts.map +1 -1
  47. package/dist/components/radio-group.js +2 -2
  48. package/dist/components/theme-mode-switcher.d.ts +10 -3
  49. package/dist/components/theme-mode-switcher.d.ts.map +1 -1
  50. package/dist/components/theme-mode-switcher.js +14 -7
  51. package/dist/components/use-case-bento.d.ts +2 -4
  52. package/dist/components/use-case-bento.d.ts.map +1 -1
  53. package/dist/components/use-case-bento.js +2 -3
  54. package/dist/eslint/index.js +91 -0
  55. package/dist/eslint/rules/jsx-class-utility.js +231 -0
  56. package/dist/eslint/rules/no-deprecated-zod-api.js +156 -0
  57. package/dist/eslint/rules/no-design-system-src-import.js +11 -0
  58. package/dist/eslint/rules/no-invalid-token-utility.js +46 -0
  59. package/dist/eslint/rules/no-native-visible-control.js +86 -0
  60. package/dist/eslint/rules/no-raw-color-utility.js +109 -0
  61. package/dist/eslint/rules/no-raw-focus-ring-width.js +30 -0
  62. package/dist/eslint/rules/no-raw-logo-import.js +41 -0
  63. package/dist/eslint/rules/no-shadcn-appearance-override.js +191 -0
  64. package/dist/eslint/rules/no-token-category-bypass.js +53 -0
  65. package/dist/eslint/rules/no-ui-src-import.js +10 -0
  66. package/dist/eslint/rules/no-unpinned-vercel-functions-import.js +100 -0
  67. package/dist/eslint/rules/src-import-boundary.js +207 -0
  68. package/dist/hooks/index.d.ts +0 -1
  69. package/dist/hooks/index.d.ts.map +1 -1
  70. package/dist/hooks/index.js +0 -1
  71. package/dist/index.d.ts +1 -16
  72. package/dist/index.d.ts.map +1 -1
  73. package/dist/index.js +1 -16
  74. package/dist/internal/assistant-ui/attachment.d.ts +5 -0
  75. package/dist/internal/assistant-ui/attachment.d.ts.map +1 -0
  76. package/dist/internal/assistant-ui/attachment.js +93 -0
  77. package/dist/internal/assistant-ui/follow-up-suggestions.d.ts +3 -0
  78. package/dist/internal/assistant-ui/follow-up-suggestions.d.ts.map +1 -0
  79. package/dist/internal/assistant-ui/follow-up-suggestions.js +8 -0
  80. package/dist/internal/assistant-ui/markdown-text.d.ts +2 -0
  81. package/dist/internal/assistant-ui/markdown-text.d.ts.map +1 -0
  82. package/dist/internal/assistant-ui/markdown-text.js +54 -0
  83. package/dist/internal/assistant-ui/reasoning.d.ts +31 -0
  84. package/dist/internal/assistant-ui/reasoning.d.ts.map +1 -0
  85. package/dist/internal/assistant-ui/reasoning.js +118 -0
  86. package/dist/internal/assistant-ui/thread.d.ts +26 -0
  87. package/dist/internal/assistant-ui/thread.d.ts.map +1 -0
  88. package/dist/internal/assistant-ui/thread.js +118 -0
  89. package/dist/internal/assistant-ui/tool-fallback.d.ts +10 -0
  90. package/dist/internal/assistant-ui/tool-fallback.d.ts.map +1 -0
  91. package/dist/internal/assistant-ui/tool-fallback.js +163 -0
  92. package/dist/internal/assistant-ui/tool-group.d.ts +18 -0
  93. package/dist/internal/assistant-ui/tool-group.d.ts.map +1 -0
  94. package/dist/internal/assistant-ui/tool-group.js +44 -0
  95. package/dist/internal/assistant-ui/tooltip-icon-button.d.ts +8 -0
  96. package/dist/internal/assistant-ui/tooltip-icon-button.d.ts.map +1 -0
  97. package/dist/internal/assistant-ui/tooltip-icon-button.js +10 -0
  98. package/dist/styles/globals.css +3 -209
  99. package/docs/agents/nadicodeai-ui.md +4 -6
  100. package/docs/component-classification.md +1 -1
  101. package/docs/consuming-cross-repo.md +32 -3
  102. package/docs/contract.md +16 -6
  103. package/docs/migration/base-ui-migration.md +0 -11
  104. package/docs/product-compositions.md +1 -1
  105. package/llms.txt +5 -6
  106. package/package.json +17 -29
  107. package/skills/nadicodeai-ui/SKILL.md +5 -7
  108. package/dist/ai-elements.d.ts +0 -49
  109. package/dist/ai-elements.d.ts.map +0 -1
  110. package/dist/ai-elements.js +0 -48
  111. package/dist/components/agent-avatar.d.ts +0 -7
  112. package/dist/components/agent-avatar.d.ts.map +0 -1
  113. package/dist/components/agent-avatar.js +0 -6
  114. package/dist/components/agent-chat.d.ts +0 -20
  115. package/dist/components/agent-chat.d.ts.map +0 -1
  116. package/dist/components/agent-chat.js +0 -10
  117. package/dist/components/agent-composer.d.ts +0 -56
  118. package/dist/components/agent-composer.d.ts.map +0 -1
  119. package/dist/components/agent-composer.js +0 -56
  120. package/dist/components/agent-message.d.ts +0 -117
  121. package/dist/components/agent-message.d.ts.map +0 -1
  122. package/dist/components/agent-message.js +0 -99
  123. package/dist/components/agent-thread.d.ts +0 -26
  124. package/dist/components/agent-thread.d.ts.map +0 -1
  125. package/dist/components/agent-thread.js +0 -63
  126. package/dist/components/agent-tool-approval.d.ts +0 -27
  127. package/dist/components/agent-tool-approval.d.ts.map +0 -1
  128. package/dist/components/agent-tool-approval.js +0 -43
  129. package/dist/components/ai-elements/agent.d.ts +0 -27
  130. package/dist/components/ai-elements/agent.d.ts.map +0 -1
  131. package/dist/components/ai-elements/agent.js +0 -25
  132. package/dist/components/ai-elements/artifact.d.ts +0 -24
  133. package/dist/components/ai-elements/artifact.d.ts.map +0 -1
  134. package/dist/components/ai-elements/artifact.js +0 -20
  135. package/dist/components/ai-elements/attachments.d.ts +0 -55
  136. package/dist/components/ai-elements/attachments.d.ts.map +0 -1
  137. package/dist/components/ai-elements/attachments.js +0 -125
  138. package/dist/components/ai-elements/audio-player.d.ts +0 -30
  139. package/dist/components/ai-elements/audio-player.d.ts.map +0 -1
  140. package/dist/components/ai-elements/audio-player.js +0 -41
  141. package/dist/components/ai-elements/canvas.d.ts +0 -8
  142. package/dist/components/ai-elements/canvas.d.ts.map +0 -1
  143. package/dist/components/ai-elements/canvas.js +0 -5
  144. package/dist/components/ai-elements/chain-of-thought.d.ts +0 -30
  145. package/dist/components/ai-elements/chain-of-thought.d.ts.map +0 -1
  146. package/dist/components/ai-elements/chain-of-thought.js +0 -49
  147. package/dist/components/ai-elements/checkpoint.d.ts +0 -12
  148. package/dist/components/ai-elements/checkpoint.d.ts.map +0 -1
  149. package/dist/components/ai-elements/checkpoint.js +0 -10
  150. package/dist/components/ai-elements/code-block.d.ts +0 -53
  151. package/dist/components/ai-elements/code-block.d.ts.map +0 -1
  152. package/dist/components/ai-elements/code-block.js +0 -239
  153. package/dist/components/ai-elements/commit.d.ts +0 -65
  154. package/dist/components/ai-elements/commit.d.ts.map +0 -1
  155. package/dist/components/ai-elements/commit.js +0 -83
  156. package/dist/components/ai-elements/confirmation.d.ts +0 -50
  157. package/dist/components/ai-elements/confirmation.d.ts.map +0 -1
  158. package/dist/components/ai-elements/confirmation.js +0 -57
  159. package/dist/components/ai-elements/connection.d.ts +0 -6
  160. package/dist/components/ai-elements/connection.d.ts.map +0 -1
  161. package/dist/components/ai-elements/connection.js +0 -10
  162. package/dist/components/ai-elements/context.d.ts +0 -33
  163. package/dist/components/ai-elements/context.d.ts.map +0 -1
  164. package/dist/components/ai-elements/context.js +0 -147
  165. package/dist/components/ai-elements/controls.d.ts +0 -5
  166. package/dist/components/ai-elements/controls.d.ts.map +0 -1
  167. package/dist/components/ai-elements/controls.js +0 -5
  168. package/dist/components/ai-elements/conversation.d.ts +0 -24
  169. package/dist/components/ai-elements/conversation.d.ts.map +0 -1
  170. package/dist/components/ai-elements/conversation.js +0 -41
  171. package/dist/components/ai-elements/edge.d.ts +0 -6
  172. package/dist/components/ai-elements/edge.d.ts.map +0 -1
  173. package/dist/components/ai-elements/edge.js +0 -88
  174. package/dist/components/ai-elements/environment-variables.d.ts +0 -39
  175. package/dist/components/ai-elements/environment-variables.d.ts.map +0 -1
  176. package/dist/components/ai-elements/environment-variables.js +0 -60
  177. package/dist/components/ai-elements/file-tree.d.ts +0 -27
  178. package/dist/components/ai-elements/file-tree.d.ts.map +0 -1
  179. package/dist/components/ai-elements/file-tree.js +0 -73
  180. package/dist/components/ai-elements/image.d.ts +0 -7
  181. package/dist/components/ai-elements/image.d.ts.map +0 -1
  182. package/dist/components/ai-elements/image.js +0 -3
  183. package/dist/components/ai-elements/inline-citation.d.ts +0 -39
  184. package/dist/components/ai-elements/inline-citation.d.ts.map +0 -1
  185. package/dist/components/ai-elements/inline-citation.js +0 -86
  186. package/dist/components/ai-elements/jsx-preview.d.ts +0 -30
  187. package/dist/components/ai-elements/jsx-preview.d.ts.map +0 -1
  188. package/dist/components/ai-elements/jsx-preview.js +0 -159
  189. package/dist/components/ai-elements/message.d.ts +0 -38
  190. package/dist/components/ai-elements/message.d.ts.map +0 -1
  191. package/dist/components/ai-elements/message.js +0 -91
  192. package/dist/components/ai-elements/mic-selector.d.ts +0 -46
  193. package/dist/components/ai-elements/mic-selector.d.ts.map +0 -1
  194. package/dist/components/ai-elements/mic-selector.js +0 -180
  195. package/dist/components/ai-elements/model-selector.d.ts +0 -36
  196. package/dist/components/ai-elements/model-selector.d.ts.map +0 -1
  197. package/dist/components/ai-elements/model-selector.js +0 -18
  198. package/dist/components/ai-elements/node.d.ts +0 -22
  199. package/dist/components/ai-elements/node.d.ts.map +0 -1
  200. package/dist/components/ai-elements/node.js +0 -12
  201. package/dist/components/ai-elements/open-in-chat.d.ts +0 -27
  202. package/dist/components/ai-elements/open-in-chat.d.ts.map +0 -1
  203. package/dist/components/ai-elements/open-in-chat.js +0 -81
  204. package/dist/components/ai-elements/package-info.d.ts +0 -30
  205. package/dist/components/ai-elements/package-info.d.ts.map +0 -1
  206. package/dist/components/ai-elements/package-info.js +0 -50
  207. package/dist/components/ai-elements/panel.d.ts +0 -6
  208. package/dist/components/ai-elements/panel.d.ts.map +0 -1
  209. package/dist/components/ai-elements/panel.js +0 -5
  210. package/dist/components/ai-elements/persona.d.ts +0 -49
  211. package/dist/components/ai-elements/persona.d.ts.map +0 -1
  212. package/dist/components/ai-elements/persona.js +0 -175
  213. package/dist/components/ai-elements/plan.d.ts +0 -27
  214. package/dist/components/ai-elements/plan.d.ts.map +0 -1
  215. package/dist/components/ai-elements/plan.js +0 -34
  216. package/dist/components/ai-elements/prompt-input.d.ts +0 -149
  217. package/dist/components/ai-elements/prompt-input.d.ts.map +0 -1
  218. package/dist/components/ai-elements/prompt-input.js +0 -704
  219. package/dist/components/ai-elements/queue.d.ts +0 -62
  220. package/dist/components/ai-elements/queue.d.ts.map +0 -1
  221. package/dist/components/ai-elements/queue.js +0 -24
  222. package/dist/components/ai-elements/reasoning.d.ts +0 -27
  223. package/dist/components/ai-elements/reasoning.d.ts.map +0 -1
  224. package/dist/components/ai-elements/reasoning.js +0 -92
  225. package/dist/components/ai-elements/sandbox.d.ts +0 -25
  226. package/dist/components/ai-elements/sandbox.d.ts.map +0 -1
  227. package/dist/components/ai-elements/sandbox.js +0 -15
  228. package/dist/components/ai-elements/schema-display.d.ts +0 -56
  229. package/dist/components/ai-elements/schema-display.d.ts.map +0 -1
  230. package/dist/components/ai-elements/schema-display.js +0 -90
  231. package/dist/components/ai-elements/shimmer.d.ts +0 -10
  232. package/dist/components/ai-elements/shimmer.d.ts.map +0 -1
  233. package/dist/components/ai-elements/shimmer.js +0 -11
  234. package/dist/components/ai-elements/snippet.d.ts +0 -19
  235. package/dist/components/ai-elements/snippet.d.ts.map +0 -1
  236. package/dist/components/ai-elements/snippet.js +0 -32
  237. package/dist/components/ai-elements/sources.d.ts +0 -13
  238. package/dist/components/ai-elements/sources.d.ts.map +0 -1
  239. package/dist/components/ai-elements/sources.js +0 -9
  240. package/dist/components/ai-elements/speech-input.d.ts +0 -55
  241. package/dist/components/ai-elements/speech-input.d.ts.map +0 -1
  242. package/dist/components/ai-elements/speech-input.js +0 -187
  243. package/dist/components/ai-elements/stack-trace.d.ts +0 -38
  244. package/dist/components/ai-elements/stack-trace.d.ts.map +0 -1
  245. package/dist/components/ai-elements/stack-trace.js +0 -181
  246. package/dist/components/ai-elements/suggestion.d.ts +0 -11
  247. package/dist/components/ai-elements/suggestion.d.ts.map +0 -1
  248. package/dist/components/ai-elements/suggestion.js +0 -13
  249. package/dist/components/ai-elements/task.d.ts +0 -15
  250. package/dist/components/ai-elements/task.d.ts.map +0 -1
  251. package/dist/components/ai-elements/task.js +0 -10
  252. package/dist/components/ai-elements/terminal.d.ts +0 -28
  253. package/dist/components/ai-elements/terminal.d.ts.map +0 -1
  254. package/dist/components/ai-elements/terminal.js +0 -55
  255. package/dist/components/ai-elements/test-results.d.ts +0 -59
  256. package/dist/components/ai-elements/test-results.d.ts.map +0 -1
  257. package/dist/components/ai-elements/test-results.js +0 -98
  258. package/dist/components/ai-elements/tool.d.ts +0 -32
  259. package/dist/components/ai-elements/tool.d.ts.map +0 -1
  260. package/dist/components/ai-elements/tool.js +0 -49
  261. package/dist/components/ai-elements/toolbar.d.ts +0 -6
  262. package/dist/components/ai-elements/toolbar.d.ts.map +0 -1
  263. package/dist/components/ai-elements/toolbar.js +0 -5
  264. package/dist/components/ai-elements/transcription.d.ts +0 -17
  265. package/dist/components/ai-elements/transcription.d.ts.map +0 -1
  266. package/dist/components/ai-elements/transcription.js +0 -36
  267. package/dist/components/ai-elements/voice-selector.d.ts +0 -65
  268. package/dist/components/ai-elements/voice-selector.d.ts.map +0 -1
  269. package/dist/components/ai-elements/voice-selector.js +0 -224
  270. package/dist/components/ai-elements/web-preview.d.ts +0 -35
  271. package/dist/components/ai-elements/web-preview.d.ts.map +0 -1
  272. package/dist/components/ai-elements/web-preview.js +0 -66
  273. package/dist/components/artifact-panel.d.ts +0 -130
  274. package/dist/components/artifact-panel.d.ts.map +0 -1
  275. package/dist/components/artifact-panel.js +0 -180
  276. package/dist/components/attachment.d.ts +0 -24
  277. package/dist/components/attachment.d.ts.map +0 -1
  278. package/dist/components/attachment.js +0 -68
  279. package/dist/components/bubble.d.ts +0 -17
  280. package/dist/components/bubble.d.ts.map +0 -1
  281. package/dist/components/bubble.js +0 -59
  282. package/dist/components/demo-surface.d.ts +0 -34
  283. package/dist/components/demo-surface.d.ts.map +0 -1
  284. package/dist/components/demo-surface.js +0 -21
  285. package/dist/components/files-preview.d.ts +0 -36
  286. package/dist/components/files-preview.d.ts.map +0 -1
  287. package/dist/components/files-preview.js +0 -85
  288. package/dist/components/marker.d.ts +0 -11
  289. package/dist/components/marker.d.ts.map +0 -1
  290. package/dist/components/marker.js +0 -34
  291. package/dist/components/message-scroller.d.ts +0 -17
  292. package/dist/components/message-scroller.d.ts.map +0 -1
  293. package/dist/components/message-scroller.js +0 -29
  294. package/dist/components/message.d.ts +0 -11
  295. package/dist/components/message.d.ts.map +0 -1
  296. package/dist/components/message.js +0 -21
  297. package/dist/components/state-notice.d.ts +0 -13
  298. package/dist/components/state-notice.d.ts.map +0 -1
  299. package/dist/components/state-notice.js +0 -8
  300. package/dist/components/watch-it-work-band.d.ts +0 -12
  301. package/dist/components/watch-it-work-band.d.ts.map +0 -1
  302. package/dist/components/watch-it-work-band.js +0 -8
  303. package/dist/hooks/use-controllable-state.d.ts +0 -9
  304. package/dist/hooks/use-controllable-state.d.ts.map +0 -1
  305. package/dist/hooks/use-controllable-state.js +0 -23
  306. package/dist/lib/agent-attachment.d.ts +0 -11
  307. package/dist/lib/agent-attachment.d.ts.map +0 -1
  308. package/dist/lib/agent-attachment.js +0 -19
  309. package/dist/lib/agent-contracts.d.ts +0 -132
  310. package/dist/lib/agent-contracts.d.ts.map +0 -1
  311. package/dist/lib/agent-contracts.js +0 -6
  312. package/dist/lib/agent-state.d.ts +0 -22
  313. package/dist/lib/agent-state.d.ts.map +0 -1
  314. package/dist/lib/agent-state.js +0 -96
  315. package/dist/lib/agent-work-state.d.ts +0 -36
  316. package/dist/lib/agent-work-state.d.ts.map +0 -1
  317. package/dist/lib/agent-work-state.js +0 -36
  318. package/dist/lib/message-scroller-primitive/components.d.ts +0 -17
  319. package/dist/lib/message-scroller-primitive/components.d.ts.map +0 -1
  320. package/dist/lib/message-scroller-primitive/components.js +0 -204
  321. package/dist/lib/message-scroller-primitive/geometry.d.ts +0 -51
  322. package/dist/lib/message-scroller-primitive/geometry.d.ts.map +0 -1
  323. package/dist/lib/message-scroller-primitive/geometry.js +0 -199
  324. package/dist/lib/message-scroller-primitive/index.d.ts +0 -12
  325. package/dist/lib/message-scroller-primitive/index.d.ts.map +0 -1
  326. package/dist/lib/message-scroller-primitive/index.js +0 -12
  327. package/dist/lib/message-scroller-primitive/stores.d.ts +0 -6
  328. package/dist/lib/message-scroller-primitive/stores.d.ts.map +0 -1
  329. package/dist/lib/message-scroller-primitive/stores.js +0 -53
  330. package/dist/lib/message-scroller-primitive/types.d.ts +0 -88
  331. package/dist/lib/message-scroller-primitive/types.d.ts.map +0 -1
  332. package/dist/lib/message-scroller-primitive/types.js +0 -40
  333. package/dist/lib/message-scroller-primitive/use-message-scroller-commands.d.ts +0 -19
  334. package/dist/lib/message-scroller-primitive/use-message-scroller-commands.d.ts.map +0 -1
  335. package/dist/lib/message-scroller-primitive/use-message-scroller-commands.js +0 -188
  336. package/dist/lib/message-scroller-primitive/use-message-scroller-controller.d.ts +0 -7
  337. package/dist/lib/message-scroller-primitive/use-message-scroller-controller.d.ts.map +0 -1
  338. package/dist/lib/message-scroller-primitive/use-message-scroller-controller.js +0 -506
  339. package/dist/lib/message-scroller-primitive/use-message-scroller-refs.d.ts +0 -49
  340. package/dist/lib/message-scroller-primitive/use-message-scroller-refs.d.ts.map +0 -1
  341. package/dist/lib/message-scroller-primitive/use-message-scroller-refs.js +0 -90
  342. package/dist/lib/message-scroller-primitive/use-render.d.ts +0 -22
  343. package/dist/lib/message-scroller-primitive/use-render.d.ts.map +0 -1
  344. package/dist/lib/message-scroller-primitive/use-render.js +0 -113
  345. package/dist/lib/message-scroller-primitive/utils.d.ts +0 -4
  346. package/dist/lib/message-scroller-primitive/utils.d.ts.map +0 -1
  347. package/dist/lib/message-scroller-primitive/utils.js +0 -9
  348. package/docs/agent-work-surfaces.md +0 -132
  349. package/docs/migration/ai-elements-vendoring.md +0 -29
  350. package/docs/terminal-tui-semantics.md +0 -172
@@ -1 +0,0 @@
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,48 +0,0 @@
1
- export * from "./components/ai-elements/agent.js";
2
- export * from "./components/ai-elements/artifact.js";
3
- export * from "./components/ai-elements/attachments.js";
4
- export * from "./components/ai-elements/audio-player.js";
5
- export * from "./components/ai-elements/canvas.js";
6
- export * from "./components/ai-elements/chain-of-thought.js";
7
- export * from "./components/ai-elements/checkpoint.js";
8
- export * from "./components/ai-elements/code-block.js";
9
- export * from "./components/ai-elements/commit.js";
10
- export * from "./components/ai-elements/confirmation.js";
11
- export * from "./components/ai-elements/connection.js";
12
- export * from "./components/ai-elements/context.js";
13
- export * from "./components/ai-elements/controls.js";
14
- export * from "./components/ai-elements/conversation.js";
15
- export * from "./components/ai-elements/edge.js";
16
- export * from "./components/ai-elements/environment-variables.js";
17
- export * from "./components/ai-elements/file-tree.js";
18
- export * from "./components/ai-elements/image.js";
19
- export * from "./components/ai-elements/inline-citation.js";
20
- export * from "./components/ai-elements/jsx-preview.js";
21
- export * from "./components/ai-elements/message.js";
22
- export * from "./components/ai-elements/mic-selector.js";
23
- export * from "./components/ai-elements/model-selector.js";
24
- export * from "./components/ai-elements/node.js";
25
- export * from "./components/ai-elements/open-in-chat.js";
26
- export * from "./components/ai-elements/package-info.js";
27
- export * from "./components/ai-elements/panel.js";
28
- export * from "./components/ai-elements/persona.js";
29
- export * from "./components/ai-elements/plan.js";
30
- export * from "./components/ai-elements/prompt-input.js";
31
- export * from "./components/ai-elements/queue.js";
32
- export * from "./components/ai-elements/reasoning.js";
33
- export * from "./components/ai-elements/sandbox.js";
34
- export * from "./components/ai-elements/schema-display.js";
35
- export * from "./components/ai-elements/shimmer.js";
36
- export * from "./components/ai-elements/snippet.js";
37
- export * from "./components/ai-elements/sources.js";
38
- export * from "./components/ai-elements/speech-input.js";
39
- export * from "./components/ai-elements/stack-trace.js";
40
- export * from "./components/ai-elements/suggestion.js";
41
- export * from "./components/ai-elements/task.js";
42
- export * from "./components/ai-elements/terminal.js";
43
- export * from "./components/ai-elements/test-results.js";
44
- export * from "./components/ai-elements/tool.js";
45
- export * from "./components/ai-elements/toolbar.js";
46
- export * from "./components/ai-elements/transcription.js";
47
- export * from "./components/ai-elements/voice-selector.js";
48
- export * from "./components/ai-elements/web-preview.js";
@@ -1,7 +0,0 @@
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
@@ -1 +0,0 @@
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"}
@@ -1,6 +0,0 @@
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,20 +0,0 @@
1
- import * as React from "react";
2
- import { type AgentComposerProps } from "./agent-composer";
3
- import { type AgentThreadStateCopy } from "./agent-thread";
4
- import { type AgentMessageModel, type AgentToolApprovalDecisionHandler, type AgentWorkState } from "./agent-message";
5
- declare function AgentChat({ messages, state, stateCopy, emptyState, composer, composerProps, toolActions, retryAction, onToolApprovalChoice, maxMessages, header, className, threadClassName, ...props }: React.ComponentProps<"section"> & {
6
- messages: AgentMessageModel[];
7
- state?: AgentWorkState;
8
- stateCopy?: Partial<Record<Exclude<AgentWorkState, "idle">, AgentThreadStateCopy>>;
9
- emptyState?: AgentThreadStateCopy;
10
- composer?: React.ReactNode;
11
- composerProps?: AgentComposerProps;
12
- toolActions?: Record<string, React.ReactNode>;
13
- retryAction?: React.ReactNode;
14
- onToolApprovalChoice?: AgentToolApprovalDecisionHandler;
15
- maxMessages?: number;
16
- header?: React.ReactNode;
17
- threadClassName?: string;
18
- }): React.JSX.Element;
19
- export { AgentChat };
20
- //# sourceMappingURL=agent-chat.d.ts.map
@@ -1 +0,0 @@
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,qBA6BA;AAED,OAAO,EAAE,SAAS,EAAE,CAAC"}
@@ -1,10 +0,0 @@
1
- "use client";
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";
5
- import { cn } from "../lib/utils.js";
6
- function AgentChat({ messages, state = "idle", stateCopy, emptyState, composer, composerProps, toolActions, retryAction, onToolApprovalChoice, maxMessages, header, className, threadClassName, ...props }) {
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-card 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 ??
8
- (composerProps ? (_jsx(AgentComposer, { ...composerProps, state: state === "streaming" ? "streaming" : composerProps.state })) : null)] }));
9
- }
10
- export { AgentChat };
@@ -1,56 +0,0 @@
1
- import * as React from "react";
2
- import { PromptInput } from "./ai-elements/prompt-input";
3
- import { type AgentRedactionRule } from "./artifact-panel";
4
- import { type AgentAttachmentModel } from "./agent-message";
5
- export type AgentComposerState = "idle" | "disabled" | "submitting" | "streaming" | "error";
6
- export type AgentQueueStatus = "queued" | "running" | "blocked" | "complete" | "interrupted";
7
- export type AgentQueueItemModel = {
8
- id: string;
9
- title: string;
10
- description?: string;
11
- status?: AgentQueueStatus;
12
- attachments?: AgentAttachmentModel[];
13
- redaction?: AgentRedactionRule;
14
- };
15
- export type AgentQueueModel = {
16
- title?: string;
17
- description?: string;
18
- items: AgentQueueItemModel[];
19
- };
20
- export type AgentComposerSubmit = {
21
- value: string;
22
- attachments: AgentAttachmentModel[];
23
- queue?: AgentQueueModel;
24
- };
25
- export type AgentComposerProps = Omit<React.ComponentProps<typeof PromptInput>, "children" | "onSubmit"> & {
26
- value?: string;
27
- defaultValue?: string;
28
- placeholder?: string;
29
- attachments?: AgentAttachmentModel[];
30
- queue?: AgentQueueModel;
31
- state?: AgentComposerState;
32
- disabled?: boolean;
33
- slashMenu?: React.ReactNode;
34
- mentionMenu?: React.ReactNode;
35
- tools?: React.ReactNode;
36
- submitLabel?: string;
37
- stopLabel?: string;
38
- onValueChange?: (value: string) => void;
39
- onSubmit?: (payload: AgentComposerSubmit, event: React.FormEvent<HTMLFormElement>) => void | Promise<void>;
40
- onStop?: () => void;
41
- onRemoveAttachment?: (attachment: AgentAttachmentModel) => void;
42
- queueActions?: Record<string, React.ReactNode>;
43
- footer?: React.ReactNode;
44
- };
45
- declare function AgentComposerAttachments({ attachments, onRemoveAttachment, }: {
46
- attachments?: AgentAttachmentModel[];
47
- onRemoveAttachment?: (attachment: AgentAttachmentModel) => void;
48
- }): React.JSX.Element | null;
49
- declare function AgentQueuePanel({ queue, actions, className, }: {
50
- queue: AgentQueueModel;
51
- actions?: Record<string, React.ReactNode>;
52
- className?: string;
53
- }): React.JSX.Element | null;
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 };
56
- //# sourceMappingURL=agent-composer.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"agent-composer.d.ts","sourceRoot":"","sources":["../../src/components/agent-composer.tsx"],"names":[],"mappings":"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"}
@@ -1,56 +0,0 @@
1
- "use client";
2
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
- import { AtSignIcon, SlashIcon } from "lucide-react";
4
- import { Attachment, AttachmentInfo, AttachmentPreview, AttachmentRemove, Attachments, } from "./ai-elements/attachments.js";
5
- import { PromptInput, PromptInputBody, PromptInputFooter, PromptInputHeader, PromptInputSubmit, PromptInputTextarea, PromptInputTools, } from "./ai-elements/prompt-input.js";
6
- import { Queue, QueueItem, QueueItemContent, QueueItemDescription, QueueItemIndicator, QueueList, QueueSection, QueueSectionContent, QueueSectionLabel, QueueSectionTrigger, } from "./ai-elements/queue.js";
7
- import { getAgentRedactionText } from "./artifact-panel.js";
8
- import { Badge } from "./badge.js";
9
- import { Button } from "./button.js";
10
- import { agentAttachmentToData } from "../lib/agent-attachment.js";
11
- import { cn } from "../lib/utils.js";
12
- const queueStatusLabels = {
13
- blocked: "Blocked",
14
- complete: "Complete",
15
- interrupted: "Interrupted",
16
- queued: "Queued",
17
- running: "Running",
18
- };
19
- function composerStateToChatStatus(state) {
20
- if (state === "streaming") {
21
- return "streaming";
22
- }
23
- if (state === "submitting") {
24
- return "submitted";
25
- }
26
- if (state === "error") {
27
- return "error";
28
- }
29
- return "ready";
30
- }
31
- function AgentComposerAttachments({ attachments, onRemoveAttachment, }) {
32
- if (!attachments?.length) {
33
- return null;
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 ? () => 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))) }));
36
- }
37
- function AgentQueuePanel({ queue, actions, className, }) {
38
- if (!queue.items.length) {
39
- return null;
40
- }
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) => {
42
- const status = item.status ?? "queued";
43
- const completed = status === "complete";
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));
45
- }) })] })] }) }));
46
- }
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 }) {
48
- const isDisabled = disabled || state === "disabled" || state === "submitting";
49
- const isStreaming = state === "streaming";
50
- return (_jsxs("div", { "data-slot": "agent-composer-shell", "data-composer-state": state, "data-disabled": isDisabled ? true : undefined, className: "grid gap-3", children: [queue && _jsx(AgentQueuePanel, { queue: queue, actions: queueActions }), _jsxs(PromptInput, { "data-slot": "agent-composer", className: cn("rounded-lg border bg-popover text-popover-foreground", className), onSubmit: (message, event) => onSubmit?.({
51
- attachments,
52
- queue,
53
- value: message.text,
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 })] }));
55
- }
56
- export { AgentComposer, AgentComposerAttachments, AgentQueuePanel };
@@ -1,117 +0,0 @@
1
- import * as React from "react";
2
- import { type AgentArtifactModel, type AgentRedactionRule } from "./artifact-panel";
3
- import { type AgentApprovalChoice, type AgentToolApprovalRequest } from "./agent-tool-approval";
4
- import { type AgentWorkState } from "../lib/agent-work-state";
5
- export type AgentMessageRole = "user" | "assistant" | "system";
6
- export type { AgentWorkState };
7
- export type AgentMessageSourceKind = "human" | "agent" | "system" | "tool" | "runtime";
8
- export type AgentMessageSourceMetadata = {
9
- kind: AgentMessageSourceKind;
10
- label?: string;
11
- model?: string;
12
- sessionId?: string;
13
- timestamp?: string;
14
- };
15
- export type AgentSourceReference = {
16
- id: string;
17
- title: string;
18
- url?: string;
19
- excerpt?: string;
20
- kind?: "document" | "web" | "file" | "system";
21
- redaction?: AgentRedactionRule;
22
- };
23
- export type AgentReasoningSummary = {
24
- id: string;
25
- title?: string;
26
- summary?: string;
27
- status?: "available" | "streaming" | "redacted";
28
- durationSeconds?: number;
29
- redaction?: AgentRedactionRule;
30
- };
31
- export type AgentToolCallStatus = "pending" | "running" | "success" | "error" | "denied" | "approval-requested" | "approval-responded";
32
- export type AgentToolCallModel = {
33
- id: string;
34
- name: string;
35
- title?: string;
36
- status: AgentToolCallStatus;
37
- input?: unknown;
38
- output?: unknown;
39
- error?: string;
40
- trace?: string;
41
- approval?: AgentToolApprovalRequest;
42
- redaction?: AgentRedactionRule;
43
- };
44
- export type AgentToolApprovalDecisionHandler = (choice: AgentApprovalChoice, request: AgentToolApprovalRequest, toolCall: AgentToolCallModel) => void;
45
- export type AgentAttachmentModel = {
46
- id: string;
47
- type: "file" | "image" | "audio" | "video" | "source";
48
- name: string;
49
- mediaType?: string;
50
- url?: string;
51
- sizeLabel?: string;
52
- redaction?: AgentRedactionRule;
53
- };
54
- export type AgentMessageTextPart = {
55
- type: "text";
56
- text: string;
57
- redaction?: AgentRedactionRule;
58
- };
59
- export type AgentMessageReasoningPart = {
60
- type: "reasoning";
61
- reasoning: AgentReasoningSummary;
62
- };
63
- export type AgentMessageToolPart = {
64
- type: "tool";
65
- toolCall: AgentToolCallModel;
66
- };
67
- export type AgentMessageSourcePart = {
68
- type: "source";
69
- source: AgentSourceReference;
70
- };
71
- export type AgentMessageArtifactPart = {
72
- type: "artifact";
73
- artifact: AgentArtifactModel;
74
- };
75
- export type AgentMessageStatePart = {
76
- type: "state";
77
- state: Exclude<AgentWorkState, "empty" | "idle">;
78
- title?: string;
79
- description?: string;
80
- };
81
- export type AgentMessagePart = AgentMessageTextPart | AgentMessageReasoningPart | AgentMessageToolPart | AgentMessageSourcePart | AgentMessageArtifactPart | AgentMessageStatePart;
82
- export type AgentMessageModel = {
83
- id: string;
84
- role: AgentMessageRole;
85
- content?: string;
86
- metadata?: AgentMessageSourceMetadata;
87
- state?: Exclude<AgentWorkState, "empty">;
88
- parts?: AgentMessagePart[];
89
- attachments?: AgentAttachmentModel[];
90
- sources?: AgentSourceReference[];
91
- redaction?: AgentRedactionRule;
92
- };
93
- declare function AgentMessageStateNotice({ state, title, description, actions, }: {
94
- state: Exclude<AgentWorkState, "empty" | "idle">;
95
- title?: React.ReactNode;
96
- description?: React.ReactNode;
97
- actions?: React.ReactNode;
98
- }): React.JSX.Element;
99
- declare function AgentAttachmentsList({ attachments }: {
100
- attachments?: AgentAttachmentModel[];
101
- }): React.JSX.Element | null;
102
- declare function AgentSourcesList({ sources }: {
103
- sources?: AgentSourceReference[];
104
- }): React.JSX.Element | null;
105
- declare function AgentToolCall({ toolCall, actions, onApprovalChoice, }: {
106
- toolCall: AgentToolCallModel;
107
- actions?: React.ReactNode;
108
- onApprovalChoice?: AgentToolApprovalDecisionHandler;
109
- }): React.JSX.Element;
110
- declare function AgentMessage({ message, toolActions, retryAction, onToolApprovalChoice, className, ...props }: Omit<React.ComponentProps<"article">, "children"> & {
111
- message: AgentMessageModel;
112
- toolActions?: Record<string, React.ReactNode>;
113
- retryAction?: React.ReactNode;
114
- onToolApprovalChoice?: AgentToolApprovalDecisionHandler;
115
- }): React.JSX.Element;
116
- export { AgentAttachmentsList, AgentMessage, AgentMessageStateNotice, AgentSourcesList, AgentToolCall, };
117
- //# sourceMappingURL=agent-message.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"agent-message.d.ts","sourceRoot":"","sources":["../../src/components/agent-message.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAqB/B,OAAO,EAKL,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,EACxB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAEL,KAAK,mBAAmB,EACxB,KAAK,wBAAwB,EAC9B,MAAM,kCAAkC,CAAC;AAI1C,OAAO,EAAqB,KAAK,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAGhF,MAAM,MAAM,gBAAgB,GAAG,MAAM,GAAG,WAAW,GAAG,QAAQ,CAAC;AAE/D,YAAY,EAAE,cAAc,EAAE,CAAC;AAE/B,MAAM,MAAM,sBAAsB,GAAG,OAAO,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,GAAG,SAAS,CAAC;AAEvF,MAAM,MAAM,0BAA0B,GAAG;IACvC,IAAI,EAAE,sBAAsB,CAAC;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,UAAU,GAAG,KAAK,GAAG,MAAM,GAAG,QAAQ,CAAC;IAC9C,SAAS,CAAC,EAAE,kBAAkB,CAAC;CAChC,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,WAAW,GAAG,WAAW,GAAG,UAAU,CAAC;IAChD,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,EAAE,kBAAkB,CAAC;CAChC,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAC3B,SAAS,GACT,SAAS,GACT,SAAS,GACT,OAAO,GACP,QAAQ,GACR,oBAAoB,GACpB,oBAAoB,CAAC;AAEzB,MAAM,MAAM,kBAAkB,GAAG;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,mBAAmB,CAAC;IAC5B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,wBAAwB,CAAC;IACpC,SAAS,CAAC,EAAE,kBAAkB,CAAC;CAChC,CAAC;AAEF,MAAM,MAAM,gCAAgC,GAAG,CAC7C,MAAM,EAAE,mBAAmB,EAC3B,OAAO,EAAE,wBAAwB,EACjC,QAAQ,EAAE,kBAAkB,KACzB,IAAI,CAAC;AAEV,MAAM,MAAM,oBAAoB,GAAG;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,QAAQ,CAAC;IACtD,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,kBAAkB,CAAC;CAChC,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,kBAAkB,CAAC;CAChC,CAAC;AAEF,MAAM,MAAM,yBAAyB,GAAG;IACtC,IAAI,EAAE,WAAW,CAAC;IAClB,SAAS,EAAE,qBAAqB,CAAC;CAClC,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,kBAAkB,CAAC;CAC9B,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG;IACnC,IAAI,EAAE,QAAQ,CAAC;IACf,MAAM,EAAE,oBAAoB,CAAC;CAC9B,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG;IACrC,IAAI,EAAE,UAAU,CAAC;IACjB,QAAQ,EAAE,kBAAkB,CAAC;CAC9B,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAClC,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,EAAE,OAAO,CAAC,cAAc,EAAE,OAAO,GAAG,MAAM,CAAC,CAAC;IACjD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,gBAAgB,GACxB,oBAAoB,GACpB,yBAAyB,GACzB,oBAAoB,GACpB,sBAAsB,GACtB,wBAAwB,GACxB,qBAAqB,CAAC;AAE1B,MAAM,MAAM,iBAAiB,GAAG;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,gBAAgB,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,0BAA0B,CAAC;IACtC,KAAK,CAAC,EAAE,OAAO,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;IACzC,KAAK,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAC3B,WAAW,CAAC,EAAE,oBAAoB,EAAE,CAAC;IACrC,OAAO,CAAC,EAAE,oBAAoB,EAAE,CAAC;IACjC,SAAS,CAAC,EAAE,kBAAkB,CAAC;CAChC,CAAC;AA6BF,iBAAS,uBAAuB,CAAC,EAC/B,KAAK,EACL,KAAK,EACL,WAAW,EACX,OAAO,GACR,EAAE;IACD,KAAK,EAAE,OAAO,CAAC,cAAc,EAAE,OAAO,GAAG,MAAM,CAAC,CAAC;IACjD,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC9B,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B,qBAYA;AAED,iBAAS,oBAAoB,CAAC,EAAE,WAAW,EAAE,EAAE;IAAE,WAAW,CAAC,EAAE,oBAAoB,EAAE,CAAA;CAAE,4BAkBtF;AAED,iBAAS,gBAAgB,CAAC,EAAE,OAAO,EAAE,EAAE;IAAE,OAAO,CAAC,EAAE,oBAAoB,EAAE,CAAA;CAAE,4BAmB1E;AA2BD,iBAAS,aAAa,CAAC,EACrB,QAAQ,EACR,OAAO,EACP,gBAAgB,GACjB,EAAE;IACD,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,gBAAgB,CAAC,EAAE,gCAAgC,CAAC;CACrD,qBAgDA;AAqFD,iBAAS,YAAY,CAAC,EACpB,OAAO,EACP,WAAW,EACX,WAAW,EACX,oBAAoB,EACpB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,SAAS,CAAC,EAAE,UAAU,CAAC,GAAG;IACrD,OAAO,EAAE,iBAAiB,CAAC;IAC3B,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;CACzD,qBAqDA;AAED,OAAO,EACL,oBAAoB,EACpB,YAAY,EACZ,uBAAuB,EACvB,gBAAgB,EAChB,aAAa,GACd,CAAC"}
@@ -1,99 +0,0 @@
1
- "use client";
2
- import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
3
- import { BotIcon, InfoIcon, UserIcon } from "lucide-react";
4
- import { Attachment, AttachmentInfo, AttachmentPreview, Attachments, } from "./ai-elements/attachments.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";
10
- import { ArtifactPanel, RedactedNotice, StackTraceDisclosure, getAgentRedactionText, } from "./artifact-panel.js";
11
- import { AgentToolApproval, } from "./agent-tool-approval.js";
12
- import { Badge } from "./badge.js";
13
- import { StateNotice } from "./state-notice.js";
14
- import { agentAttachmentToData } from "../lib/agent-attachment.js";
15
- import { statePresentation } from "../lib/agent-work-state.js";
16
- import { cn } from "../lib/utils.js";
17
- const roleIcons = {
18
- assistant: BotIcon,
19
- system: InfoIcon,
20
- user: UserIcon,
21
- };
22
- const stateMeta = {
23
- empty: { label: "Empty" },
24
- fatal: { label: "Fatal" },
25
- idle: { label: "Idle" },
26
- interrupted: { label: "Interrupted" },
27
- "permission-denied": { label: "Permission denied" },
28
- queued: { label: "Queued" },
29
- retryable: { label: "Retryable" },
30
- streaming: { label: "Streaming" },
31
- };
32
- const toolStatusToAiState = {
33
- "approval-requested": "approval-requested",
34
- "approval-responded": "approval-responded",
35
- denied: "output-denied",
36
- error: "output-error",
37
- pending: "input-streaming",
38
- running: "input-available",
39
- success: "output-available",
40
- };
41
- function AgentMessageStateNotice({ state, title, description, actions, }) {
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" }));
43
- }
44
- function AgentAttachmentsList({ attachments }) {
45
- if (!attachments?.length) {
46
- return null;
47
- }
48
- return (_jsx(Attachments, { "data-slot": "agent-message-attachments", variant: "inline", className: "max-w-full", children: attachments.map((attachment) => (_jsxs(Attachment, { data: agentAttachmentToData(attachment), children: [_jsx(AttachmentPreview, {}), _jsx(AttachmentInfo, { showMediaType: true }), attachment.redaction && (_jsx("span", { className: "sr-only", children: getAgentRedactionText(attachment.redaction) }))] }, attachment.id))) }));
49
- }
50
- function AgentSourcesList({ sources }) {
51
- if (!sources?.length) {
52
- return null;
53
- }
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))) })] }));
55
- }
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." }))] }));
58
- }
59
- function AgentToolCall({ toolCall, actions, onApprovalChoice, }) {
60
- const state = toolStatusToAiState[toolCall.status];
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
62
- ? (choice, request) => onApprovalChoice(choice, request, toolCall)
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] })] }));
64
- }
65
- function AgentMessagePartView({ part, role, toolActions, onToolApprovalChoice, }) {
66
- if (part.type === "text") {
67
- if (part.redaction) {
68
- return _jsx(RedactedNotice, { redaction: part.redaction });
69
- }
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 }) }));
74
- }
75
- if (part.type === "reasoning") {
76
- return _jsx(AgentReasoningBlock, { reasoning: part.reasoning });
77
- }
78
- if (part.type === "tool") {
79
- return (_jsx(AgentToolCall, { toolCall: part.toolCall, actions: toolActions?.[part.toolCall.id], onApprovalChoice: onToolApprovalChoice }));
80
- }
81
- if (part.type === "source") {
82
- return _jsx(AgentSourcesList, { sources: [part.source] });
83
- }
84
- if (part.type === "artifact") {
85
- return _jsx(ArtifactPanel, { artifact: part.artifact });
86
- }
87
- return (_jsx(AgentMessageStateNotice, { state: part.state, title: part.title, description: part.description }));
88
- }
89
- function AgentMessageMeta({ role, metadata, state, }) {
90
- const Icon = roleIcons[role];
91
- const label = metadata?.label ?? role;
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 })] }));
93
- }
94
- function AgentMessage({ message, toolActions, retryAction, onToolApprovalChoice, className, ...props }) {
95
- const parts = message.parts ?? (message.content ? [{ text: message.content, type: "text" }] : []);
96
- const aiRole = message.role === "user" ? "user" : "assistant";
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 }))] })] }) }));
98
- }
99
- export { AgentAttachmentsList, AgentMessage, AgentMessageStateNotice, AgentSourcesList, AgentToolCall, };
@@ -1,26 +0,0 @@
1
- import * as React from "react";
2
- import { Conversation } from "./ai-elements/conversation";
3
- import { type AgentMessageModel, type AgentToolApprovalDecisionHandler, type AgentWorkState } from "./agent-message";
4
- export type AgentThreadStateCopy = {
5
- title?: React.ReactNode;
6
- description?: React.ReactNode;
7
- actions?: React.ReactNode;
8
- };
9
- declare function AgentThreadStateBanner({ state, title, description, actions, }: AgentThreadStateCopy & {
10
- state: Exclude<AgentWorkState, "idle" | "empty">;
11
- }): React.JSX.Element;
12
- declare function AgentThreadEmptyState({ title, description, actions }: AgentThreadStateCopy): React.JSX.Element;
13
- declare function AgentThread({ messages, state, stateCopy, emptyState, toolActions, retryAction, onToolApprovalChoice, maxMessages, className, contentClassName, children, ...props }: Omit<React.ComponentProps<typeof Conversation>, "children"> & {
14
- messages: AgentMessageModel[];
15
- state?: AgentWorkState;
16
- stateCopy?: Partial<Record<Exclude<AgentWorkState, "idle">, AgentThreadStateCopy>>;
17
- emptyState?: AgentThreadStateCopy;
18
- toolActions?: Record<string, React.ReactNode>;
19
- retryAction?: React.ReactNode;
20
- onToolApprovalChoice?: AgentToolApprovalDecisionHandler;
21
- maxMessages?: number;
22
- contentClassName?: string;
23
- children?: React.ReactNode;
24
- }): React.JSX.Element;
25
- export { AgentThread, AgentThreadEmptyState, AgentThreadStateBanner };
26
- //# sourceMappingURL=agent-thread.d.ts.map
@@ -1 +0,0 @@
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,63 +0,0 @@
1
- "use client";
2
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
- import { Conversation, ConversationContent } from "./ai-elements/conversation.js";
4
- import { AgentMessage, } from "./agent-message.js";
5
- import { FeedbackState } from "./feedback-state.js";
6
- import { StateNotice } from "./state-notice.js";
7
- import { statePresentation } from "../lib/agent-work-state.js";
8
- import { cn } from "../lib/utils.js";
9
- const threadStateDefaults = {
10
- empty: {
11
- description: "Start with a prompt or queue an agent task.",
12
- title: "No agent messages",
13
- },
14
- fatal: {
15
- description: "The consuming app should show its recovery action here.",
16
- title: "Unable to continue",
17
- },
18
- interrupted: {
19
- description: "The current run stopped before the agent finished.",
20
- title: "Run interrupted",
21
- },
22
- "permission-denied": {
23
- description: "This session cannot access the requested action or content.",
24
- title: "Permission denied",
25
- },
26
- queued: {
27
- description: "The next agent step is waiting for capacity or approval.",
28
- title: "Queued",
29
- },
30
- retryable: {
31
- description: "The run can be attempted again by the consuming app.",
32
- title: "Retry available",
33
- },
34
- streaming: {
35
- description: "The assistant is preparing a response.",
36
- title: "Streaming",
37
- },
38
- };
39
- const defaultMaxAgentThreadMessages = 50;
40
- function AgentThreadStateBanner({ state, title, description, actions, }) {
41
- const fallback = threadStateDefaults[state];
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
- }
44
- function AgentThreadEmptyState({ title, description, actions }) {
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
- }
47
- function AgentThreadOverflowSummary({ omittedMessages }) {
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
- }
50
- function AgentThread({ messages, state = "idle", stateCopy, emptyState, toolActions, retryAction, onToolApprovalChoice, maxMessages = defaultMaxAgentThreadMessages, className, contentClassName, children, ...props }) {
51
- const maxVisibleMessages = Number.isFinite(maxMessages)
52
- ? Math.max(0, Math.floor(maxMessages))
53
- : defaultMaxAgentThreadMessages;
54
- const visibleMessages = maxVisibleMessages > 0 ? messages.slice(-maxVisibleMessages) : [];
55
- const omittedMessages = messages.length - visibleMessages.length;
56
- const hasMessages = messages.length > 0;
57
- const nonIdleState = state === "idle" ? undefined : state;
58
- const stateForRender = nonIdleState && nonIdleState !== "empty" ? nonIdleState : undefined;
59
- const stateProps = nonIdleState ? stateCopy?.[nonIdleState] : undefined;
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] }) }));
62
- }
63
- export { AgentThread, AgentThreadEmptyState, AgentThreadStateBanner };
@@ -1,27 +0,0 @@
1
- import * as React from "react";
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";
6
- export type AgentApprovalRisk = "low" | "review" | "elevated" | "blocked";
7
- export type AgentToolApprovalRequest = {
8
- id: string;
9
- toolName: string;
10
- title?: string;
11
- description?: string;
12
- scope?: string;
13
- risk?: AgentApprovalRisk;
14
- choices?: AgentApprovalChoice[];
15
- };
16
- declare function AgentToolApproval({ request, title, description, choices, choiceLabels, onChoice, disabled, footer, size, className, ...props }: Omit<React.ComponentProps<typeof Card>, "children" | "title"> & {
17
- request: AgentToolApprovalRequest;
18
- title?: React.ReactNode;
19
- description?: React.ReactNode;
20
- choices?: AgentApprovalChoice[];
21
- choiceLabels?: Partial<Record<AgentApprovalChoice, React.ReactNode>>;
22
- onChoice?: (choice: AgentApprovalChoice, request: AgentToolApprovalRequest) => void;
23
- disabled?: boolean;
24
- footer?: React.ReactNode;
25
- }): React.JSX.Element;
26
- export { AgentToolApproval };
27
- //# sourceMappingURL=agent-tool-approval.d.ts.map
@@ -1 +0,0 @@
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"}