@adecore/agents-react 0.31.12 → 0.32.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 (402) hide show
  1. package/dist/agents/AccountDot.js +57 -6
  2. package/dist/agents/AgentIcon.js +88 -12
  3. package/dist/agents/ModelOptionControl.js +153 -18
  4. package/dist/agents/ProviderLogo.js +49 -4
  5. package/dist/agents/account-limits.js +17 -14
  6. package/dist/agents/accounts.js +99 -67
  7. package/dist/agents/agent-marks.js +5 -3
  8. package/dist/agents/model-name.js +42 -31
  9. package/dist/agents/model-options.js +8 -8
  10. package/dist/agents/model-requirement.js +17 -14
  11. package/dist/agents/option-words.d.ts +7 -0
  12. package/dist/agents/option-words.js +35 -0
  13. package/dist/agents/provider-paths.js +6 -6
  14. package/dist/agents/status-look.js +32 -12
  15. package/dist/chat/account-choice.d.ts +13 -0
  16. package/dist/chat/account-choice.js +90 -20
  17. package/dist/chat/actions.js +126 -59
  18. package/dist/chat/activity.js +5 -5
  19. package/dist/chat/attachments.js +74 -53
  20. package/dist/chat/bookmarks.js +58 -48
  21. package/dist/chat/chat-client.js +344 -263
  22. package/dist/chat/chat-references.js +3 -3
  23. package/dist/chat/composer-effort.d.ts +5 -0
  24. package/dist/chat/composer-effort.js +26 -0
  25. package/dist/chat/composer-send.js +13 -13
  26. package/dist/chat/drafts.js +115 -79
  27. package/dist/chat/forks.js +81 -24
  28. package/dist/chat/guards.js +15 -43
  29. package/dist/chat/index.d.ts +3 -1
  30. package/dist/chat/index.js +3 -2
  31. package/dist/chat/logic/ansi.js +170 -167
  32. package/dist/chat/logic/answers.js +2 -2
  33. package/dist/chat/logic/bookmarks.js +19 -19
  34. package/dist/chat/logic/command-looks.js +138 -96
  35. package/dist/chat/logic/context-usage.js +13 -9
  36. package/dist/chat/logic/continue-after-stop.js +15 -19
  37. package/dist/chat/logic/effort.d.ts +14 -0
  38. package/dist/chat/logic/effort.js +34 -0
  39. package/dist/chat/logic/embedded-code.js +387 -326
  40. package/dist/chat/logic/fork.js +134 -110
  41. package/dist/chat/logic/generated-image.js +54 -23
  42. package/dist/chat/logic/goal.js +28 -20
  43. package/dist/chat/logic/handback.js +6 -6
  44. package/dist/chat/logic/json.js +2 -2
  45. package/dist/chat/logic/limit.js +46 -30
  46. package/dist/chat/logic/picker-entries.d.ts +5 -3
  47. package/dist/chat/logic/picker-entries.js +83 -43
  48. package/dist/chat/logic/resume-compaction.d.ts +14 -1
  49. package/dist/chat/logic/resume-compaction.js +93 -24
  50. package/dist/chat/logic/scrubber.js +188 -136
  51. package/dist/chat/logic/thought.js +13 -16
  52. package/dist/chat/logic/thread-cards.js +60 -48
  53. package/dist/chat/logic/timeline-copy.js +30 -38
  54. package/dist/chat/logic/timeline-target.js +92 -63
  55. package/dist/chat/logic/timeline.js +499 -355
  56. package/dist/chat/logic/tool-catalog.js +54 -34
  57. package/dist/chat/logic/tools.js +106 -82
  58. package/dist/chat/logic/visual-height.js +18 -18
  59. package/dist/chat/logic/visual-viewport.js +6 -3
  60. package/dist/chat/logic/welcome.js +9 -9
  61. package/dist/chat/logic/workflow.js +45 -34
  62. package/dist/chat/mentions.js +149 -109
  63. package/dist/chat/persisted-json.js +51 -54
  64. package/dist/chat/preferences.d.ts +4 -0
  65. package/dist/chat/preferences.js +162 -84
  66. package/dist/chat/prompt-hold.js +9 -9
  67. package/dist/chat/quote.js +21 -30
  68. package/dist/chat/reading-width.js +12 -10
  69. package/dist/chat/recent-messages.js +34 -21
  70. package/dist/chat/resume-compaction-dismissals.js +25 -5
  71. package/dist/chat/runtime-modes.js +3 -3
  72. package/dist/chat/send-key.js +11 -7
  73. package/dist/chat/stash.js +89 -69
  74. package/dist/chat/subagent-conversation.js +181 -139
  75. package/dist/chat/subagent-list.js +65 -67
  76. package/dist/chat/subagent-support.js +12 -7
  77. package/dist/chat/subagent-view.js +132 -44
  78. package/dist/chat/thumbnails.js +88 -60
  79. package/dist/chat/timeline-flash.js +24 -12
  80. package/dist/chat/timeline-scroll.js +116 -86
  81. package/dist/chat/ui/AccountPill.js +126 -15
  82. package/dist/chat/ui/AnsiOutput.js +62 -6
  83. package/dist/chat/ui/BookmarkMarker.js +231 -41
  84. package/dist/chat/ui/BookmarkSubmenu.js +165 -18
  85. package/dist/chat/ui/ChatActivity.js +649 -70
  86. package/dist/chat/ui/ChatReferenceChip.js +104 -9
  87. package/dist/chat/ui/CodeBlock.js +132 -58
  88. package/dist/chat/ui/Composer.js +866 -132
  89. package/dist/chat/ui/ComposerInput.js +309 -120
  90. package/dist/chat/ui/DiffPool.js +75 -14
  91. package/dist/chat/ui/EditDiff.js +160 -21
  92. package/dist/chat/ui/FadingWords.js +32 -3
  93. package/dist/chat/ui/GoalDock.js +235 -42
  94. package/dist/chat/ui/ImageView.js +617 -61
  95. package/dist/chat/ui/LimitState.js +446 -72
  96. package/dist/chat/ui/Markdown.js +991 -173
  97. package/dist/chat/ui/MermaidBlock.js +238 -68
  98. package/dist/chat/ui/MessageActions.js +251 -39
  99. package/dist/chat/ui/ModelMarks.js +55 -5
  100. package/dist/chat/ui/Pickers.js +664 -113
  101. package/dist/chat/ui/PromptComposer.js +281 -51
  102. package/dist/chat/ui/QuoteButton.js +151 -57
  103. package/dist/chat/ui/ResumeCompactionDock.d.ts +6 -2
  104. package/dist/chat/ui/ResumeCompactionDock.js +141 -6
  105. package/dist/chat/ui/RowTime.js +59 -5
  106. package/dist/chat/ui/RunSettings.js +1744 -154
  107. package/dist/chat/ui/Scrubber.js +517 -88
  108. package/dist/chat/ui/ShellCommand.js +183 -107
  109. package/dist/chat/ui/SubagentControls.js +212 -24
  110. package/dist/chat/ui/SubagentInfo.js +170 -13
  111. package/dist/chat/ui/SubagentStopButton.js +115 -24
  112. package/dist/chat/ui/SubagentTimeline.js +357 -91
  113. package/dist/chat/ui/Timeline.js +988 -476
  114. package/dist/chat/ui/TimelineMenu.js +552 -37
  115. package/dist/chat/ui/UnifiedDiff.js +234 -27
  116. package/dist/chat/ui/UploadThumb.js +37 -7
  117. package/dist/chat/ui/VisualDialogs.js +251 -20
  118. package/dist/chat/ui/VisualFrame.js +321 -95
  119. package/dist/chat/ui/Welcome.js +72 -7
  120. package/dist/chat/ui/chips.js +1 -1
  121. package/dist/chat/ui/code-lines.js +36 -36
  122. package/dist/chat/ui/code-streaming.js +1 -1
  123. package/dist/chat/ui/code-theme.js +7 -7
  124. package/dist/chat/ui/composer/ComposerControls.js +329 -21
  125. package/dist/chat/ui/composer/ComposerMenu.js +358 -30
  126. package/dist/chat/ui/composer/DraftParts.js +185 -11
  127. package/dist/chat/ui/composer/QueuedMessages.js +138 -13
  128. package/dist/chat/ui/composer/chips.js +29 -19
  129. package/dist/chat/ui/composer/editor.js +79 -63
  130. package/dist/chat/ui/composer/insert.js +26 -12
  131. package/dist/chat/ui/composer/key-handler.js +180 -127
  132. package/dist/chat/ui/composer/keys.js +90 -73
  133. package/dist/chat/ui/composer/menu-aria.js +18 -9
  134. package/dist/chat/ui/composer/placeholder.js +78 -31
  135. package/dist/chat/ui/composer/surface.js +13 -37
  136. package/dist/chat/ui/composer/use-chat-controls.js +230 -90
  137. package/dist/chat/ui/composer/use-compaction-offer.js +50 -18
  138. package/dist/chat/ui/composer/use-composer-draft.js +65 -34
  139. package/dist/chat/ui/composer/use-composer-menus.js +478 -193
  140. package/dist/chat/ui/composer/use-composer-submit.js +251 -109
  141. package/dist/chat/ui/composer/use-continuable-turn.js +33 -6
  142. package/dist/chat/ui/composer/use-draft-files.js +245 -93
  143. package/dist/chat/ui/composer/use-effort-stepper.d.ts +13 -0
  144. package/dist/chat/ui/composer/use-effort-stepper.js +88 -0
  145. package/dist/chat/ui/composer/use-notice.js +61 -16
  146. package/dist/chat/ui/composer/use-pending-requests.js +38 -17
  147. package/dist/chat/ui/composer/use-prompt-history.js +117 -45
  148. package/dist/chat/ui/composer/use-prompt-hold.js +119 -35
  149. package/dist/chat/ui/composer/use-take-back.js +94 -72
  150. package/dist/chat/ui/diff/ApprovalReview.js +101 -23
  151. package/dist/chat/ui/diff/DiffFallbackBoundary.js +21 -13
  152. package/dist/chat/ui/diff/DiffOmitted.js +56 -6
  153. package/dist/chat/ui/diff/DiffStack.js +92 -8
  154. package/dist/chat/ui/diff/DiffUnavailable.js +56 -6
  155. package/dist/chat/ui/diff/EditorEditDiff.js +263 -51
  156. package/dist/chat/ui/diff/EditorPatchDiff.js +39 -14
  157. package/dist/chat/ui/diff/LegacyDiffPool.js +27 -10
  158. package/dist/chat/ui/diff/LegacyEditDiff.js +97 -20
  159. package/dist/chat/ui/diff/LegacyUnifiedDiff.js +172 -42
  160. package/dist/chat/ui/diff/RawDiff.js +65 -5
  161. package/dist/chat/ui/diff/ReviewDiff.js +77 -5
  162. package/dist/chat/ui/diff/diff-props.js +1 -1
  163. package/dist/chat/ui/diff/diff-source-budget.js +46 -35
  164. package/dist/chat/ui/diff/editor-edit-model.js +18 -14
  165. package/dist/chat/ui/diff/review-plan.js +63 -40
  166. package/dist/chat/ui/diff/review-settle.js +24 -9
  167. package/dist/chat/ui/diff/syntax-runtime.js +236 -201
  168. package/dist/chat/ui/diff/use-review-stack.js +146 -25
  169. package/dist/chat/ui/diff-syntax.js +70 -58
  170. package/dist/chat/ui/diff-theme.js +31 -12
  171. package/dist/chat/ui/file-links.js +39 -10
  172. package/dist/chat/ui/find-reveal.js +29 -8
  173. package/dist/chat/ui/full-diff.js +17 -12
  174. package/dist/chat/ui/highlighter.js +143 -113
  175. package/dist/chat/ui/icons.js +16 -7
  176. package/dist/chat/ui/index.js +1 -1
  177. package/dist/chat/ui/intelligent-ui/UiBlockFrame.js +556 -82
  178. package/dist/chat/ui/intelligent-ui/UiFallbackPart.js +73 -5
  179. package/dist/chat/ui/intelligent-ui/UiReply.js +666 -262
  180. package/dist/chat/ui/intelligent-ui/block-local.js +59 -31
  181. package/dist/chat/ui/intelligent-ui/chart-data.js +77 -67
  182. package/dist/chat/ui/intelligent-ui/node-text.js +77 -91
  183. package/dist/chat/ui/intelligent-ui/registry.js +46 -46
  184. package/dist/chat/ui/intelligent-ui/render-context.js +1 -1
  185. package/dist/chat/ui/intelligent-ui/renderers/base-land.js +1 -1
  186. package/dist/chat/ui/intelligent-ui/renderers/binding.js +3 -3
  187. package/dist/chat/ui/intelligent-ui/renderers/chart.js +1223 -123
  188. package/dist/chat/ui/intelligent-ui/renderers/choices.js +312 -34
  189. package/dist/chat/ui/intelligent-ui/renderers/content.js +1241 -86
  190. package/dist/chat/ui/intelligent-ui/renderers/data.js +619 -54
  191. package/dist/chat/ui/intelligent-ui/renderers/inputs.js +868 -67
  192. package/dist/chat/ui/intelligent-ui/renderers/links.js +366 -62
  193. package/dist/chat/ui/intelligent-ui/renderers/map-slots.js +118 -60
  194. package/dist/chat/ui/intelligent-ui/renderers/map-style.js +85 -78
  195. package/dist/chat/ui/intelligent-ui/renderers/map-view.js +282 -217
  196. package/dist/chat/ui/intelligent-ui/renderers/map.js +621 -69
  197. package/dist/chat/ui/intelligent-ui/renderers/place-point.js +15 -8
  198. package/dist/chat/ui/intelligent-ui/renderers/structure.js +262 -20
  199. package/dist/chat/ui/intelligent-ui/renderers/text.js +674 -49
  200. package/dist/chat/ui/intelligent-ui/reply-parts.js +24 -15
  201. package/dist/chat/ui/intelligent-ui/table-data.js +97 -57
  202. package/dist/chat/ui/intelligent-ui/tones.js +31 -31
  203. package/dist/chat/ui/intelligent-ui/use-in-view.js +30 -12
  204. package/dist/chat/ui/intelligent-ui/use-later.js +28 -13
  205. package/dist/chat/ui/intelligent-ui/use-truncated.js +45 -21
  206. package/dist/chat/ui/intelligent-ui/use-ui-links.js +296 -109
  207. package/dist/chat/ui/intelligent-ui/use-ui-queries.js +256 -246
  208. package/dist/chat/ui/markdown-blocks.js +296 -262
  209. package/dist/chat/ui/mermaid.js +60 -72
  210. package/dist/chat/ui/quote-selection.js +32 -29
  211. package/dist/chat/ui/rehype-chips.js +35 -23
  212. package/dist/chat/ui/rehype-fade.js +28 -17
  213. package/dist/chat/ui/remark-html-as-text.js +22 -15
  214. package/dist/chat/ui/reply-context.js +1 -1
  215. package/dist/chat/ui/reveal.js +161 -72
  216. package/dist/chat/ui/rows/ForksRow.js +226 -24
  217. package/dist/chat/ui/rows/GeneratedImageRow.js +541 -87
  218. package/dist/chat/ui/rows/MessageRows.js +1706 -159
  219. package/dist/chat/ui/rows/RowContainer.js +57 -7
  220. package/dist/chat/ui/rows/Rows.js +463 -54
  221. package/dist/chat/ui/rows/SubagentRow.js +577 -60
  222. package/dist/chat/ui/rows/TaskRow.js +359 -40
  223. package/dist/chat/ui/rows/VisualRow.js +233 -11
  224. package/dist/chat/ui/rows/WorkRows.js +1945 -164
  225. package/dist/chat/ui/rows/WorkflowRow.js +293 -34
  226. package/dist/chat/ui/rows/row-rhythm.js +27 -17
  227. package/dist/chat/ui/theme-watch.js +26 -23
  228. package/dist/chat/ui/timestamp-format.js +4 -1
  229. package/dist/chat/ui/use-diff-source-tokens.js +70 -34
  230. package/dist/chat/ui/useToggleSet.js +51 -19
  231. package/dist/chat/ui/visual-theme.js +153 -128
  232. package/dist/chat/visual-bridge.js +123 -123
  233. package/dist/chat/visual-viewport.js +94 -83
  234. package/dist/chat/visuals.js +13 -5
  235. package/dist/host-hooks.d.ts +29 -0
  236. package/dist/host-hooks.js +78 -0
  237. package/dist/host.js +120 -48
  238. package/dist/index.js +1 -1
  239. package/dist/lazy.js +38 -32
  240. package/dist/locales/en/agent-chat.d.ts +34 -0
  241. package/dist/locales/en/agent-chat.js +747 -713
  242. package/dist/locales/en/agent-prompts.js +42 -42
  243. package/dist/locales/en/agent-providers.d.ts +1 -0
  244. package/dist/locales/en/agent-providers.js +166 -165
  245. package/dist/locales/en/agent-usage.d.ts +6 -0
  246. package/dist/locales/en/agent-usage.js +129 -123
  247. package/dist/locales/nl/agent-chat.d.ts +34 -0
  248. package/dist/locales/nl/agent-chat.js +747 -713
  249. package/dist/locales/nl/agent-prompts.js +42 -42
  250. package/dist/locales/nl/agent-providers.d.ts +1 -0
  251. package/dist/locales/nl/agent-providers.js +166 -165
  252. package/dist/locales/nl/agent-usage.d.ts +6 -0
  253. package/dist/locales/nl/agent-usage.js +129 -123
  254. package/dist/locales.js +14 -14
  255. package/dist/mounted-registry.js +31 -30
  256. package/dist/port-transport.js +122 -111
  257. package/dist/prompts/index.js +1 -1
  258. package/dist/prompts/logic/focus.js +15 -14
  259. package/dist/prompts/logic/keys.js +93 -59
  260. package/dist/prompts/logic/prompts.js +27 -14
  261. package/dist/prompts/logic/subjects.js +60 -46
  262. package/dist/prompts/logic/useFocusAfterAnswer.js +60 -20
  263. package/dist/prompts/logic/usePromptSession.js +88 -77
  264. package/dist/prompts/ui/ApprovalBody.js +246 -27
  265. package/dist/prompts/ui/PromptActions.js +215 -9
  266. package/dist/prompts/ui/PromptCard.js +215 -36
  267. package/dist/prompts/ui/PromptView.js +372 -34
  268. package/dist/prompts/ui/QuestionBody.js +269 -73
  269. package/dist/providers/AccountColors.js +36 -5
  270. package/dist/providers/AccountDetail.js +683 -50
  271. package/dist/providers/AccountVariables.js +139 -32
  272. package/dist/providers/AddAccountForm.js +125 -38
  273. package/dist/providers/CliDetail.js +343 -36
  274. package/dist/providers/InstallPage.js +644 -59
  275. package/dist/providers/ProviderList.d.ts +2 -1
  276. package/dist/providers/ProviderList.js +215 -23
  277. package/dist/providers/ProvidersPane.d.ts +4 -2
  278. package/dist/providers/ProvidersPane.js +244 -64
  279. package/dist/providers/account-actions.js +54 -30
  280. package/dist/providers/index.js +1 -1
  281. package/dist/providers/install-steps.js +12 -9
  282. package/dist/providers/pane-target.d.ts +3 -0
  283. package/dist/providers/pane-target.js +34 -13
  284. package/dist/providers/parts.js +62 -12
  285. package/dist/providers/provider-abilities.js +5 -5
  286. package/dist/providers/provider-groups.js +75 -40
  287. package/dist/providers/variables.js +73 -39
  288. package/dist/scope.js +6 -6
  289. package/dist/settings/sections.js +18 -18
  290. package/dist/state/chats.js +404 -192
  291. package/dist/state/index.js +1 -1
  292. package/dist/state/provider-accounts.js +70 -47
  293. package/dist/state/providers.js +45 -16
  294. package/dist/state/usage.js +154 -77
  295. package/dist/storage.js +69 -68
  296. package/dist/testing/index.js +1 -1
  297. package/dist/testing/prompts.js +105 -67
  298. package/dist/transport.js +10 -10
  299. package/dist/ui/PlainTextarea.js +27 -3
  300. package/dist/usage/LimitsList.js +646 -40
  301. package/dist/usage/UsageBreakdown.js +879 -38
  302. package/dist/usage/UsageChart.js +311 -32
  303. package/dist/usage/UsageDialog.js +46 -4
  304. package/dist/usage/UsageLimits.js +467 -34
  305. package/dist/usage/UsageLimitsCard.js +95 -11
  306. package/dist/usage/UsagePage.js +817 -96
  307. package/dist/usage/UsagePane.js +164 -10
  308. package/dist/usage/UsageSummary.js +151 -6
  309. package/dist/usage/UsageTiles.js +164 -14
  310. package/dist/usage/format.js +32 -32
  311. package/dist/usage/index.d.ts +1 -1
  312. package/dist/usage/index.js +2 -1
  313. package/dist/usage/limit-groups.d.ts +2 -0
  314. package/dist/usage/limit-groups.js +77 -59
  315. package/dist/usage/limits.js +78 -43
  316. package/dist/usage/money.js +20 -4
  317. package/dist/usage/summary.js +85 -64
  318. package/package.json +8 -8
  319. package/src/agents/ModelOptionControl.tsx +3 -1
  320. package/src/agents/option-words.ts +27 -0
  321. package/src/chat/account-choice.ts +41 -1
  322. package/src/chat/composer-effort.ts +32 -0
  323. package/src/chat/forks.ts +4 -5
  324. package/src/chat/index.ts +3 -1
  325. package/src/chat/logic/effort.ts +32 -0
  326. package/src/chat/logic/picker-entries.ts +45 -10
  327. package/src/chat/logic/resume-compaction.ts +95 -17
  328. package/src/chat/logic/timeline.ts +11 -3
  329. package/src/chat/preferences.ts +35 -0
  330. package/src/chat/subagent-view.ts +2 -3
  331. package/src/chat/ui/AnsiOutput.tsx +1 -2
  332. package/src/chat/ui/BookmarkSubmenu.tsx +3 -3
  333. package/src/chat/ui/ChatActivity.tsx +14 -22
  334. package/src/chat/ui/ChatReferenceChip.tsx +2 -3
  335. package/src/chat/ui/Composer.tsx +15 -7
  336. package/src/chat/ui/EditDiff.tsx +2 -3
  337. package/src/chat/ui/LimitState.tsx +2 -2
  338. package/src/chat/ui/Markdown.tsx +10 -8
  339. package/src/chat/ui/MermaidBlock.tsx +2 -3
  340. package/src/chat/ui/Pickers.tsx +49 -29
  341. package/src/chat/ui/PromptComposer.tsx +7 -9
  342. package/src/chat/ui/ResumeCompactionDock.tsx +16 -4
  343. package/src/chat/ui/RunSettings.tsx +67 -28
  344. package/src/chat/ui/Scrubber.tsx +3 -3
  345. package/src/chat/ui/ShellCommand.tsx +2 -0
  346. package/src/chat/ui/SubagentInfo.tsx +2 -3
  347. package/src/chat/ui/SubagentTimeline.tsx +12 -16
  348. package/src/chat/ui/Timeline.tsx +6 -6
  349. package/src/chat/ui/UnifiedDiff.tsx +3 -4
  350. package/src/chat/ui/VisualFrame.tsx +5 -8
  351. package/src/chat/ui/code-theme.ts +4 -4
  352. package/src/chat/ui/composer/placeholder.ts +2 -2
  353. package/src/chat/ui/composer/use-compaction-offer.ts +36 -16
  354. package/src/chat/ui/composer/use-composer-menus.ts +4 -9
  355. package/src/chat/ui/composer/use-composer-submit.ts +2 -1
  356. package/src/chat/ui/composer/use-effort-stepper.ts +56 -0
  357. package/src/chat/ui/composer/use-notice.ts +2 -2
  358. package/src/chat/ui/diff/EditorEditDiff.tsx +9 -13
  359. package/src/chat/ui/diff/LegacyEditDiff.tsx +12 -17
  360. package/src/chat/ui/diff/LegacyUnifiedDiff.tsx +13 -21
  361. package/src/chat/ui/diff/use-review-stack.ts +4 -4
  362. package/src/chat/ui/diff-theme.ts +3 -3
  363. package/src/chat/ui/file-links.ts +2 -2
  364. package/src/chat/ui/intelligent-ui/UiReply.tsx +2 -0
  365. package/src/chat/ui/intelligent-ui/renderers/chart.tsx +3 -3
  366. package/src/chat/ui/intelligent-ui/renderers/content.tsx +5 -6
  367. package/src/chat/ui/intelligent-ui/renderers/map-view.tsx +2 -1
  368. package/src/chat/ui/intelligent-ui/renderers/map.tsx +2 -1
  369. package/src/chat/ui/intelligent-ui/use-truncated.ts +16 -19
  370. package/src/chat/ui/intelligent-ui/use-ui-links.ts +3 -3
  371. package/src/chat/ui/rows/ForksRow.tsx +3 -5
  372. package/src/chat/ui/rows/GeneratedImageRow.tsx +2 -1
  373. package/src/chat/ui/rows/MessageRows.tsx +12 -21
  374. package/src/chat/ui/rows/SubagentRow.tsx +3 -3
  375. package/src/chat/ui/rows/TaskRow.tsx +1 -1
  376. package/src/chat/ui/rows/WorkRows.tsx +10 -5
  377. package/src/chat/ui/useToggleSet.ts +15 -18
  378. package/src/chat/ui/visual-theme.ts +2 -3
  379. package/src/host-hooks.ts +113 -0
  380. package/src/lazy.tsx +2 -0
  381. package/src/locales/en/agent-chat.ts +134 -108
  382. package/src/locales/en/agent-prompts.ts +7 -7
  383. package/src/locales/en/agent-providers.ts +35 -34
  384. package/src/locales/en/agent-usage.ts +26 -20
  385. package/src/locales/nl/agent-chat.ts +126 -100
  386. package/src/locales/nl/agent-prompts.ts +5 -5
  387. package/src/locales/nl/agent-providers.ts +33 -32
  388. package/src/locales/nl/agent-usage.ts +25 -20
  389. package/src/providers/CliDetail.tsx +2 -1
  390. package/src/providers/InstallPage.tsx +2 -4
  391. package/src/providers/ProviderList.tsx +12 -2
  392. package/src/providers/ProvidersPane.tsx +45 -15
  393. package/src/providers/pane-target.ts +20 -4
  394. package/src/state/chats.ts +2 -2
  395. package/src/usage/LimitsList.tsx +12 -13
  396. package/src/usage/UsageBreakdown.tsx +17 -6
  397. package/src/usage/UsageLimits.tsx +2 -1
  398. package/src/usage/UsagePage.tsx +3 -3
  399. package/src/usage/index.ts +1 -1
  400. package/src/usage/limit-groups.ts +12 -0
  401. package/src/usage/limits.ts +2 -2
  402. package/src/usage/money.ts +1 -2
@@ -1,10 +1,11 @@
1
- import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
1
+ import { c as _c } from "react/compiler-runtime";
2
2
  import { useEffect, useState } from 'react';
3
3
  import { Tooltip } from '@adecore/ui';
4
4
  import { EMBEDDED_CODE_LIMIT, SHELL_LANGUAGE, embeddedCode } from '../logic/embedded-code.js';
5
5
  import { useChatHost } from '../../host.js';
6
6
  import { useCodeTheme } from './code-theme.js';
7
7
  import { tokenStyle, useCodeHighlighter } from './highlighter.js';
8
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
8
9
  const NO_CODE = [];
9
10
  const NO_NAMES = [];
10
11
  // Rows redraw often and a thread holds many commands, so each is tokenized once per theme.
@@ -12,110 +13,174 @@ const CACHE_LIMIT = 300;
12
13
  const cache = new Map();
13
14
  /* The runs of `code` in one language, placed at `offset`; a run in the theme's own foreground takes the color around it. */
14
15
  function runsOf(highlighter, code, language, theme, offset) {
15
- const fg = highlighter.getTheme(theme).fg.toLowerCase();
16
- const { tokens } = highlighter.codeToTokens(code, { lang: language, theme });
17
- return tokens.flat().map((token) => ({
18
- start: offset + token.offset,
19
- end: offset + token.offset + token.content.length,
20
- content: token.content,
21
- color: token.color?.toLowerCase() === fg ? undefined : token.color,
22
- fontStyle: token.fontStyle
23
- }));
16
+ const fg = highlighter.getTheme(theme).fg.toLowerCase();
17
+ const {
18
+ tokens
19
+ } = highlighter.codeToTokens(code, {
20
+ lang: language,
21
+ theme
22
+ });
23
+ return tokens.flat().map(token => ({
24
+ start: offset + token.offset,
25
+ end: offset + token.offset + token.content.length,
26
+ content: token.content,
27
+ color: token.color?.toLowerCase() === fg ? undefined : token.color,
28
+ fontStyle: token.fontStyle
29
+ }));
24
30
  }
25
31
  /* `base` with `[start, end)` cut out of it and `inner` in its place. */
26
32
  function overlay(base, start, end, inner) {
27
- const kept = [];
28
- for (const run of base) {
29
- if (run.end <= start || run.start >= end) {
30
- kept.push(run);
31
- continue;
32
- }
33
- if (run.start < start) {
34
- kept.push({ ...run, end: start, content: run.content.slice(0, start - run.start) });
35
- }
36
- if (run.end > end) {
37
- kept.push({ ...run, start: end, content: run.content.slice(end - run.start) });
38
- }
33
+ const kept = [];
34
+ for (const run of base) {
35
+ if (run.end <= start || run.start >= end) {
36
+ kept.push(run);
37
+ continue;
39
38
  }
40
- return [...kept, ...inner].sort((left, right) => left.start - right.start);
39
+ if (run.start < start) {
40
+ kept.push({
41
+ ...run,
42
+ end: start,
43
+ content: run.content.slice(0, start - run.start)
44
+ });
45
+ }
46
+ if (run.end > end) {
47
+ kept.push({
48
+ ...run,
49
+ start: end,
50
+ content: run.content.slice(end - run.start)
51
+ });
52
+ }
53
+ }
54
+ return [...kept, ...inner].sort((left, right) => left.start - right.start);
41
55
  }
42
56
  /* The code inside a command, with the stretches a caller knows the language of on top. */
43
57
  function codeIn(command, extra) {
44
- return extra.length === 0
45
- ? embeddedCode(command)
46
- : [...embeddedCode(command), ...extra].sort((left, right) => left.start - right.start || right.end - left.end);
58
+ return extra.length === 0 ? embeddedCode(command) : [...embeddedCode(command), ...extra].sort((left, right) => left.start - right.start || right.end - left.end);
47
59
  }
48
60
  function languagesOf(command, extra) {
49
- return new Set([SHELL_LANGUAGE, ...codeIn(command, extra).map(({ language }) => language)]);
61
+ return new Set([SHELL_LANGUAGE, ...codeIn(command, extra).map(({
62
+ language
63
+ }) => language)]);
50
64
  }
51
65
  /* The colored runs of a command, or null while a grammar or the theme is still on its way. */
52
66
  function highlight(command, extra, theme, code) {
53
- const key = `${theme}\n${extra.map(({ start, end, language }) => `${start}:${end}:${language}`).join(',')}\n${command}`;
54
- const known = cache.get(key);
55
- if (known !== undefined) {
56
- // Touched entries move to the end, so the oldest falls out first.
57
- cache.delete(key);
58
- cache.set(key, known);
59
- return known;
60
- }
61
- const embedded = codeIn(command, extra);
62
- const highlighter = code.ready([SHELL_LANGUAGE, ...embedded.map(({ language }) => language)], theme);
63
- if (highlighter === null) {
64
- return null;
65
- }
66
- let runs = runsOf(highlighter, command, code.language(SHELL_LANGUAGE), theme, 0);
67
- for (const part of embedded) {
68
- runs = overlay(runs, part.start, part.end, runsOf(highlighter, command.slice(part.start, part.end), code.language(part.language), theme, part.start));
69
- }
70
- cache.set(key, runs);
71
- if (cache.size > CACHE_LIMIT) {
72
- cache.delete(cache.keys().next().value);
73
- }
74
- return runs;
67
+ const key = `${theme}\n${extra.map(({
68
+ start,
69
+ end,
70
+ language
71
+ }) => `${start}:${end}:${language}`).join(',')}\n${command}`;
72
+ const known = cache.get(key);
73
+ if (known !== undefined) {
74
+ // Touched entries move to the end, so the oldest falls out first.
75
+ cache.delete(key);
76
+ cache.set(key, known);
77
+ return known;
78
+ }
79
+ const embedded = codeIn(command, extra);
80
+ const highlighter = code.ready([SHELL_LANGUAGE, ...embedded.map(({
81
+ language
82
+ }) => language)], theme);
83
+ if (highlighter === null) {
84
+ return null;
85
+ }
86
+ let runs = runsOf(highlighter, command, code.language(SHELL_LANGUAGE), theme, 0);
87
+ for (const part of embedded) {
88
+ runs = overlay(runs, part.start, part.end, runsOf(highlighter, command.slice(part.start, part.end), code.language(part.language), theme, part.start));
89
+ }
90
+ cache.set(key, runs);
91
+ if (cache.size > CACHE_LIMIT) {
92
+ cache.delete(cache.keys().next().value);
93
+ }
94
+ return runs;
75
95
  }
76
96
  /* `command[from, to)` in its colors, or as it is while there are none. */
77
97
  function draw(command, runs, from, to) {
78
- if (runs === null) {
79
- return [command.slice(from, to)];
98
+ if (runs === null) {
99
+ return [command.slice(from, to)];
100
+ }
101
+ const parts = [];
102
+ let at = from;
103
+ for (const run of runs) {
104
+ if (run.end <= from || run.start >= to) {
105
+ continue;
80
106
  }
81
- const parts = [];
82
- let at = from;
83
- for (const run of runs) {
84
- if (run.end <= from || run.start >= to) {
85
- continue;
86
- }
87
- const start = Math.max(run.start, from);
88
- const end = Math.min(run.end, to);
89
- // Shiki leaves the line breaks out of its tokens; they come from the command itself.
90
- if (start > at) {
91
- parts.push(command.slice(at, start));
92
- }
93
- const content = run.content.slice(start - run.start, end - run.start);
94
- const style = tokenStyle(run);
95
- parts.push(style === undefined ? (content) : (_jsx("span", { style: style, children: content }, start)));
96
- at = end;
107
+ const start = Math.max(run.start, from);
108
+ const end = Math.min(run.end, to);
109
+ // Shiki leaves the line breaks out of its tokens; they come from the command itself.
110
+ if (start > at) {
111
+ parts.push(command.slice(at, start));
97
112
  }
98
- if (at < to) {
99
- parts.push(command.slice(at, to));
100
- }
101
- return parts;
113
+ const content = run.content.slice(start - run.start, end - run.start);
114
+ const style = tokenStyle(run);
115
+ parts.push(style === undefined ? content : /*#__PURE__*/_jsx("span", {
116
+ style: style,
117
+ children: content
118
+ }, start));
119
+ at = end;
120
+ }
121
+ if (at < to) {
122
+ parts.push(command.slice(at, to));
123
+ }
124
+ return parts;
102
125
  }
103
126
  /* A word as its name, in a frame so it reads as a reference; the word itself stays in the text, for a find. */
104
- function Name({ named }) {
105
- return (_jsx(Tooltip, { label: named.word, children: _jsxs("span", { className: "inline-flex items-center gap-1 rounded bg-surface-hover px-1 font-sans text-text ring-1 ring-border ring-inset", children: [named.name.icon, named.name.name, _jsx("span", { className: "sr-only", children: named.word })] }) }));
127
+ function Name(t0) {
128
+ const $ = _c(9);
129
+ const {
130
+ named
131
+ } = t0;
132
+ let t1;
133
+ if ($[0] !== named.word) {
134
+ t1 = /*#__PURE__*/_jsx("span", {
135
+ className: "sr-only",
136
+ children: named.word
137
+ });
138
+ $[0] = named.word;
139
+ $[1] = t1;
140
+ } else {
141
+ t1 = $[1];
142
+ }
143
+ let t2;
144
+ if ($[2] !== named.name.icon || $[3] !== named.name.name || $[4] !== t1) {
145
+ t2 = /*#__PURE__*/_jsxs("span", {
146
+ className: "inline-flex items-center gap-1 rounded bg-surface-hover px-1 font-sans text-text ring-1 ring-border ring-inset",
147
+ children: [named.name.icon, named.name.name, t1]
148
+ });
149
+ $[2] = named.name.icon;
150
+ $[3] = named.name.name;
151
+ $[4] = t1;
152
+ $[5] = t2;
153
+ } else {
154
+ t2 = $[5];
155
+ }
156
+ let t3;
157
+ if ($[6] !== named.word || $[7] !== t2) {
158
+ t3 = /*#__PURE__*/_jsx(Tooltip, {
159
+ label: named.word,
160
+ children: t2
161
+ });
162
+ $[6] = named.word;
163
+ $[7] = t2;
164
+ $[8] = t3;
165
+ } else {
166
+ t3 = $[8];
167
+ }
168
+ return t3;
106
169
  }
107
170
  function drawNamed(command, runs, names) {
108
- const parts = [];
109
- let at = 0;
110
- for (const named of names) {
111
- if (named.start < at) {
112
- continue;
113
- }
114
- parts.push(...draw(command, runs, at, named.start), _jsx(Name, { named: named }, `name-${named.start}`));
115
- at = named.end;
171
+ const parts = [];
172
+ let at = 0;
173
+ for (const named of names) {
174
+ if (named.start < at) {
175
+ continue;
116
176
  }
117
- parts.push(...draw(command, runs, at, command.length));
118
- return parts;
177
+ parts.push(...draw(command, runs, at, named.start), /*#__PURE__*/_jsx(Name, {
178
+ named: named
179
+ }, `name-${named.start}`));
180
+ at = named.end;
181
+ }
182
+ parts.push(...draw(command, runs, at, command.length));
183
+ return parts;
119
184
  }
120
185
  /*
121
186
  * A shell command in the colors of the code theme, with the code inside it (a `bash -lc` script, a
@@ -123,28 +188,39 @@ function drawNamed(command, runs, names) {
123
188
  * changes no size; a command past the limit stays plain. `code` adds stretches whose language the
124
189
  * caller knows, and `names` draws words as the names a host gave them, both as offsets into `command`.
125
190
  */
126
- export function ShellCommand({ command, code = NO_CODE, names = NO_NAMES }) {
127
- const theme = useCodeTheme();
128
- const { custom } = useChatHost().code;
129
- const highlighter = useCodeHighlighter();
130
- // Bumped when a load settles, so the cache is asked again.
131
- const [, setLoads] = useState(0);
132
- const tooLong = command.length > EMBEDDED_CODE_LIMIT;
133
- const runs = tooLong ? null : highlight(command, code, theme, highlighter);
134
- useEffect(() => {
135
- if (runs !== null || tooLong) {
136
- return;
137
- }
138
- let cancelled = false;
139
- Promise.all([highlighter.loadTheme(theme, custom), ...[...languagesOf(command, code)].map((lang) => highlighter.loadLanguage(lang))])
140
- .then(() => !cancelled && setLoads((count) => count + 1))
141
- .catch(() => undefined);
142
- return () => {
143
- cancelled = true;
144
- };
145
- }, [highlighter, command, code, theme, custom, runs, tooLong]);
146
- if (names.length > 0) {
147
- return _jsx(_Fragment, { children: drawNamed(command, runs, names) });
191
+ export function ShellCommand({
192
+ command,
193
+ code = NO_CODE,
194
+ names = NO_NAMES
195
+ }) {
196
+ // The highlighter's cache fills in place; compiled, the runs it gave before its grammars loaded would stay.
197
+ 'use no memo';
198
+
199
+ const theme = useCodeTheme();
200
+ const {
201
+ custom
202
+ } = useChatHost().code;
203
+ const highlighter = useCodeHighlighter();
204
+ // Bumped when a load settles, so the cache is asked again.
205
+ const [, setLoads] = useState(0);
206
+ const tooLong = command.length > EMBEDDED_CODE_LIMIT;
207
+ const runs = tooLong ? null : highlight(command, code, theme, highlighter);
208
+ useEffect(() => {
209
+ if (runs !== null || tooLong) {
210
+ return;
148
211
  }
149
- return _jsx(_Fragment, { children: runs === null ? command : draw(command, runs, 0, command.length) });
150
- }
212
+ let cancelled = false;
213
+ Promise.all([highlighter.loadTheme(theme, custom), ...[...languagesOf(command, code)].map(lang => highlighter.loadLanguage(lang))]).then(() => !cancelled && setLoads(count => count + 1)).catch(() => undefined);
214
+ return () => {
215
+ cancelled = true;
216
+ };
217
+ }, [highlighter, command, code, theme, custom, runs, tooLong]);
218
+ if (names.length > 0) {
219
+ return /*#__PURE__*/_jsx(_Fragment, {
220
+ children: drawNamed(command, runs, names)
221
+ });
222
+ }
223
+ return /*#__PURE__*/_jsx(_Fragment, {
224
+ children: runs === null ? command : draw(command, runs, 0, command.length)
225
+ });
226
+ }
@@ -1,4 +1,4 @@
1
- import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
1
+ import { c as _c } from "react/compiler-runtime";
2
2
  import { Fragment } from 'react';
3
3
  import clsx from 'clsx';
4
4
  import { useTranslation } from 'react-i18next';
@@ -6,33 +6,221 @@ import { ChevronRight, X } from 'lucide-react';
6
6
  import { breadcrumbOf, MAIN_AGENT, trailTo, useOpenableSubagents, useSubagentTrail } from '../subagent-view.js';
7
7
  import { SubagentStopButton } from './SubagentStopButton.js';
8
8
  import { Icon, IconButton } from '@adecore/ui';
9
+ import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
9
10
  const CRUMB_LINK = 'truncate text-text-muted hover:text-text';
10
11
  /* The chat's own title in the bar; while a sub-agent stands in the chat's place, pressing it goes back to the main agent. */
11
- export function SubagentTitleCrumb({ chatId, className, children }) {
12
- const { trail, show } = useSubagentTrail(chatId);
13
- if (trail.length === 0) {
14
- return _jsx(_Fragment, { children: children });
12
+ export function SubagentTitleCrumb(t0) {
13
+ const $ = _c(10);
14
+ const {
15
+ chatId,
16
+ className,
17
+ children
18
+ } = t0;
19
+ const {
20
+ trail,
21
+ show
22
+ } = useSubagentTrail(chatId);
23
+ if (trail.length === 0) {
24
+ let t1;
25
+ if ($[0] !== children) {
26
+ t1 = /*#__PURE__*/_jsx(_Fragment, {
27
+ children: children
28
+ });
29
+ $[0] = children;
30
+ $[1] = t1;
31
+ } else {
32
+ t1 = $[1];
15
33
  }
16
- return (_jsx("button", { type: "button", className: clsx('flex min-w-0 items-center', className), onClick: () => show(MAIN_AGENT), children: children }));
34
+ return t1;
35
+ }
36
+ let t1;
37
+ if ($[2] !== className) {
38
+ t1 = clsx("flex min-w-0 items-center", className);
39
+ $[2] = className;
40
+ $[3] = t1;
41
+ } else {
42
+ t1 = $[3];
43
+ }
44
+ let t2;
45
+ if ($[4] !== show) {
46
+ t2 = () => show(MAIN_AGENT);
47
+ $[4] = show;
48
+ $[5] = t2;
49
+ } else {
50
+ t2 = $[5];
51
+ }
52
+ let t3;
53
+ if ($[6] !== children || $[7] !== t1 || $[8] !== t2) {
54
+ t3 = /*#__PURE__*/_jsx("button", {
55
+ type: "button",
56
+ className: t1,
57
+ onClick: t2,
58
+ children: children
59
+ });
60
+ $[6] = children;
61
+ $[7] = t1;
62
+ $[8] = t2;
63
+ $[9] = t3;
64
+ } else {
65
+ t3 = $[9];
66
+ }
67
+ return t3;
17
68
  }
18
69
  /* The way down to the sub-agent on screen, each step but the last a way back up. Nothing while the main agent is on screen. */
19
- export function SubagentBreadcrumb({ chatId, className }) {
20
- const { t } = useTranslation('agent-chat');
21
- const { trail, show } = useSubagentTrail(chatId);
22
- if (trail.length === 0) {
23
- return null;
24
- }
25
- return (_jsx("nav", { "aria-label": t('subagents.title'), className: clsx('flex min-w-0 items-center gap-1', className), children: breadcrumbOf(trail).map((step) => (_jsxs(Fragment, { children: [step.depth > 1 && _jsx(Icon, { icon: ChevronRight, size: 12, className: "shrink-0 text-text-faint" }), step.current ? (_jsx("span", { "aria-current": "page", className: "min-w-0 truncate text-text", children: step.label })) : (_jsx("button", { type: "button", className: clsx(CRUMB_LINK, 'min-w-0 shrink'), onClick: () => show(trailTo(trail, step.depth)), children: step.label }))] }, step.depth))) }));
70
+ export function SubagentBreadcrumb(t0) {
71
+ const $ = _c(11);
72
+ const {
73
+ chatId,
74
+ className
75
+ } = t0;
76
+ const {
77
+ t
78
+ } = useTranslation("agent-chat");
79
+ const {
80
+ trail,
81
+ show
82
+ } = useSubagentTrail(chatId);
83
+ if (trail.length === 0) {
84
+ return null;
85
+ }
86
+ let t1;
87
+ if ($[0] !== t) {
88
+ t1 = t("subagents.title");
89
+ $[0] = t;
90
+ $[1] = t1;
91
+ } else {
92
+ t1 = $[1];
93
+ }
94
+ let t2;
95
+ if ($[2] !== className) {
96
+ t2 = clsx("flex min-w-0 items-center gap-1", className);
97
+ $[2] = className;
98
+ $[3] = t2;
99
+ } else {
100
+ t2 = $[3];
101
+ }
102
+ let t3;
103
+ if ($[4] !== show || $[5] !== trail) {
104
+ t3 = breadcrumbOf(trail).map(step => /*#__PURE__*/_jsxs(Fragment, {
105
+ children: [step.depth > 1 && /*#__PURE__*/_jsx(Icon, {
106
+ icon: ChevronRight,
107
+ size: 12,
108
+ className: "shrink-0 text-text-faint"
109
+ }), step.current ? /*#__PURE__*/_jsx("span", {
110
+ "aria-current": "page",
111
+ className: "min-w-0 truncate text-text",
112
+ children: step.label
113
+ }) : /*#__PURE__*/_jsx("button", {
114
+ type: "button",
115
+ className: clsx(CRUMB_LINK, "min-w-0 shrink"),
116
+ onClick: () => show(trailTo(trail, step.depth)),
117
+ children: step.label
118
+ })]
119
+ }, step.depth));
120
+ $[4] = show;
121
+ $[5] = trail;
122
+ $[6] = t3;
123
+ } else {
124
+ t3 = $[6];
125
+ }
126
+ let t4;
127
+ if ($[7] !== t1 || $[8] !== t2 || $[9] !== t3) {
128
+ t4 = /*#__PURE__*/_jsx("nav", {
129
+ "aria-label": t1,
130
+ className: t2,
131
+ children: t3
132
+ });
133
+ $[7] = t1;
134
+ $[8] = t2;
135
+ $[9] = t3;
136
+ $[10] = t4;
137
+ } else {
138
+ t4 = $[10];
139
+ }
140
+ return t4;
26
141
  }
27
142
  /* Stops the sub-agent on screen where that is on offer, and closes it straight back to the main agent. */
28
- export function SubagentActions({ chatId }) {
29
- const { t } = useTranslation('agent-chat');
30
- const { trail, show } = useSubagentTrail(chatId);
31
- const subagents = useOpenableSubagents(chatId);
32
- if (trail.length === 0) {
33
- return null;
34
- }
35
- // Only a row of the chat's own thread can be stopped; a grandchild belongs to the sub-agent that opened it.
36
- const shown = trail.length === 1 ? subagents.find((item) => item.toolUseId === trail[0].toolUseId) : undefined;
37
- return (_jsxs("div", { className: "flex shrink-0 items-center gap-1", children: [shown !== undefined && _jsx(SubagentStopButton, { chatId: chatId, item: shown, size: "sm" }), _jsx(IconButton, { icon: X, size: "sm", label: t('subagents.backToMain'), onClick: () => show(MAIN_AGENT) })] }));
38
- }
143
+ export function SubagentActions(t0) {
144
+ const $ = _c(17);
145
+ const {
146
+ chatId
147
+ } = t0;
148
+ const {
149
+ t
150
+ } = useTranslation("agent-chat");
151
+ const {
152
+ trail,
153
+ show
154
+ } = useSubagentTrail(chatId);
155
+ const subagents = useOpenableSubagents(chatId);
156
+ if (trail.length === 0) {
157
+ return null;
158
+ }
159
+ let t1;
160
+ if ($[0] !== subagents || $[1] !== trail[0] || $[2] !== trail.length) {
161
+ t1 = trail.length === 1 ? subagents.find(item => item.toolUseId === trail[0].toolUseId) : undefined;
162
+ $[0] = subagents;
163
+ $[1] = trail[0];
164
+ $[2] = trail.length;
165
+ $[3] = t1;
166
+ } else {
167
+ t1 = $[3];
168
+ }
169
+ const shown = t1;
170
+ let t2;
171
+ if ($[4] !== chatId || $[5] !== shown) {
172
+ t2 = shown !== undefined && /*#__PURE__*/_jsx(SubagentStopButton, {
173
+ chatId: chatId,
174
+ item: shown,
175
+ size: "sm"
176
+ });
177
+ $[4] = chatId;
178
+ $[5] = shown;
179
+ $[6] = t2;
180
+ } else {
181
+ t2 = $[6];
182
+ }
183
+ let t3;
184
+ if ($[7] !== t) {
185
+ t3 = t("subagents.backToMain");
186
+ $[7] = t;
187
+ $[8] = t3;
188
+ } else {
189
+ t3 = $[8];
190
+ }
191
+ let t4;
192
+ if ($[9] !== show) {
193
+ t4 = () => show(MAIN_AGENT);
194
+ $[9] = show;
195
+ $[10] = t4;
196
+ } else {
197
+ t4 = $[10];
198
+ }
199
+ let t5;
200
+ if ($[11] !== t3 || $[12] !== t4) {
201
+ t5 = /*#__PURE__*/_jsx(IconButton, {
202
+ icon: X,
203
+ size: "sm",
204
+ label: t3,
205
+ onClick: t4
206
+ });
207
+ $[11] = t3;
208
+ $[12] = t4;
209
+ $[13] = t5;
210
+ } else {
211
+ t5 = $[13];
212
+ }
213
+ let t6;
214
+ if ($[14] !== t2 || $[15] !== t5) {
215
+ t6 = /*#__PURE__*/_jsxs("div", {
216
+ className: "flex shrink-0 items-center gap-1",
217
+ children: [t2, t5]
218
+ });
219
+ $[14] = t2;
220
+ $[15] = t5;
221
+ $[16] = t6;
222
+ } else {
223
+ t6 = $[16];
224
+ }
225
+ return t6;
226
+ }