@adecore/agents-react 0.31.12 → 0.33.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 (409) hide show
  1. package/README.md +1 -1
  2. package/dist/agents/AccountDot.js +57 -6
  3. package/dist/agents/AgentIcon.js +88 -12
  4. package/dist/agents/ModelOptionControl.js +153 -18
  5. package/dist/agents/ProviderLogo.js +49 -4
  6. package/dist/agents/account-limits.js +17 -14
  7. package/dist/agents/accounts.js +99 -67
  8. package/dist/agents/agent-marks.js +5 -3
  9. package/dist/agents/model-name.js +42 -31
  10. package/dist/agents/model-options.js +8 -8
  11. package/dist/agents/model-requirement.js +17 -14
  12. package/dist/agents/option-words.d.ts +7 -0
  13. package/dist/agents/option-words.js +35 -0
  14. package/dist/agents/provider-paths.js +6 -6
  15. package/dist/agents/status-look.js +32 -12
  16. package/dist/chat/account-choice.d.ts +13 -0
  17. package/dist/chat/account-choice.js +90 -20
  18. package/dist/chat/actions.js +126 -59
  19. package/dist/chat/activity.js +5 -5
  20. package/dist/chat/attachments.js +74 -53
  21. package/dist/chat/bookmarks.js +58 -48
  22. package/dist/chat/chat-client.js +344 -263
  23. package/dist/chat/chat-references.js +3 -3
  24. package/dist/chat/composer-effort.d.ts +5 -0
  25. package/dist/chat/composer-effort.js +26 -0
  26. package/dist/chat/composer-send.js +13 -13
  27. package/dist/chat/drafts.js +115 -79
  28. package/dist/chat/forks.js +81 -24
  29. package/dist/chat/guards.js +15 -43
  30. package/dist/chat/index.d.ts +3 -1
  31. package/dist/chat/index.js +3 -2
  32. package/dist/chat/logic/ansi.js +170 -167
  33. package/dist/chat/logic/answers.js +2 -2
  34. package/dist/chat/logic/bookmarks.js +19 -19
  35. package/dist/chat/logic/command-looks.js +138 -96
  36. package/dist/chat/logic/context-usage.js +13 -9
  37. package/dist/chat/logic/continue-after-stop.js +15 -19
  38. package/dist/chat/logic/effort.d.ts +14 -0
  39. package/dist/chat/logic/effort.js +34 -0
  40. package/dist/chat/logic/embedded-code.js +387 -326
  41. package/dist/chat/logic/fork.js +134 -110
  42. package/dist/chat/logic/generated-image.js +54 -23
  43. package/dist/chat/logic/goal.js +28 -20
  44. package/dist/chat/logic/handback.js +6 -6
  45. package/dist/chat/logic/json.js +2 -2
  46. package/dist/chat/logic/limit.js +46 -30
  47. package/dist/chat/logic/picker-entries.d.ts +5 -3
  48. package/dist/chat/logic/picker-entries.js +83 -43
  49. package/dist/chat/logic/resume-compaction.d.ts +14 -1
  50. package/dist/chat/logic/resume-compaction.js +93 -24
  51. package/dist/chat/logic/scrubber.js +188 -136
  52. package/dist/chat/logic/thought.js +13 -16
  53. package/dist/chat/logic/thread-cards.js +60 -48
  54. package/dist/chat/logic/timeline-copy.js +30 -38
  55. package/dist/chat/logic/timeline-target.js +92 -63
  56. package/dist/chat/logic/timeline.js +499 -355
  57. package/dist/chat/logic/tool-catalog.js +54 -34
  58. package/dist/chat/logic/tools.js +106 -82
  59. package/dist/chat/logic/visual-height.js +18 -18
  60. package/dist/chat/logic/visual-viewport.js +6 -3
  61. package/dist/chat/logic/welcome.js +9 -9
  62. package/dist/chat/logic/workflow.d.ts +10 -0
  63. package/dist/chat/logic/workflow.js +130 -32
  64. package/dist/chat/mentions.js +149 -109
  65. package/dist/chat/persisted-json.js +51 -54
  66. package/dist/chat/preferences.d.ts +4 -0
  67. package/dist/chat/preferences.js +162 -84
  68. package/dist/chat/prompt-hold.js +9 -9
  69. package/dist/chat/quote.js +21 -30
  70. package/dist/chat/reading-width.js +12 -10
  71. package/dist/chat/recent-messages.js +34 -21
  72. package/dist/chat/resume-compaction-dismissals.js +25 -5
  73. package/dist/chat/runtime-modes.js +3 -3
  74. package/dist/chat/send-key.js +11 -7
  75. package/dist/chat/stash.js +89 -69
  76. package/dist/chat/subagent-conversation.js +181 -139
  77. package/dist/chat/subagent-list.js +65 -67
  78. package/dist/chat/subagent-support.js +12 -7
  79. package/dist/chat/subagent-view.js +132 -44
  80. package/dist/chat/thumbnails.js +88 -60
  81. package/dist/chat/timeline-flash.js +24 -12
  82. package/dist/chat/timeline-scroll.js +116 -86
  83. package/dist/chat/ui/AccountPill.js +126 -15
  84. package/dist/chat/ui/AnsiOutput.js +62 -6
  85. package/dist/chat/ui/BookmarkMarker.js +231 -41
  86. package/dist/chat/ui/BookmarkSubmenu.js +165 -18
  87. package/dist/chat/ui/ChatActivity.js +649 -70
  88. package/dist/chat/ui/ChatReferenceChip.js +104 -9
  89. package/dist/chat/ui/CodeBlock.js +132 -58
  90. package/dist/chat/ui/Composer.js +866 -132
  91. package/dist/chat/ui/ComposerInput.js +309 -120
  92. package/dist/chat/ui/DiffPool.js +75 -14
  93. package/dist/chat/ui/EditDiff.js +160 -21
  94. package/dist/chat/ui/FadingWords.js +32 -3
  95. package/dist/chat/ui/GoalDock.js +235 -42
  96. package/dist/chat/ui/ImageView.js +617 -61
  97. package/dist/chat/ui/LimitState.js +446 -72
  98. package/dist/chat/ui/Markdown.js +991 -173
  99. package/dist/chat/ui/MermaidBlock.js +285 -79
  100. package/dist/chat/ui/MessageActions.js +251 -39
  101. package/dist/chat/ui/ModelMarks.js +55 -5
  102. package/dist/chat/ui/Pickers.js +664 -113
  103. package/dist/chat/ui/PromptComposer.js +281 -51
  104. package/dist/chat/ui/QuoteButton.js +151 -57
  105. package/dist/chat/ui/ResumeCompactionDock.d.ts +6 -2
  106. package/dist/chat/ui/ResumeCompactionDock.js +141 -6
  107. package/dist/chat/ui/RowTime.js +59 -5
  108. package/dist/chat/ui/RunSettings.js +1744 -154
  109. package/dist/chat/ui/Scrubber.js +517 -88
  110. package/dist/chat/ui/ShellCommand.js +183 -107
  111. package/dist/chat/ui/SubagentControls.js +212 -24
  112. package/dist/chat/ui/SubagentInfo.js +170 -13
  113. package/dist/chat/ui/SubagentStopButton.js +115 -24
  114. package/dist/chat/ui/SubagentTimeline.js +357 -91
  115. package/dist/chat/ui/Timeline.js +988 -476
  116. package/dist/chat/ui/TimelineMenu.js +552 -37
  117. package/dist/chat/ui/UnifiedDiff.js +234 -27
  118. package/dist/chat/ui/UploadThumb.js +37 -7
  119. package/dist/chat/ui/VisualDialogs.js +251 -20
  120. package/dist/chat/ui/VisualFrame.js +321 -95
  121. package/dist/chat/ui/Welcome.js +72 -7
  122. package/dist/chat/ui/chips.js +1 -1
  123. package/dist/chat/ui/code-lines.js +36 -36
  124. package/dist/chat/ui/code-streaming.js +1 -1
  125. package/dist/chat/ui/code-theme.js +7 -7
  126. package/dist/chat/ui/composer/ComposerControls.js +329 -21
  127. package/dist/chat/ui/composer/ComposerMenu.js +358 -30
  128. package/dist/chat/ui/composer/DraftParts.js +185 -11
  129. package/dist/chat/ui/composer/QueuedMessages.js +138 -13
  130. package/dist/chat/ui/composer/chips.js +29 -19
  131. package/dist/chat/ui/composer/editor.js +79 -63
  132. package/dist/chat/ui/composer/insert.js +26 -12
  133. package/dist/chat/ui/composer/key-handler.js +180 -127
  134. package/dist/chat/ui/composer/keys.js +90 -73
  135. package/dist/chat/ui/composer/menu-aria.js +18 -9
  136. package/dist/chat/ui/composer/placeholder.js +78 -31
  137. package/dist/chat/ui/composer/surface.js +13 -37
  138. package/dist/chat/ui/composer/use-chat-controls.js +230 -90
  139. package/dist/chat/ui/composer/use-compaction-offer.js +50 -18
  140. package/dist/chat/ui/composer/use-composer-draft.js +65 -34
  141. package/dist/chat/ui/composer/use-composer-menus.js +478 -193
  142. package/dist/chat/ui/composer/use-composer-submit.js +251 -109
  143. package/dist/chat/ui/composer/use-continuable-turn.js +33 -6
  144. package/dist/chat/ui/composer/use-draft-files.js +245 -93
  145. package/dist/chat/ui/composer/use-effort-stepper.d.ts +13 -0
  146. package/dist/chat/ui/composer/use-effort-stepper.js +88 -0
  147. package/dist/chat/ui/composer/use-notice.js +61 -16
  148. package/dist/chat/ui/composer/use-pending-requests.js +38 -17
  149. package/dist/chat/ui/composer/use-prompt-history.js +117 -45
  150. package/dist/chat/ui/composer/use-prompt-hold.js +119 -35
  151. package/dist/chat/ui/composer/use-take-back.js +94 -72
  152. package/dist/chat/ui/diff/ApprovalReview.js +101 -23
  153. package/dist/chat/ui/diff/DiffFallbackBoundary.js +21 -13
  154. package/dist/chat/ui/diff/DiffOmitted.js +56 -6
  155. package/dist/chat/ui/diff/DiffStack.js +92 -8
  156. package/dist/chat/ui/diff/DiffUnavailable.js +56 -6
  157. package/dist/chat/ui/diff/EditorEditDiff.js +263 -51
  158. package/dist/chat/ui/diff/EditorPatchDiff.js +39 -14
  159. package/dist/chat/ui/diff/LegacyDiffPool.js +27 -10
  160. package/dist/chat/ui/diff/LegacyEditDiff.js +97 -20
  161. package/dist/chat/ui/diff/LegacyUnifiedDiff.js +172 -42
  162. package/dist/chat/ui/diff/RawDiff.js +65 -5
  163. package/dist/chat/ui/diff/ReviewDiff.js +77 -5
  164. package/dist/chat/ui/diff/diff-props.js +1 -1
  165. package/dist/chat/ui/diff/diff-source-budget.js +46 -35
  166. package/dist/chat/ui/diff/editor-edit-model.js +18 -14
  167. package/dist/chat/ui/diff/review-plan.js +63 -40
  168. package/dist/chat/ui/diff/review-settle.js +24 -9
  169. package/dist/chat/ui/diff/syntax-runtime.js +236 -201
  170. package/dist/chat/ui/diff/use-review-stack.js +146 -25
  171. package/dist/chat/ui/diff-syntax.js +70 -58
  172. package/dist/chat/ui/diff-theme.js +31 -12
  173. package/dist/chat/ui/file-links.js +39 -10
  174. package/dist/chat/ui/find-reveal.js +29 -8
  175. package/dist/chat/ui/full-diff.js +17 -12
  176. package/dist/chat/ui/highlighter.js +143 -113
  177. package/dist/chat/ui/icons.js +16 -7
  178. package/dist/chat/ui/index.js +1 -1
  179. package/dist/chat/ui/intelligent-ui/UiBlockFrame.js +556 -82
  180. package/dist/chat/ui/intelligent-ui/UiFallbackPart.js +73 -5
  181. package/dist/chat/ui/intelligent-ui/UiReply.js +666 -262
  182. package/dist/chat/ui/intelligent-ui/block-local.js +59 -31
  183. package/dist/chat/ui/intelligent-ui/chart-data.js +77 -67
  184. package/dist/chat/ui/intelligent-ui/node-text.js +77 -91
  185. package/dist/chat/ui/intelligent-ui/registry.js +46 -46
  186. package/dist/chat/ui/intelligent-ui/render-context.js +1 -1
  187. package/dist/chat/ui/intelligent-ui/renderers/base-land.js +1 -1
  188. package/dist/chat/ui/intelligent-ui/renderers/binding.js +3 -3
  189. package/dist/chat/ui/intelligent-ui/renderers/chart.js +1223 -123
  190. package/dist/chat/ui/intelligent-ui/renderers/choices.js +312 -34
  191. package/dist/chat/ui/intelligent-ui/renderers/content.js +1241 -86
  192. package/dist/chat/ui/intelligent-ui/renderers/data.js +619 -54
  193. package/dist/chat/ui/intelligent-ui/renderers/inputs.js +868 -67
  194. package/dist/chat/ui/intelligent-ui/renderers/links.js +366 -62
  195. package/dist/chat/ui/intelligent-ui/renderers/map-slots.js +118 -60
  196. package/dist/chat/ui/intelligent-ui/renderers/map-style.js +85 -78
  197. package/dist/chat/ui/intelligent-ui/renderers/map-view.js +282 -217
  198. package/dist/chat/ui/intelligent-ui/renderers/map.js +621 -69
  199. package/dist/chat/ui/intelligent-ui/renderers/place-point.js +15 -8
  200. package/dist/chat/ui/intelligent-ui/renderers/structure.js +262 -20
  201. package/dist/chat/ui/intelligent-ui/renderers/text.js +674 -49
  202. package/dist/chat/ui/intelligent-ui/reply-parts.js +24 -15
  203. package/dist/chat/ui/intelligent-ui/table-data.js +97 -57
  204. package/dist/chat/ui/intelligent-ui/tones.js +31 -31
  205. package/dist/chat/ui/intelligent-ui/use-in-view.js +30 -12
  206. package/dist/chat/ui/intelligent-ui/use-later.js +28 -13
  207. package/dist/chat/ui/intelligent-ui/use-truncated.js +45 -21
  208. package/dist/chat/ui/intelligent-ui/use-ui-links.js +296 -109
  209. package/dist/chat/ui/intelligent-ui/use-ui-queries.js +256 -246
  210. package/dist/chat/ui/markdown-blocks.js +296 -262
  211. package/dist/chat/ui/mermaid.d.ts +8 -20
  212. package/dist/chat/ui/mermaid.js +47 -84
  213. package/dist/chat/ui/quote-selection.js +32 -29
  214. package/dist/chat/ui/rehype-chips.js +35 -23
  215. package/dist/chat/ui/rehype-fade.js +28 -17
  216. package/dist/chat/ui/remark-html-as-text.js +22 -15
  217. package/dist/chat/ui/reply-context.js +1 -1
  218. package/dist/chat/ui/reveal.js +161 -72
  219. package/dist/chat/ui/rows/ForksRow.js +226 -24
  220. package/dist/chat/ui/rows/GeneratedImageRow.js +541 -87
  221. package/dist/chat/ui/rows/MessageRows.js +1706 -159
  222. package/dist/chat/ui/rows/RowContainer.js +57 -7
  223. package/dist/chat/ui/rows/Rows.js +463 -54
  224. package/dist/chat/ui/rows/SubagentRow.js +577 -60
  225. package/dist/chat/ui/rows/TaskRow.js +359 -40
  226. package/dist/chat/ui/rows/VisualRow.js +233 -11
  227. package/dist/chat/ui/rows/WorkRows.d.ts +3 -0
  228. package/dist/chat/ui/rows/WorkRows.js +1945 -164
  229. package/dist/chat/ui/rows/WorkflowRow.js +756 -37
  230. package/dist/chat/ui/rows/row-rhythm.js +27 -17
  231. package/dist/chat/ui/theme-watch.js +26 -23
  232. package/dist/chat/ui/timestamp-format.js +4 -1
  233. package/dist/chat/ui/use-diff-source-tokens.js +70 -34
  234. package/dist/chat/ui/useToggleSet.js +51 -19
  235. package/dist/chat/ui/visual-theme.js +153 -128
  236. package/dist/chat/visual-bridge.js +123 -123
  237. package/dist/chat/visual-viewport.js +94 -83
  238. package/dist/chat/visuals.js +13 -5
  239. package/dist/host-hooks.d.ts +29 -0
  240. package/dist/host-hooks.js +78 -0
  241. package/dist/host.js +120 -48
  242. package/dist/index.js +1 -1
  243. package/dist/lazy.js +38 -32
  244. package/dist/locales/en/agent-chat.d.ts +42 -0
  245. package/dist/locales/en/agent-chat.js +755 -713
  246. package/dist/locales/en/agent-prompts.js +42 -42
  247. package/dist/locales/en/agent-providers.d.ts +1 -0
  248. package/dist/locales/en/agent-providers.js +166 -165
  249. package/dist/locales/en/agent-usage.d.ts +6 -0
  250. package/dist/locales/en/agent-usage.js +129 -123
  251. package/dist/locales/nl/agent-chat.d.ts +42 -0
  252. package/dist/locales/nl/agent-chat.js +755 -713
  253. package/dist/locales/nl/agent-prompts.js +42 -42
  254. package/dist/locales/nl/agent-providers.d.ts +1 -0
  255. package/dist/locales/nl/agent-providers.js +166 -165
  256. package/dist/locales/nl/agent-usage.d.ts +6 -0
  257. package/dist/locales/nl/agent-usage.js +129 -123
  258. package/dist/locales.js +14 -14
  259. package/dist/mounted-registry.js +31 -30
  260. package/dist/port-transport.js +122 -111
  261. package/dist/prompts/index.js +1 -1
  262. package/dist/prompts/logic/focus.js +15 -14
  263. package/dist/prompts/logic/keys.js +93 -59
  264. package/dist/prompts/logic/prompts.js +27 -14
  265. package/dist/prompts/logic/subjects.js +60 -46
  266. package/dist/prompts/logic/useFocusAfterAnswer.js +60 -20
  267. package/dist/prompts/logic/usePromptSession.js +88 -77
  268. package/dist/prompts/ui/ApprovalBody.js +246 -27
  269. package/dist/prompts/ui/PromptActions.js +215 -9
  270. package/dist/prompts/ui/PromptCard.js +215 -36
  271. package/dist/prompts/ui/PromptView.js +372 -34
  272. package/dist/prompts/ui/QuestionBody.js +269 -73
  273. package/dist/providers/AccountColors.js +36 -5
  274. package/dist/providers/AccountDetail.js +683 -50
  275. package/dist/providers/AccountVariables.js +139 -32
  276. package/dist/providers/AddAccountForm.js +125 -38
  277. package/dist/providers/CliDetail.js +343 -36
  278. package/dist/providers/InstallPage.js +644 -59
  279. package/dist/providers/ProviderList.d.ts +2 -1
  280. package/dist/providers/ProviderList.js +215 -23
  281. package/dist/providers/ProvidersPane.d.ts +4 -2
  282. package/dist/providers/ProvidersPane.js +244 -64
  283. package/dist/providers/account-actions.js +54 -30
  284. package/dist/providers/index.js +1 -1
  285. package/dist/providers/install-steps.js +12 -9
  286. package/dist/providers/pane-target.d.ts +3 -0
  287. package/dist/providers/pane-target.js +34 -13
  288. package/dist/providers/parts.js +62 -12
  289. package/dist/providers/provider-abilities.js +5 -5
  290. package/dist/providers/provider-groups.js +75 -40
  291. package/dist/providers/variables.js +73 -39
  292. package/dist/scope.js +6 -6
  293. package/dist/settings/sections.js +18 -18
  294. package/dist/state/chats.js +404 -192
  295. package/dist/state/index.js +1 -1
  296. package/dist/state/provider-accounts.js +70 -47
  297. package/dist/state/providers.js +45 -16
  298. package/dist/state/usage.js +154 -77
  299. package/dist/storage.js +69 -68
  300. package/dist/testing/index.js +1 -1
  301. package/dist/testing/prompts.js +105 -67
  302. package/dist/transport.js +10 -10
  303. package/dist/ui/PlainTextarea.js +27 -3
  304. package/dist/usage/LimitsList.js +646 -40
  305. package/dist/usage/UsageBreakdown.js +879 -38
  306. package/dist/usage/UsageChart.js +311 -32
  307. package/dist/usage/UsageDialog.js +46 -4
  308. package/dist/usage/UsageLimits.js +467 -34
  309. package/dist/usage/UsageLimitsCard.js +95 -11
  310. package/dist/usage/UsagePage.js +817 -96
  311. package/dist/usage/UsagePane.js +164 -10
  312. package/dist/usage/UsageSummary.js +151 -6
  313. package/dist/usage/UsageTiles.js +164 -14
  314. package/dist/usage/format.js +32 -32
  315. package/dist/usage/index.d.ts +1 -1
  316. package/dist/usage/index.js +2 -1
  317. package/dist/usage/limit-groups.d.ts +2 -0
  318. package/dist/usage/limit-groups.js +77 -59
  319. package/dist/usage/limits.js +78 -43
  320. package/dist/usage/money.js +20 -4
  321. package/dist/usage/summary.js +85 -64
  322. package/package.json +9 -9
  323. package/src/agents/ModelOptionControl.tsx +3 -1
  324. package/src/agents/option-words.ts +27 -0
  325. package/src/chat/account-choice.ts +41 -1
  326. package/src/chat/composer-effort.ts +32 -0
  327. package/src/chat/forks.ts +4 -5
  328. package/src/chat/index.ts +3 -1
  329. package/src/chat/logic/effort.ts +32 -0
  330. package/src/chat/logic/picker-entries.ts +45 -10
  331. package/src/chat/logic/resume-compaction.ts +95 -17
  332. package/src/chat/logic/timeline.ts +11 -3
  333. package/src/chat/logic/workflow.ts +86 -4
  334. package/src/chat/preferences.ts +35 -0
  335. package/src/chat/subagent-view.ts +2 -3
  336. package/src/chat/ui/AnsiOutput.tsx +1 -2
  337. package/src/chat/ui/BookmarkSubmenu.tsx +3 -3
  338. package/src/chat/ui/ChatActivity.tsx +14 -22
  339. package/src/chat/ui/ChatReferenceChip.tsx +2 -3
  340. package/src/chat/ui/Composer.tsx +15 -7
  341. package/src/chat/ui/EditDiff.tsx +2 -3
  342. package/src/chat/ui/LimitState.tsx +2 -2
  343. package/src/chat/ui/Markdown.tsx +10 -8
  344. package/src/chat/ui/MermaidBlock.tsx +57 -49
  345. package/src/chat/ui/Pickers.tsx +49 -29
  346. package/src/chat/ui/PromptComposer.tsx +7 -9
  347. package/src/chat/ui/ResumeCompactionDock.tsx +16 -4
  348. package/src/chat/ui/RunSettings.tsx +67 -28
  349. package/src/chat/ui/Scrubber.tsx +3 -3
  350. package/src/chat/ui/ShellCommand.tsx +2 -0
  351. package/src/chat/ui/SubagentInfo.tsx +2 -3
  352. package/src/chat/ui/SubagentTimeline.tsx +12 -16
  353. package/src/chat/ui/Timeline.tsx +6 -6
  354. package/src/chat/ui/UnifiedDiff.tsx +3 -4
  355. package/src/chat/ui/VisualFrame.tsx +5 -8
  356. package/src/chat/ui/code-theme.ts +4 -4
  357. package/src/chat/ui/composer/placeholder.ts +2 -2
  358. package/src/chat/ui/composer/use-compaction-offer.ts +36 -16
  359. package/src/chat/ui/composer/use-composer-menus.ts +4 -9
  360. package/src/chat/ui/composer/use-composer-submit.ts +2 -1
  361. package/src/chat/ui/composer/use-effort-stepper.ts +56 -0
  362. package/src/chat/ui/composer/use-notice.ts +2 -2
  363. package/src/chat/ui/diff/EditorEditDiff.tsx +9 -13
  364. package/src/chat/ui/diff/LegacyEditDiff.tsx +12 -17
  365. package/src/chat/ui/diff/LegacyUnifiedDiff.tsx +13 -21
  366. package/src/chat/ui/diff/use-review-stack.ts +4 -4
  367. package/src/chat/ui/diff-theme.ts +3 -3
  368. package/src/chat/ui/file-links.ts +2 -2
  369. package/src/chat/ui/intelligent-ui/UiReply.tsx +2 -0
  370. package/src/chat/ui/intelligent-ui/renderers/chart.tsx +3 -3
  371. package/src/chat/ui/intelligent-ui/renderers/content.tsx +5 -6
  372. package/src/chat/ui/intelligent-ui/renderers/map-view.tsx +2 -1
  373. package/src/chat/ui/intelligent-ui/renderers/map.tsx +2 -1
  374. package/src/chat/ui/intelligent-ui/use-truncated.ts +16 -19
  375. package/src/chat/ui/intelligent-ui/use-ui-links.ts +3 -3
  376. package/src/chat/ui/mermaid.ts +52 -96
  377. package/src/chat/ui/rows/ForksRow.tsx +3 -5
  378. package/src/chat/ui/rows/GeneratedImageRow.tsx +2 -1
  379. package/src/chat/ui/rows/MessageRows.tsx +12 -21
  380. package/src/chat/ui/rows/SubagentRow.tsx +3 -3
  381. package/src/chat/ui/rows/TaskRow.tsx +1 -1
  382. package/src/chat/ui/rows/WorkRows.tsx +11 -6
  383. package/src/chat/ui/rows/WorkflowRow.tsx +144 -54
  384. package/src/chat/ui/useToggleSet.ts +15 -18
  385. package/src/chat/ui/visual-theme.ts +2 -3
  386. package/src/host-hooks.ts +113 -0
  387. package/src/lazy.tsx +2 -0
  388. package/src/locales/en/agent-chat.ts +142 -108
  389. package/src/locales/en/agent-prompts.ts +7 -7
  390. package/src/locales/en/agent-providers.ts +35 -34
  391. package/src/locales/en/agent-usage.ts +26 -20
  392. package/src/locales/nl/agent-chat.ts +134 -100
  393. package/src/locales/nl/agent-prompts.ts +5 -5
  394. package/src/locales/nl/agent-providers.ts +33 -32
  395. package/src/locales/nl/agent-usage.ts +25 -20
  396. package/src/providers/CliDetail.tsx +2 -1
  397. package/src/providers/InstallPage.tsx +2 -4
  398. package/src/providers/ProviderList.tsx +12 -2
  399. package/src/providers/ProvidersPane.tsx +45 -15
  400. package/src/providers/pane-target.ts +20 -4
  401. package/src/state/chats.ts +2 -2
  402. package/src/usage/LimitsList.tsx +12 -13
  403. package/src/usage/UsageBreakdown.tsx +17 -6
  404. package/src/usage/UsageLimits.tsx +2 -1
  405. package/src/usage/UsagePage.tsx +3 -3
  406. package/src/usage/index.ts +1 -1
  407. package/src/usage/limit-groups.ts +12 -0
  408. package/src/usage/limits.ts +2 -2
  409. package/src/usage/money.ts +1 -2
@@ -1,4 +1,4 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
1
+ import { c as _c } from "react/compiler-runtime";
2
2
  import { useContext } from 'react';
3
3
  import clsx from 'clsx';
4
4
  import { useTranslation } from 'react-i18next';
@@ -9,24 +9,25 @@ import { formatNumber, formatPercent } from '@adecore/ui/format';
9
9
  import { UiHeadContext } from '../render-context.js';
10
10
  import { uiEventTime, uiNodeLabel } from '../node-text.js';
11
11
  import { UI_STEP_PILL, UI_TONE_FILL, UI_TONE_ICONS, UI_TONE_PILL, UI_TONE_SURFACE, UI_TONE_TEXT } from '../tones.js';
12
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
12
13
  const STEP_ICONS = {
13
- done: CircleCheck,
14
- pending: Circle,
15
- failed: CircleX,
16
- skipped: CircleMinus
14
+ done: CircleCheck,
15
+ pending: Circle,
16
+ failed: CircleX,
17
+ skipped: CircleMinus
17
18
  };
18
19
  const STEP_TONES = {
19
- done: 'text-status-idle',
20
- running: 'text-accent',
21
- pending: 'text-text-faint',
22
- failed: 'text-status-error',
23
- skipped: 'text-text-faint'
20
+ done: 'text-status-idle',
21
+ running: 'text-accent',
22
+ pending: 'text-text-faint',
23
+ failed: 'text-status-error',
24
+ skipped: 'text-text-faint'
24
25
  };
25
26
  /* A detail longer than this reads as a sentence, which a tag cannot wrap. */
26
27
  const DETAIL_AS_TAG = 24;
27
28
  /* Whether the block still changes: while it streams, or while it reads live data. Only then does anything spin. */
28
29
  function isLive(context) {
29
- return context.phase === 'streaming' || (context.live !== undefined && context.live !== null && context.live.state !== 'refused');
30
+ return context.phase === 'streaming' || context.live !== undefined && context.live !== null && context.live.state !== 'refused';
30
31
  }
31
32
  /* A Summary and a Callout share one row: the icon in a square, and beside it text that centers on the square while it is shorter and starts at its top once it is taller. */
32
33
  const ICON_ROW = 'flex items-start gap-3 rounded-xl p-3';
@@ -37,53 +38,677 @@ const ICON_TEXT = 'flex min-h-8.5 min-w-0 grow flex-col justify-center gap-0.5';
37
38
  * carries its icon in a square of its own, a Summary further down is a subheading without one. The
38
39
  * icon is the ground's ink in the dark theme, where its tones are too light for white.
39
40
  */
40
- export function SummaryRenderer({ node, children }) {
41
- const headId = useContext(UiHeadContext);
42
- const head = headId === undefined || headId === node.id;
43
- const { tone, badge } = node.props;
44
- const shown = tone ?? 'neutral';
45
- return (_jsxs("div", { className: clsx(ICON_ROW, tone === undefined ? 'bg-ui-tile' : UI_TONE_SURFACE[tone]), children: [head && (_jsx("span", { "aria-hidden": true, className: clsx(ICON_SQUARE, 'text-accent-text dark:text-surface', UI_TONE_FILL[shown]), children: _jsx(Icon, { icon: UI_TONE_ICONS[shown], size: 16 }) })), _jsxs("div", { className: ICON_TEXT, children: [_jsx("div", { className: "text-base font-semibold text-balance wrap-break-word text-text", children: children }), badge !== undefined && badge !== '' && (_jsx("p", { className: clsx('text-2xs font-medium wrap-anywhere', tone === undefined ? 'text-text-muted' : UI_TONE_TEXT[tone]), children: badge }))] })] }));
41
+ export function SummaryRenderer(t0) {
42
+ const $ = _c(17);
43
+ const {
44
+ node,
45
+ children
46
+ } = t0;
47
+ const headId = useContext(UiHeadContext);
48
+ const head = headId === undefined || headId === node.id;
49
+ const {
50
+ tone,
51
+ badge
52
+ } = node.props;
53
+ const shown = tone ?? "neutral";
54
+ const t1 = tone === undefined ? "bg-ui-tile" : UI_TONE_SURFACE[tone];
55
+ let t2;
56
+ if ($[0] !== t1) {
57
+ t2 = clsx(ICON_ROW, t1);
58
+ $[0] = t1;
59
+ $[1] = t2;
60
+ } else {
61
+ t2 = $[1];
62
+ }
63
+ let t3;
64
+ if ($[2] !== head || $[3] !== shown) {
65
+ t3 = head && /*#__PURE__*/_jsx("span", {
66
+ "aria-hidden": true,
67
+ className: clsx(ICON_SQUARE, "text-accent-text dark:text-surface", UI_TONE_FILL[shown]),
68
+ children: /*#__PURE__*/_jsx(Icon, {
69
+ icon: UI_TONE_ICONS[shown],
70
+ size: 16
71
+ })
72
+ });
73
+ $[2] = head;
74
+ $[3] = shown;
75
+ $[4] = t3;
76
+ } else {
77
+ t3 = $[4];
78
+ }
79
+ let t4;
80
+ if ($[5] !== children) {
81
+ t4 = /*#__PURE__*/_jsx("div", {
82
+ className: "text-base font-semibold text-balance wrap-break-word text-text",
83
+ children: children
84
+ });
85
+ $[5] = children;
86
+ $[6] = t4;
87
+ } else {
88
+ t4 = $[6];
89
+ }
90
+ let t5;
91
+ if ($[7] !== badge || $[8] !== tone) {
92
+ t5 = badge !== undefined && badge !== "" && /*#__PURE__*/_jsx("p", {
93
+ className: clsx("text-2xs font-medium wrap-anywhere", tone === undefined ? "text-text-muted" : UI_TONE_TEXT[tone]),
94
+ children: badge
95
+ });
96
+ $[7] = badge;
97
+ $[8] = tone;
98
+ $[9] = t5;
99
+ } else {
100
+ t5 = $[9];
101
+ }
102
+ let t6;
103
+ if ($[10] !== t4 || $[11] !== t5) {
104
+ t6 = /*#__PURE__*/_jsxs("div", {
105
+ className: ICON_TEXT,
106
+ children: [t4, t5]
107
+ });
108
+ $[10] = t4;
109
+ $[11] = t5;
110
+ $[12] = t6;
111
+ } else {
112
+ t6 = $[12];
113
+ }
114
+ let t7;
115
+ if ($[13] !== t2 || $[14] !== t3 || $[15] !== t6) {
116
+ t7 = /*#__PURE__*/_jsxs("div", {
117
+ className: t2,
118
+ children: [t3, t6]
119
+ });
120
+ $[13] = t2;
121
+ $[14] = t3;
122
+ $[15] = t6;
123
+ $[16] = t7;
124
+ } else {
125
+ t7 = $[16];
126
+ }
127
+ return t7;
46
128
  }
47
129
  /* A quiet tile whatever its tone: only the square of its icon wears the tone. */
48
- export function CalloutRenderer({ node, children }) {
49
- const { tone, title } = node.props;
50
- return (_jsxs("div", { className: clsx('chat-ui-flat bg-ui-tile text-xs', ICON_ROW), children: [_jsx("span", { "aria-hidden": true, className: clsx(ICON_SQUARE, UI_TONE_SURFACE[tone], UI_TONE_TEXT[tone]), children: _jsx(Icon, { icon: UI_TONE_ICONS[tone], size: 16 }) }), _jsxs("div", { className: ICON_TEXT, children: [title !== undefined && title !== '' && _jsx("div", { className: "font-semibold text-text", children: title }), _jsx("div", { className: "text-text-muted", children: children })] })] }));
130
+ export function CalloutRenderer(t0) {
131
+ const $ = _c(19);
132
+ const {
133
+ node,
134
+ children
135
+ } = t0;
136
+ const {
137
+ tone,
138
+ title
139
+ } = node.props;
140
+ let t1;
141
+ if ($[0] === Symbol.for("react.memo_cache_sentinel")) {
142
+ t1 = clsx("chat-ui-flat bg-ui-tile text-xs", ICON_ROW);
143
+ $[0] = t1;
144
+ } else {
145
+ t1 = $[0];
146
+ }
147
+ const t2 = UI_TONE_SURFACE[tone];
148
+ const t3 = UI_TONE_TEXT[tone];
149
+ let t4;
150
+ if ($[1] !== t2 || $[2] !== t3) {
151
+ t4 = clsx(ICON_SQUARE, t2, t3);
152
+ $[1] = t2;
153
+ $[2] = t3;
154
+ $[3] = t4;
155
+ } else {
156
+ t4 = $[3];
157
+ }
158
+ const t5 = UI_TONE_ICONS[tone];
159
+ let t6;
160
+ if ($[4] !== t5) {
161
+ t6 = /*#__PURE__*/_jsx(Icon, {
162
+ icon: t5,
163
+ size: 16
164
+ });
165
+ $[4] = t5;
166
+ $[5] = t6;
167
+ } else {
168
+ t6 = $[5];
169
+ }
170
+ let t7;
171
+ if ($[6] !== t4 || $[7] !== t6) {
172
+ t7 = /*#__PURE__*/_jsx("span", {
173
+ "aria-hidden": true,
174
+ className: t4,
175
+ children: t6
176
+ });
177
+ $[6] = t4;
178
+ $[7] = t6;
179
+ $[8] = t7;
180
+ } else {
181
+ t7 = $[8];
182
+ }
183
+ let t8;
184
+ if ($[9] !== title) {
185
+ t8 = title !== undefined && title !== "" && /*#__PURE__*/_jsx("div", {
186
+ className: "font-semibold text-text",
187
+ children: title
188
+ });
189
+ $[9] = title;
190
+ $[10] = t8;
191
+ } else {
192
+ t8 = $[10];
193
+ }
194
+ let t9;
195
+ if ($[11] !== children) {
196
+ t9 = /*#__PURE__*/_jsx("div", {
197
+ className: "text-text-muted",
198
+ children: children
199
+ });
200
+ $[11] = children;
201
+ $[12] = t9;
202
+ } else {
203
+ t9 = $[12];
204
+ }
205
+ let t10;
206
+ if ($[13] !== t8 || $[14] !== t9) {
207
+ t10 = /*#__PURE__*/_jsxs("div", {
208
+ className: ICON_TEXT,
209
+ children: [t8, t9]
210
+ });
211
+ $[13] = t8;
212
+ $[14] = t9;
213
+ $[15] = t10;
214
+ } else {
215
+ t10 = $[15];
216
+ }
217
+ let t11;
218
+ if ($[16] !== t10 || $[17] !== t7) {
219
+ t11 = /*#__PURE__*/_jsxs("div", {
220
+ className: t1,
221
+ children: [t7, t10]
222
+ });
223
+ $[16] = t10;
224
+ $[17] = t7;
225
+ $[18] = t11;
226
+ } else {
227
+ t11 = $[18];
228
+ }
229
+ return t11;
51
230
  }
52
- export function TagRenderer({ node, children }) {
53
- const { tone } = node.props;
54
- return (_jsx(Pill, { shape: "tag", size: "sm", tone: tone === undefined ? 'muted' : UI_TONE_PILL[tone], children: children }));
231
+ export function TagRenderer(t0) {
232
+ const $ = _c(3);
233
+ const {
234
+ node,
235
+ children
236
+ } = t0;
237
+ const {
238
+ tone
239
+ } = node.props;
240
+ const t1 = tone === undefined ? "muted" : UI_TONE_PILL[tone];
241
+ let t2;
242
+ if ($[0] !== children || $[1] !== t1) {
243
+ t2 = /*#__PURE__*/_jsx(Pill, {
244
+ shape: "tag",
245
+ size: "sm",
246
+ tone: t1,
247
+ children: children
248
+ });
249
+ $[0] = children;
250
+ $[1] = t1;
251
+ $[2] = t2;
252
+ } else {
253
+ t2 = $[2];
254
+ }
255
+ return t2;
55
256
  }
56
257
  /* Without a value the progress is indeterminate; without a max the value is a percentage. */
57
- export function ProgressRenderer({ node, children, context }) {
58
- const { t } = useTranslation('agent-chat');
59
- const { value, max } = node.props;
60
- const limit = max ?? 100;
61
- const reading = value === undefined ? null : limit === 100 ? formatPercent(value) : t('blocks.progress.of', { value: formatNumber(value), max: formatNumber(limit) });
62
- const label = uiNodeLabel(node);
63
- return (_jsxs("div", { className: "chat-ui-flat flex flex-col gap-2 rounded-xl bg-ui-tile p-3", children: [_jsxs("div", { className: "flex items-baseline justify-between gap-3 text-xs", children: [_jsx("span", { className: "min-w-0 text-text", children: children }), reading !== null ? (_jsx("span", { className: "shrink-0 text-text-muted tabular-nums", children: reading })) : (isLive(context) && _jsx(Spinner, { size: 12, className: "shrink-0 self-center text-text-faint" }))] }), _jsx(Meter, { value: value ?? null, max: limit, label: label === '' ? t('blocks.progress.label') : label, valueText: reading ?? undefined })] }));
258
+ export function ProgressRenderer(t0) {
259
+ const $ = _c(25);
260
+ const {
261
+ node,
262
+ children,
263
+ context
264
+ } = t0;
265
+ const {
266
+ t
267
+ } = useTranslation("agent-chat");
268
+ const {
269
+ value,
270
+ max
271
+ } = node.props;
272
+ const limit = max ?? 100;
273
+ let t1;
274
+ if ($[0] !== limit || $[1] !== t || $[2] !== value) {
275
+ t1 = value === undefined ? null : limit === 100 ? formatPercent(value) : t("blocks.progress.of", {
276
+ value: formatNumber(value),
277
+ max: formatNumber(limit)
278
+ });
279
+ $[0] = limit;
280
+ $[1] = t;
281
+ $[2] = value;
282
+ $[3] = t1;
283
+ } else {
284
+ t1 = $[3];
285
+ }
286
+ const reading = t1;
287
+ let t2;
288
+ if ($[4] !== node) {
289
+ t2 = uiNodeLabel(node);
290
+ $[4] = node;
291
+ $[5] = t2;
292
+ } else {
293
+ t2 = $[5];
294
+ }
295
+ const label = t2;
296
+ let t3;
297
+ if ($[6] !== children) {
298
+ t3 = /*#__PURE__*/_jsx("span", {
299
+ className: "min-w-0 text-text",
300
+ children: children
301
+ });
302
+ $[6] = children;
303
+ $[7] = t3;
304
+ } else {
305
+ t3 = $[7];
306
+ }
307
+ let t4;
308
+ if ($[8] !== context || $[9] !== reading) {
309
+ t4 = reading !== null ? /*#__PURE__*/_jsx("span", {
310
+ className: "shrink-0 text-text-muted tabular-nums",
311
+ children: reading
312
+ }) : isLive(context) && /*#__PURE__*/_jsx(Spinner, {
313
+ size: 12,
314
+ className: "shrink-0 self-center text-text-faint"
315
+ });
316
+ $[8] = context;
317
+ $[9] = reading;
318
+ $[10] = t4;
319
+ } else {
320
+ t4 = $[10];
321
+ }
322
+ let t5;
323
+ if ($[11] !== t3 || $[12] !== t4) {
324
+ t5 = /*#__PURE__*/_jsxs("div", {
325
+ className: "flex items-baseline justify-between gap-3 text-xs",
326
+ children: [t3, t4]
327
+ });
328
+ $[11] = t3;
329
+ $[12] = t4;
330
+ $[13] = t5;
331
+ } else {
332
+ t5 = $[13];
333
+ }
334
+ const t6 = value ?? null;
335
+ let t7;
336
+ if ($[14] !== label || $[15] !== t) {
337
+ t7 = label === "" ? t("blocks.progress.label") : label;
338
+ $[14] = label;
339
+ $[15] = t;
340
+ $[16] = t7;
341
+ } else {
342
+ t7 = $[16];
343
+ }
344
+ const t8 = reading ?? undefined;
345
+ let t9;
346
+ if ($[17] !== limit || $[18] !== t6 || $[19] !== t7 || $[20] !== t8) {
347
+ t9 = /*#__PURE__*/_jsx(Meter, {
348
+ value: t6,
349
+ max: limit,
350
+ label: t7,
351
+ valueText: t8
352
+ });
353
+ $[17] = limit;
354
+ $[18] = t6;
355
+ $[19] = t7;
356
+ $[20] = t8;
357
+ $[21] = t9;
358
+ } else {
359
+ t9 = $[21];
360
+ }
361
+ let t10;
362
+ if ($[22] !== t5 || $[23] !== t9) {
363
+ t10 = /*#__PURE__*/_jsxs("div", {
364
+ className: "chat-ui-flat flex flex-col gap-2 rounded-xl bg-ui-tile p-3",
365
+ children: [t5, t9]
366
+ });
367
+ $[22] = t5;
368
+ $[23] = t9;
369
+ $[24] = t10;
370
+ } else {
371
+ t10 = $[24];
372
+ }
373
+ return t10;
64
374
  }
65
- export function StepsRenderer({ children }) {
66
- return _jsx("ol", { className: "chat-ui-nodes flex flex-col gap-1.5", children: children });
375
+ export function StepsRenderer(t0) {
376
+ const $ = _c(2);
377
+ const {
378
+ children
379
+ } = t0;
380
+ let t1;
381
+ if ($[0] !== children) {
382
+ t1 = /*#__PURE__*/_jsx("ol", {
383
+ className: "chat-ui-nodes flex flex-col gap-1.5",
384
+ children: children
385
+ });
386
+ $[0] = children;
387
+ $[1] = t1;
388
+ } else {
389
+ t1 = $[1];
390
+ }
391
+ return t1;
67
392
  }
68
393
  /* A tile per step with its state in words at the end. A running step spins only while the block is live; in a quiet block it is a still dot. */
69
- export function StepRenderer({ node, children, context }) {
70
- const { t } = useTranslation('agent-chat');
71
- const { state, detail } = node.props;
72
- const quiet = state === 'pending' || state === 'skipped';
73
- return (_jsxs("li", { className: "flex min-h-10 items-start gap-3 rounded-xl bg-ui-tile px-3 py-2.5 text-xs", children: [_jsx("span", { className: clsx('mt-0.5 grid size-4 shrink-0 place-items-center', STEP_TONES[state]), children: state === 'running' ? (isLive(context) ? (_jsx(Spinner, { size: 14 })) : (_jsx(Icon, { icon: CircleDot, size: 14 }))) : (_jsx(Icon, { icon: STEP_ICONS[state], size: 14 })) }), _jsxs("span", { className: "flex min-w-0 grow flex-wrap items-baseline gap-x-2", children: [_jsx("span", { className: clsx('max-w-full min-w-0 font-medium wrap-break-word', quiet ? 'text-text-muted' : 'text-text'), children: children }), detail !== undefined && detail !== '' && _jsx("span", { className: "max-w-full text-2xs wrap-anywhere text-text-muted tabular-nums", children: detail })] }), _jsx(Pill, { shape: "tag", size: "sm", tone: UI_STEP_PILL[state], className: "shrink-0", children: t(`blocks.step.${state}`) })] }));
394
+ export function StepRenderer(t0) {
395
+ const $ = _c(28);
396
+ const {
397
+ node,
398
+ children,
399
+ context
400
+ } = t0;
401
+ const {
402
+ t
403
+ } = useTranslation("agent-chat");
404
+ const {
405
+ state,
406
+ detail
407
+ } = node.props;
408
+ const quiet = state === "pending" || state === "skipped";
409
+ const t1 = STEP_TONES[state];
410
+ let t2;
411
+ if ($[0] !== t1) {
412
+ t2 = clsx("mt-0.5 grid size-4 shrink-0 place-items-center", t1);
413
+ $[0] = t1;
414
+ $[1] = t2;
415
+ } else {
416
+ t2 = $[1];
417
+ }
418
+ let t3;
419
+ if ($[2] !== context || $[3] !== state) {
420
+ t3 = state === "running" ? isLive(context) ? /*#__PURE__*/_jsx(Spinner, {
421
+ size: 14
422
+ }) : /*#__PURE__*/_jsx(Icon, {
423
+ icon: CircleDot,
424
+ size: 14
425
+ }) : /*#__PURE__*/_jsx(Icon, {
426
+ icon: STEP_ICONS[state],
427
+ size: 14
428
+ });
429
+ $[2] = context;
430
+ $[3] = state;
431
+ $[4] = t3;
432
+ } else {
433
+ t3 = $[4];
434
+ }
435
+ let t4;
436
+ if ($[5] !== t2 || $[6] !== t3) {
437
+ t4 = /*#__PURE__*/_jsx("span", {
438
+ className: t2,
439
+ children: t3
440
+ });
441
+ $[5] = t2;
442
+ $[6] = t3;
443
+ $[7] = t4;
444
+ } else {
445
+ t4 = $[7];
446
+ }
447
+ const t5 = quiet ? "text-text-muted" : "text-text";
448
+ let t6;
449
+ if ($[8] !== t5) {
450
+ t6 = clsx("max-w-full min-w-0 font-medium wrap-break-word", t5);
451
+ $[8] = t5;
452
+ $[9] = t6;
453
+ } else {
454
+ t6 = $[9];
455
+ }
456
+ let t7;
457
+ if ($[10] !== children || $[11] !== t6) {
458
+ t7 = /*#__PURE__*/_jsx("span", {
459
+ className: t6,
460
+ children: children
461
+ });
462
+ $[10] = children;
463
+ $[11] = t6;
464
+ $[12] = t7;
465
+ } else {
466
+ t7 = $[12];
467
+ }
468
+ let t8;
469
+ if ($[13] !== detail) {
470
+ t8 = detail !== undefined && detail !== "" && /*#__PURE__*/_jsx("span", {
471
+ className: "max-w-full text-2xs wrap-anywhere text-text-muted tabular-nums",
472
+ children: detail
473
+ });
474
+ $[13] = detail;
475
+ $[14] = t8;
476
+ } else {
477
+ t8 = $[14];
478
+ }
479
+ let t9;
480
+ if ($[15] !== t7 || $[16] !== t8) {
481
+ t9 = /*#__PURE__*/_jsxs("span", {
482
+ className: "flex min-w-0 grow flex-wrap items-baseline gap-x-2",
483
+ children: [t7, t8]
484
+ });
485
+ $[15] = t7;
486
+ $[16] = t8;
487
+ $[17] = t9;
488
+ } else {
489
+ t9 = $[17];
490
+ }
491
+ const t10 = UI_STEP_PILL[state];
492
+ const t11 = `blocks.step.${state}`;
493
+ let t12;
494
+ if ($[18] !== t || $[19] !== t11) {
495
+ t12 = t(t11);
496
+ $[18] = t;
497
+ $[19] = t11;
498
+ $[20] = t12;
499
+ } else {
500
+ t12 = $[20];
501
+ }
502
+ let t13;
503
+ if ($[21] !== t10 || $[22] !== t12) {
504
+ t13 = /*#__PURE__*/_jsx(Pill, {
505
+ shape: "tag",
506
+ size: "sm",
507
+ tone: t10,
508
+ className: "shrink-0",
509
+ children: t12
510
+ });
511
+ $[21] = t10;
512
+ $[22] = t12;
513
+ $[23] = t13;
514
+ } else {
515
+ t13 = $[23];
516
+ }
517
+ let t14;
518
+ if ($[24] !== t13 || $[25] !== t4 || $[26] !== t9) {
519
+ t14 = /*#__PURE__*/_jsxs("li", {
520
+ className: "flex min-h-10 items-start gap-3 rounded-xl bg-ui-tile px-3 py-2.5 text-xs",
521
+ children: [t4, t9, t13]
522
+ });
523
+ $[24] = t13;
524
+ $[25] = t4;
525
+ $[26] = t9;
526
+ $[27] = t14;
527
+ } else {
528
+ t14 = $[27];
529
+ }
530
+ return t14;
74
531
  }
75
- export function TimelineRenderer({ children }) {
76
- return _jsx("ol", { className: "chat-ui-nodes chat-ui-flat flex flex-col rounded-xl bg-ui-tile px-3 py-1.5", children: children });
532
+ export function TimelineRenderer(t0) {
533
+ const $ = _c(2);
534
+ const {
535
+ children
536
+ } = t0;
537
+ let t1;
538
+ if ($[0] !== children) {
539
+ t1 = /*#__PURE__*/_jsx("ol", {
540
+ className: "chat-ui-nodes chat-ui-flat flex flex-col rounded-xl bg-ui-tile px-3 py-1.5",
541
+ children: children
542
+ });
543
+ $[0] = children;
544
+ $[1] = t1;
545
+ } else {
546
+ t1 = $[1];
547
+ }
548
+ return t1;
77
549
  }
78
550
  /* A row of the tile: the time, a dot in the tone, the title, and a short detail as a tag at the end or a longer one under the title. */
79
- export function EventRenderer({ node, children }) {
80
- const { t } = useTranslation('agent-chat');
81
- const { at, detail } = node.props;
82
- const tone = node.props.tone ?? 'neutral';
83
- const time = uiEventTime(at);
84
- // A neutral dot says nothing the title does not, and a detail is part of what the row says.
85
- const label = [time, uiNodeLabel(node), tone === 'neutral' ? '' : t(`blocks.event.tone.${tone}`), detail ?? ''].filter((part) => part !== '').join(', ');
86
- const described = detail !== undefined && detail !== '';
87
- const tagged = described && detail.length <= DETAIL_AS_TAG;
88
- return (_jsxs("li", { "aria-label": label, className: "flex min-h-9 items-start gap-3 py-2 text-xs", children: [parseUiEventTime(at) === null ? (_jsx("span", { className: "w-24 shrink-0 text-2xs leading-5 wrap-anywhere text-text-muted tabular-nums", children: time })) : (_jsx("time", { dateTime: at, className: "w-24 shrink-0 text-2xs leading-5 text-text-muted tabular-nums", children: time })), _jsx("span", { "aria-hidden": true, className: clsx('mt-1.5 size-2 shrink-0 rounded-full bg-current', tone === 'neutral' ? 'text-text-faint' : UI_TONE_TEXT[tone]) }), _jsxs("div", { className: "flex min-w-0 grow flex-col gap-0.5", children: [_jsx("div", { className: "wrap-break-word text-text", children: children }), described && !tagged && _jsx("div", { className: "text-2xs wrap-anywhere text-text-muted", children: detail })] }), tagged && (_jsx(Pill, { shape: "tag", size: "sm", tone: UI_TONE_PILL[tone], className: "shrink-0", children: detail }))] }));
551
+ export function EventRenderer(t0) {
552
+ const $ = _c(38);
553
+ const {
554
+ node,
555
+ children
556
+ } = t0;
557
+ const {
558
+ t
559
+ } = useTranslation("agent-chat");
560
+ const {
561
+ at,
562
+ detail
563
+ } = node.props;
564
+ const tone = node.props.tone ?? "neutral";
565
+ let t1;
566
+ if ($[0] !== at) {
567
+ t1 = uiEventTime(at);
568
+ $[0] = at;
569
+ $[1] = t1;
570
+ } else {
571
+ t1 = $[1];
572
+ }
573
+ const time = t1;
574
+ let t2;
575
+ if ($[2] !== node) {
576
+ t2 = uiNodeLabel(node);
577
+ $[2] = node;
578
+ $[3] = t2;
579
+ } else {
580
+ t2 = $[3];
581
+ }
582
+ let t3;
583
+ if ($[4] !== t || $[5] !== tone) {
584
+ t3 = tone === "neutral" ? "" : t(`blocks.event.tone.${tone}`);
585
+ $[4] = t;
586
+ $[5] = tone;
587
+ $[6] = t3;
588
+ } else {
589
+ t3 = $[6];
590
+ }
591
+ const t4 = detail ?? "";
592
+ let t5;
593
+ if ($[7] !== t2 || $[8] !== t3 || $[9] !== t4 || $[10] !== time) {
594
+ t5 = [time, t2, t3, t4].filter(_temp);
595
+ $[7] = t2;
596
+ $[8] = t3;
597
+ $[9] = t4;
598
+ $[10] = time;
599
+ $[11] = t5;
600
+ } else {
601
+ t5 = $[11];
602
+ }
603
+ const label = t5.join(", ");
604
+ const described = detail !== undefined && detail !== "";
605
+ const tagged = described && detail.length <= DETAIL_AS_TAG;
606
+ let t6;
607
+ if ($[12] !== at || $[13] !== time) {
608
+ t6 = parseUiEventTime(at) === null ? /*#__PURE__*/_jsx("span", {
609
+ className: "w-24 shrink-0 text-2xs leading-5 wrap-anywhere text-text-muted tabular-nums",
610
+ children: time
611
+ }) : /*#__PURE__*/_jsx("time", {
612
+ dateTime: at,
613
+ className: "w-24 shrink-0 text-2xs leading-5 text-text-muted tabular-nums",
614
+ children: time
615
+ });
616
+ $[12] = at;
617
+ $[13] = time;
618
+ $[14] = t6;
619
+ } else {
620
+ t6 = $[14];
621
+ }
622
+ const t7 = tone === "neutral" ? "text-text-faint" : UI_TONE_TEXT[tone];
623
+ let t8;
624
+ if ($[15] !== t7) {
625
+ t8 = clsx("mt-1.5 size-2 shrink-0 rounded-full bg-current", t7);
626
+ $[15] = t7;
627
+ $[16] = t8;
628
+ } else {
629
+ t8 = $[16];
630
+ }
631
+ let t9;
632
+ if ($[17] !== t8) {
633
+ t9 = /*#__PURE__*/_jsx("span", {
634
+ "aria-hidden": true,
635
+ className: t8
636
+ });
637
+ $[17] = t8;
638
+ $[18] = t9;
639
+ } else {
640
+ t9 = $[18];
641
+ }
642
+ let t10;
643
+ if ($[19] !== children) {
644
+ t10 = /*#__PURE__*/_jsx("div", {
645
+ className: "wrap-break-word text-text",
646
+ children: children
647
+ });
648
+ $[19] = children;
649
+ $[20] = t10;
650
+ } else {
651
+ t10 = $[20];
652
+ }
653
+ let t11;
654
+ if ($[21] !== described || $[22] !== detail || $[23] !== tagged) {
655
+ t11 = described && !tagged && /*#__PURE__*/_jsx("div", {
656
+ className: "text-2xs wrap-anywhere text-text-muted",
657
+ children: detail
658
+ });
659
+ $[21] = described;
660
+ $[22] = detail;
661
+ $[23] = tagged;
662
+ $[24] = t11;
663
+ } else {
664
+ t11 = $[24];
665
+ }
666
+ let t12;
667
+ if ($[25] !== t10 || $[26] !== t11) {
668
+ t12 = /*#__PURE__*/_jsxs("div", {
669
+ className: "flex min-w-0 grow flex-col gap-0.5",
670
+ children: [t10, t11]
671
+ });
672
+ $[25] = t10;
673
+ $[26] = t11;
674
+ $[27] = t12;
675
+ } else {
676
+ t12 = $[27];
677
+ }
678
+ let t13;
679
+ if ($[28] !== detail || $[29] !== tagged || $[30] !== tone) {
680
+ t13 = tagged && /*#__PURE__*/_jsx(Pill, {
681
+ shape: "tag",
682
+ size: "sm",
683
+ tone: UI_TONE_PILL[tone],
684
+ className: "shrink-0",
685
+ children: detail
686
+ });
687
+ $[28] = detail;
688
+ $[29] = tagged;
689
+ $[30] = tone;
690
+ $[31] = t13;
691
+ } else {
692
+ t13 = $[31];
693
+ }
694
+ let t14;
695
+ if ($[32] !== label || $[33] !== t12 || $[34] !== t13 || $[35] !== t6 || $[36] !== t9) {
696
+ t14 = /*#__PURE__*/_jsxs("li", {
697
+ "aria-label": label,
698
+ className: "flex min-h-9 items-start gap-3 py-2 text-xs",
699
+ children: [t6, t9, t12, t13]
700
+ });
701
+ $[32] = label;
702
+ $[33] = t12;
703
+ $[34] = t13;
704
+ $[35] = t6;
705
+ $[36] = t9;
706
+ $[37] = t14;
707
+ } else {
708
+ t14 = $[37];
709
+ }
710
+ return t14;
89
711
  }
712
+ function _temp(part) {
713
+ return part !== "";
714
+ }