@adecore/agents-react 0.31.11 → 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 (404) 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 +1946 -163
  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 +35 -0
  241. package/dist/locales/en/agent-chat.js +747 -712
  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 +35 -0
  248. package/dist/locales/nl/agent-chat.js +747 -712
  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 -25
  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.d.ts +1 -0
  291. package/dist/state/chats.js +408 -192
  292. package/dist/state/index.js +1 -1
  293. package/dist/state/provider-accounts.js +70 -47
  294. package/dist/state/providers.js +45 -16
  295. package/dist/state/usage.js +154 -77
  296. package/dist/storage.js +69 -68
  297. package/dist/testing/index.js +1 -1
  298. package/dist/testing/prompts.js +105 -67
  299. package/dist/transport.js +10 -10
  300. package/dist/ui/PlainTextarea.js +27 -3
  301. package/dist/usage/LimitsList.js +646 -40
  302. package/dist/usage/UsageBreakdown.js +879 -38
  303. package/dist/usage/UsageChart.js +311 -32
  304. package/dist/usage/UsageDialog.js +46 -4
  305. package/dist/usage/UsageLimits.js +467 -34
  306. package/dist/usage/UsageLimitsCard.js +95 -11
  307. package/dist/usage/UsagePage.js +817 -96
  308. package/dist/usage/UsagePane.js +164 -10
  309. package/dist/usage/UsageSummary.js +151 -6
  310. package/dist/usage/UsageTiles.js +164 -14
  311. package/dist/usage/format.js +32 -32
  312. package/dist/usage/index.d.ts +1 -1
  313. package/dist/usage/index.js +2 -1
  314. package/dist/usage/limit-groups.d.ts +2 -0
  315. package/dist/usage/limit-groups.js +77 -59
  316. package/dist/usage/limits.js +78 -43
  317. package/dist/usage/money.js +20 -4
  318. package/dist/usage/summary.js +85 -64
  319. package/package.json +8 -8
  320. package/src/agents/ModelOptionControl.tsx +3 -1
  321. package/src/agents/option-words.ts +27 -0
  322. package/src/chat/account-choice.ts +41 -1
  323. package/src/chat/composer-effort.ts +32 -0
  324. package/src/chat/forks.ts +4 -5
  325. package/src/chat/index.ts +3 -1
  326. package/src/chat/logic/effort.ts +32 -0
  327. package/src/chat/logic/picker-entries.ts +45 -10
  328. package/src/chat/logic/resume-compaction.ts +95 -17
  329. package/src/chat/logic/timeline.ts +11 -3
  330. package/src/chat/preferences.ts +35 -0
  331. package/src/chat/subagent-view.ts +2 -3
  332. package/src/chat/ui/AnsiOutput.tsx +1 -2
  333. package/src/chat/ui/BookmarkSubmenu.tsx +3 -3
  334. package/src/chat/ui/ChatActivity.tsx +14 -22
  335. package/src/chat/ui/ChatReferenceChip.tsx +2 -3
  336. package/src/chat/ui/Composer.tsx +15 -7
  337. package/src/chat/ui/EditDiff.tsx +2 -3
  338. package/src/chat/ui/LimitState.tsx +2 -2
  339. package/src/chat/ui/Markdown.tsx +10 -8
  340. package/src/chat/ui/MermaidBlock.tsx +2 -3
  341. package/src/chat/ui/Pickers.tsx +49 -29
  342. package/src/chat/ui/PromptComposer.tsx +7 -9
  343. package/src/chat/ui/ResumeCompactionDock.tsx +16 -4
  344. package/src/chat/ui/RunSettings.tsx +67 -28
  345. package/src/chat/ui/Scrubber.tsx +3 -3
  346. package/src/chat/ui/ShellCommand.tsx +2 -0
  347. package/src/chat/ui/SubagentInfo.tsx +2 -3
  348. package/src/chat/ui/SubagentTimeline.tsx +12 -16
  349. package/src/chat/ui/Timeline.tsx +6 -6
  350. package/src/chat/ui/UnifiedDiff.tsx +3 -4
  351. package/src/chat/ui/VisualFrame.tsx +5 -8
  352. package/src/chat/ui/code-theme.ts +4 -4
  353. package/src/chat/ui/composer/placeholder.ts +2 -2
  354. package/src/chat/ui/composer/use-compaction-offer.ts +36 -16
  355. package/src/chat/ui/composer/use-composer-menus.ts +4 -9
  356. package/src/chat/ui/composer/use-composer-submit.ts +2 -1
  357. package/src/chat/ui/composer/use-effort-stepper.ts +56 -0
  358. package/src/chat/ui/composer/use-notice.ts +2 -2
  359. package/src/chat/ui/diff/EditorEditDiff.tsx +9 -13
  360. package/src/chat/ui/diff/LegacyEditDiff.tsx +12 -17
  361. package/src/chat/ui/diff/LegacyUnifiedDiff.tsx +13 -21
  362. package/src/chat/ui/diff/use-review-stack.ts +4 -4
  363. package/src/chat/ui/diff-theme.ts +3 -3
  364. package/src/chat/ui/file-links.ts +2 -2
  365. package/src/chat/ui/intelligent-ui/UiReply.tsx +2 -0
  366. package/src/chat/ui/intelligent-ui/renderers/chart.tsx +3 -3
  367. package/src/chat/ui/intelligent-ui/renderers/content.tsx +5 -6
  368. package/src/chat/ui/intelligent-ui/renderers/map-view.tsx +2 -1
  369. package/src/chat/ui/intelligent-ui/renderers/map.tsx +2 -1
  370. package/src/chat/ui/intelligent-ui/use-truncated.ts +16 -19
  371. package/src/chat/ui/intelligent-ui/use-ui-links.ts +3 -3
  372. package/src/chat/ui/rows/ForksRow.tsx +3 -5
  373. package/src/chat/ui/rows/GeneratedImageRow.tsx +2 -1
  374. package/src/chat/ui/rows/MessageRows.tsx +12 -21
  375. package/src/chat/ui/rows/SubagentRow.tsx +3 -3
  376. package/src/chat/ui/rows/TaskRow.tsx +1 -1
  377. package/src/chat/ui/rows/WorkRows.tsx +20 -7
  378. package/src/chat/ui/useToggleSet.ts +15 -18
  379. package/src/chat/ui/visual-theme.ts +2 -3
  380. package/src/host-hooks.ts +113 -0
  381. package/src/lazy.tsx +2 -0
  382. package/src/locales/en/agent-chat.ts +135 -108
  383. package/src/locales/en/agent-prompts.ts +7 -7
  384. package/src/locales/en/agent-providers.ts +35 -34
  385. package/src/locales/en/agent-usage.ts +26 -20
  386. package/src/locales/nl/agent-chat.ts +127 -100
  387. package/src/locales/nl/agent-prompts.ts +5 -5
  388. package/src/locales/nl/agent-providers.ts +33 -32
  389. package/src/locales/nl/agent-usage.ts +25 -20
  390. package/src/prompts/ui/ApprovalBody.tsx +3 -1
  391. package/src/providers/CliDetail.tsx +2 -1
  392. package/src/providers/InstallPage.tsx +2 -4
  393. package/src/providers/ProviderList.tsx +12 -2
  394. package/src/providers/ProvidersPane.tsx +45 -15
  395. package/src/providers/pane-target.ts +20 -4
  396. package/src/state/chats.ts +7 -2
  397. package/src/usage/LimitsList.tsx +12 -13
  398. package/src/usage/UsageBreakdown.tsx +17 -6
  399. package/src/usage/UsageLimits.tsx +2 -1
  400. package/src/usage/UsagePage.tsx +3 -3
  401. package/src/usage/index.ts +1 -1
  402. package/src/usage/limit-groups.ts +12 -0
  403. package/src/usage/limits.ts +2 -2
  404. package/src/usage/money.ts +1 -2
@@ -1,92 +1,103 @@
1
1
  import { visualViewportGeometry } from './logic/visual-viewport.js';
2
2
  /* Keeps one small frame in a full-height timeline row, without rendering React on scroll. */
3
3
  export class VisualViewportController {
4
- box;
5
- viewport;
6
- scroller;
7
- bridge;
8
- observer;
9
- attributes;
10
- view;
11
- frame = 0;
12
- disposed = false;
13
- last = '';
14
- pendingDelta = 0;
15
- onScroll;
16
- constructor(box, viewport, scroller, bridge) {
17
- this.box = box;
18
- this.viewport = viewport;
19
- this.scroller = scroller;
20
- this.bridge = bridge;
21
- this.view = box.ownerDocument.defaultView;
22
- this.onScroll = () => this.refresh();
23
- this.observer = new ResizeObserver(this.onScroll);
24
- this.observer.observe(box);
25
- this.observer.observe(scroller);
26
- this.attributes = new MutationObserver(this.onScroll);
27
- const row = box.closest('[data-index]');
28
- if (row) {
29
- this.attributes.observe(row, { attributes: true, attributeFilter: ['style'] });
30
- }
31
- scroller.addEventListener('scroll', this.onScroll, { passive: true });
32
- this.refresh();
4
+ box;
5
+ viewport;
6
+ scroller;
7
+ bridge;
8
+ observer;
9
+ attributes;
10
+ view;
11
+ frame = 0;
12
+ disposed = false;
13
+ last = '';
14
+ pendingDelta = 0;
15
+ onScroll;
16
+ constructor(box, viewport, scroller, bridge) {
17
+ this.box = box;
18
+ this.viewport = viewport;
19
+ this.scroller = scroller;
20
+ this.bridge = bridge;
21
+ this.view = box.ownerDocument.defaultView;
22
+ this.onScroll = () => this.refresh();
23
+ this.observer = new ResizeObserver(this.onScroll);
24
+ this.observer.observe(box);
25
+ this.observer.observe(scroller);
26
+ this.attributes = new MutationObserver(this.onScroll);
27
+ const row = box.closest('[data-index]');
28
+ if (row) {
29
+ this.attributes.observe(row, {
30
+ attributes: true,
31
+ attributeFilter: ['style']
32
+ });
33
33
  }
34
- refresh() {
35
- if (this.disposed) {
36
- return;
37
- }
38
- const top = this.offsetInScroller(this.scroller.getBoundingClientRect(), this.box.getBoundingClientRect());
39
- const available = this.scroller.clientHeight;
40
- const geometry = visualViewportGeometry(this.box.offsetHeight, available, top);
41
- this.viewport.style.height = `${geometry.height}px`;
42
- const key = `${geometry.top}:${geometry.height}`;
43
- if (key !== this.last) {
44
- this.last = key;
45
- this.bridge.setViewport(geometry);
46
- }
34
+ scroller.addEventListener('scroll', this.onScroll, {
35
+ passive: true
36
+ });
37
+ this.refresh();
38
+ }
39
+ refresh() {
40
+ if (this.disposed) {
41
+ return;
47
42
  }
48
- scroll(request) {
49
- const outer = this.scroller.getBoundingClientRect();
50
- const box = this.box.getBoundingClientRect();
51
- if (this.disposed || box.bottom <= outer.top || box.top >= outer.bottom) {
52
- return;
53
- }
54
- if ('by' in request) {
55
- this.pendingDelta += request.by;
56
- this.schedule();
57
- return;
58
- }
59
- this.pendingDelta = 0;
60
- const start = this.scroller.scrollTop + this.offsetInScroller(outer, box);
61
- const top = 'to' in request ? start + request.to : request.edge === 'start' ? 0 : this.scroller.scrollHeight;
62
- this.scroller.scrollTo({ top, behavior: 'instant' });
63
- this.refresh();
43
+ const top = this.offsetInScroller(this.scroller.getBoundingClientRect(), this.box.getBoundingClientRect());
44
+ const available = this.scroller.clientHeight;
45
+ const geometry = visualViewportGeometry(this.box.offsetHeight, available, top);
46
+ this.viewport.style.height = `${geometry.height}px`;
47
+ const key = `${geometry.top}:${geometry.height}`;
48
+ if (key !== this.last) {
49
+ this.last = key;
50
+ this.bridge.setViewport(geometry);
64
51
  }
65
- dispose() {
66
- this.disposed = true;
67
- this.view.cancelAnimationFrame(this.frame);
68
- this.observer.disconnect();
69
- this.attributes.disconnect();
70
- this.scroller.removeEventListener('scroll', this.onScroll);
71
- this.bridge.setViewport(null);
52
+ }
53
+ scroll(request) {
54
+ const outer = this.scroller.getBoundingClientRect();
55
+ const box = this.box.getBoundingClientRect();
56
+ if (this.disposed || box.bottom <= outer.top || box.top >= outer.bottom) {
57
+ return;
72
58
  }
73
- /* The box's top below the scroller's visible top, in the scroller's own pixels. */
74
- offsetInScroller(outer, box) {
75
- // A chat on a canvas can be scaled; messages inside its frame use unscaled CSS pixels.
76
- const scale = outer.height / this.scroller.offsetHeight || 1;
77
- return (box.top - outer.top) / scale - this.scroller.clientTop;
59
+ if ('by' in request) {
60
+ this.pendingDelta += request.by;
61
+ this.schedule();
62
+ return;
78
63
  }
79
- schedule() {
80
- if (this.frame || this.disposed) {
81
- return;
82
- }
83
- this.frame = this.view.requestAnimationFrame(() => {
84
- this.frame = 0;
85
- if (this.pendingDelta !== 0) {
86
- this.scroller.scrollBy({ top: this.pendingDelta, behavior: 'instant' });
87
- this.pendingDelta = 0;
88
- }
89
- this.refresh();
90
- });
64
+ this.pendingDelta = 0;
65
+ const start = this.scroller.scrollTop + this.offsetInScroller(outer, box);
66
+ const top = 'to' in request ? start + request.to : request.edge === 'start' ? 0 : this.scroller.scrollHeight;
67
+ this.scroller.scrollTo({
68
+ top,
69
+ behavior: 'instant'
70
+ });
71
+ this.refresh();
72
+ }
73
+ dispose() {
74
+ this.disposed = true;
75
+ this.view.cancelAnimationFrame(this.frame);
76
+ this.observer.disconnect();
77
+ this.attributes.disconnect();
78
+ this.scroller.removeEventListener('scroll', this.onScroll);
79
+ this.bridge.setViewport(null);
80
+ }
81
+ /* The box's top below the scroller's visible top, in the scroller's own pixels. */
82
+ offsetInScroller(outer, box) {
83
+ // A chat on a canvas can be scaled; messages inside its frame use unscaled CSS pixels.
84
+ const scale = outer.height / this.scroller.offsetHeight || 1;
85
+ return (box.top - outer.top) / scale - this.scroller.clientTop;
86
+ }
87
+ schedule() {
88
+ if (this.frame || this.disposed) {
89
+ return;
91
90
  }
92
- }
91
+ this.frame = this.view.requestAnimationFrame(() => {
92
+ this.frame = 0;
93
+ if (this.pendingDelta !== 0) {
94
+ this.scroller.scrollBy({
95
+ top: this.pendingDelta,
96
+ behavior: 'instant'
97
+ });
98
+ this.pendingDelta = 0;
99
+ }
100
+ this.refresh();
101
+ });
102
+ }
103
+ }
@@ -1,8 +1,16 @@
1
1
  import { create } from 'zustand';
2
- export const useVisualDialog = create((set) => ({
2
+ export const useVisualDialog = create(set => ({
3
+ chatKey: null,
4
+ visualId: null,
5
+ kind: null,
6
+ open: (chatKey, visualId, kind) => set({
7
+ chatKey,
8
+ visualId,
9
+ kind
10
+ }),
11
+ close: () => set({
3
12
  chatKey: null,
4
13
  visualId: null,
5
- kind: null,
6
- open: (chatKey, visualId, kind) => set({ chatKey, visualId, kind }),
7
- close: () => set({ chatKey: null, visualId: null, kind: null })
8
- }));
14
+ kind: null
15
+ })
16
+ }));
@@ -0,0 +1,29 @@
1
+ import type { ProviderPlatform } from '@adecore/agent-contracts';
2
+ import { type ChatHost, type CommandLook } from './host.js';
3
+ export declare function useHostCodeMode(): 'light' | 'dark';
4
+ export declare function useHostCodeThemes(): {
5
+ light: string;
6
+ dark: string;
7
+ };
8
+ export declare function useHostAttachmentUrl(...args: Parameters<ChatHost['attachments']['useUrl']>): ReturnType<ChatHost['attachments']['useUrl']>;
9
+ export declare function useHostTasks(...args: Parameters<ChatHost['tasks']['useTasks']>): ReturnType<ChatHost['tasks']['useTasks']>;
10
+ export declare function useHostTask(...args: Parameters<ChatHost['tasks']['useTask']>): ReturnType<ChatHost['tasks']['useTask']>;
11
+ export declare function useHostExtraPrompts(...args: Parameters<ChatHost['prompts']['useExtra']>): ReturnType<ChatHost['prompts']['useExtra']>;
12
+ export declare function useHostStreaming(): ReturnType<ChatHost['useStreaming']>;
13
+ export declare function useHostSendDelivery(): ReturnType<ChatHost['useSendDelivery']>;
14
+ export declare function useHostTimelineFind(...args: Parameters<ChatHost['useTimelineFind']>): ReturnType<ChatHost['useTimelineFind']>;
15
+ export declare function useHostReferableChats(): ReturnType<ChatHost['useReferableChats']>;
16
+ export declare function useHostLoginBlocked(...args: Parameters<ChatHost['useLoginBlocked']>): ReturnType<ChatHost['useLoginBlocked']>;
17
+ export declare function useHostMachinePlatform(scopeId: string): ProviderPlatform | null;
18
+ export declare function useHostProjectLook(...args: Parameters<ChatHost['useProjectLook']>): ReturnType<ChatHost['useProjectLook']>;
19
+ export declare function useHostMachineLabel(...args: Parameters<ChatHost['useMachineLabel']>): ReturnType<ChatHost['useMachineLabel']>;
20
+ export declare function useHostChatPlace(...args: Parameters<ChatHost['useChatPlace']>): ReturnType<ChatHost['useChatPlace']>;
21
+ export declare function useHostContextSources(...args: Parameters<ChatHost['useContextSources']>): ReturnType<ChatHost['useContextSources']>;
22
+ export declare function useHostHidesFolder(...args: Parameters<ChatHost['useHidesFolder']>): ReturnType<ChatHost['useHidesFolder']>;
23
+ export declare function useHostWelcome(...args: Parameters<ChatHost['useWelcome']>): ReturnType<ChatHost['useWelcome']>;
24
+ export declare function useHostResumeAtReset(...args: Parameters<ChatHost['useResumeAtReset']>): ReturnType<ChatHost['useResumeAtReset']>;
25
+ export declare function useHostComposerPlaceholder(...args: Parameters<ChatHost['useComposerPlaceholder']>): ReturnType<ChatHost['useComposerPlaceholder']>;
26
+ export declare function useHostThreadCards(...args: Parameters<ChatHost['useThreadCards']>): ReturnType<ChatHost['useThreadCards']>;
27
+ export declare function useHostReplyAuthor(...args: Parameters<ChatHost['useReplyAuthor']>): ReturnType<ChatHost['useReplyAuthor']>;
28
+ export declare function useHostMapSource(maps: NonNullable<ChatHost['maps']>, scopeId: string): ReturnType<NonNullable<ChatHost['maps']>['useSource']>;
29
+ export declare function useCommandNames(look: Required<Pick<CommandLook, 'useNames'>>, scopeId: string, chatId: string): ReturnType<NonNullable<CommandLook['useNames']>>;
@@ -0,0 +1,78 @@
1
+ 'use no memo';
2
+
3
+ import { useChatHost } from './host.js';
4
+ export function useHostCodeMode() {
5
+ return useChatHost().code.useMode();
6
+ }
7
+ export function useHostCodeThemes() {
8
+ return useChatHost().code.useThemes();
9
+ }
10
+ export function useHostAttachmentUrl(...args) {
11
+ return useChatHost().attachments.useUrl(...args);
12
+ }
13
+ export function useHostTasks(...args) {
14
+ return useChatHost().tasks.useTasks(...args);
15
+ }
16
+ export function useHostTask(...args) {
17
+ return useChatHost().tasks.useTask(...args);
18
+ }
19
+ export function useHostExtraPrompts(...args) {
20
+ return useChatHost().prompts.useExtra(...args);
21
+ }
22
+ export function useHostStreaming() {
23
+ return useChatHost().useStreaming();
24
+ }
25
+ export function useHostSendDelivery() {
26
+ return useChatHost().useSendDelivery();
27
+ }
28
+ export function useHostTimelineFind(...args) {
29
+ return useChatHost().useTimelineFind(...args);
30
+ }
31
+ export function useHostReferableChats() {
32
+ return useChatHost().useReferableChats();
33
+ }
34
+ export function useHostLoginBlocked(...args) {
35
+ return useChatHost().useLoginBlocked(...args);
36
+ }
37
+ const noPlatform = () => null;
38
+ /* Null where the host does not say, as it need not. */
39
+ export function useHostMachinePlatform(scopeId) {
40
+ const useMachinePlatform = useChatHost().useMachinePlatform ?? noPlatform;
41
+ return useMachinePlatform(scopeId);
42
+ }
43
+ export function useHostProjectLook(...args) {
44
+ return useChatHost().useProjectLook(...args);
45
+ }
46
+ export function useHostMachineLabel(...args) {
47
+ return useChatHost().useMachineLabel(...args);
48
+ }
49
+ export function useHostChatPlace(...args) {
50
+ return useChatHost().useChatPlace(...args);
51
+ }
52
+ export function useHostContextSources(...args) {
53
+ return useChatHost().useContextSources(...args);
54
+ }
55
+ export function useHostHidesFolder(...args) {
56
+ return useChatHost().useHidesFolder(...args);
57
+ }
58
+ export function useHostWelcome(...args) {
59
+ return useChatHost().useWelcome(...args);
60
+ }
61
+ export function useHostResumeAtReset(...args) {
62
+ return useChatHost().useResumeAtReset(...args);
63
+ }
64
+ export function useHostComposerPlaceholder(...args) {
65
+ return useChatHost().useComposerPlaceholder(...args);
66
+ }
67
+ export function useHostThreadCards(...args) {
68
+ return useChatHost().useThreadCards(...args);
69
+ }
70
+ export function useHostReplyAuthor(...args) {
71
+ return useChatHost().useReplyAuthor(...args);
72
+ }
73
+ export function useHostMapSource(maps, scopeId) {
74
+ return maps.useSource(scopeId);
75
+ }
76
+ export function useCommandNames(look, scopeId, chatId) {
77
+ return look.useNames(scopeId, chatId);
78
+ }
package/dist/host.js CHANGED
@@ -1,51 +1,92 @@
1
+ import { c as _c } from "react/compiler-runtime";
1
2
  import { createContext, createElement, useContext, useState } from 'react';
2
3
  import { isApplePlatform } from '@adecore/ui';
3
4
  import { PlainTextarea } from './ui/PlainTextarea.js';
4
5
  const NO_PROMPTS = [];
5
6
  const NO_CHATS = [];
6
7
  const NO_ROWS = [];
7
- const NO_FIND = { open: false, bar: null, reveal: null, hitRows: NO_ROWS, currentRow: null };
8
+ const NO_FIND = {
9
+ open: false,
10
+ bar: null,
11
+ reveal: null,
12
+ hitRows: NO_ROWS,
13
+ currentRow: null
14
+ };
8
15
  const NO_SOURCES = [];
9
- const NO_URL = { url: null, failure: null };
10
- const NOWHERE = { title: null, go: () => undefined };
16
+ const NO_URL = {
17
+ url: null,
18
+ failure: null
19
+ };
20
+ const NOWHERE = {
21
+ title: null,
22
+ go: () => undefined
23
+ };
11
24
  const NO_CARDS = [];
12
25
  const DEFAULT_HOST = {
13
- accents: { all: [], featured: [], label: (id) => id, current: () => '' },
14
- isApplePlatform,
15
- isAppShortcut: () => false,
16
- notify: () => undefined,
17
- actions: null,
18
- searchFiles: null,
19
- attachments: { useUrl: () => NO_URL, read: () => Promise.reject(new Error('This app keeps no attached files')) },
20
- ReadImage: null,
21
- code: { useMode: () => 'light', useThemes: () => ({ light: 'github-light', dark: 'github-dark' }), custom: [] },
22
- useStreaming: () => 'words',
23
- useSendDelivery: () => 'queue',
24
- fileLinks: null,
25
- useTimelineFind: () => NO_FIND,
26
- dictation: { Textarea: PlainTextarea, composer: null },
27
- prompts: { useExtra: () => NO_PROMPTS, render: () => null, answer: () => Promise.reject(new Error('This app raises no prompts of its own')) },
28
- useReferableChats: () => NO_CHATS,
29
- openLogin: null,
30
- useLoginBlocked: () => null,
31
- useProjectLook: () => null,
32
- useMachineLabel: () => null,
33
- useChatPlace: () => NOWHERE,
34
- useContextSources: () => NO_SOURCES,
35
- useHidesFolder: () => false,
36
- useWelcome: () => false,
37
- tasks: { useTasks: () => undefined, useTask: () => null },
38
- confirm: { stopSubagents: (_scopeId, _chatId, run) => run(), stopTask: (_scopeId, _childId, _title, run) => run() },
39
- fork: null,
40
- openNewChat: null,
41
- openSettings: () => undefined,
42
- useResumeAtReset: () => true,
43
- useComposerPlaceholder: () => null,
44
- ComposerSlot: null,
45
- SubagentSlot: null,
46
- useThreadCards: () => NO_CARDS,
47
- useReplyAuthor: () => null,
48
- visuals: null
26
+ accents: {
27
+ all: [],
28
+ featured: [],
29
+ label: id => id,
30
+ current: () => ''
31
+ },
32
+ isApplePlatform,
33
+ isAppShortcut: () => false,
34
+ notify: () => undefined,
35
+ actions: null,
36
+ searchFiles: null,
37
+ attachments: {
38
+ useUrl: () => NO_URL,
39
+ read: () => Promise.reject(new Error('This app keeps no attached files'))
40
+ },
41
+ ReadImage: null,
42
+ code: {
43
+ useMode: () => 'light',
44
+ useThemes: () => ({
45
+ light: 'github-light',
46
+ dark: 'github-dark'
47
+ }),
48
+ custom: []
49
+ },
50
+ useStreaming: () => 'words',
51
+ useSendDelivery: () => 'queue',
52
+ fileLinks: null,
53
+ useTimelineFind: () => NO_FIND,
54
+ dictation: {
55
+ Textarea: PlainTextarea,
56
+ composer: null
57
+ },
58
+ prompts: {
59
+ useExtra: () => NO_PROMPTS,
60
+ render: () => null,
61
+ answer: () => Promise.reject(new Error('This app raises no prompts of its own'))
62
+ },
63
+ useReferableChats: () => NO_CHATS,
64
+ openLogin: null,
65
+ useLoginBlocked: () => null,
66
+ useProjectLook: () => null,
67
+ useMachineLabel: () => null,
68
+ useChatPlace: () => NOWHERE,
69
+ useContextSources: () => NO_SOURCES,
70
+ useHidesFolder: () => false,
71
+ useWelcome: () => false,
72
+ tasks: {
73
+ useTasks: () => undefined,
74
+ useTask: () => null
75
+ },
76
+ confirm: {
77
+ stopSubagents: (_scopeId, _chatId, run) => run(),
78
+ stopTask: (_scopeId, _childId, _title, run) => run()
79
+ },
80
+ fork: null,
81
+ openNewChat: null,
82
+ openSettings: () => undefined,
83
+ useResumeAtReset: () => true,
84
+ useComposerPlaceholder: () => null,
85
+ ComposerSlot: null,
86
+ SubagentSlot: null,
87
+ useThreadCards: () => NO_CARDS,
88
+ useReplyAuthor: () => null,
89
+ visuals: null
49
90
  };
50
91
  const ChatHostContext = createContext(DEFAULT_HOST);
51
92
  /*
@@ -55,15 +96,46 @@ const ChatHostContext = createContext(DEFAULT_HOST);
55
96
  * The host is read once, as the provider mounts, since a hook that changed under a mounted view would
56
97
  * break the order of its hooks: a provider that gets another `host` throws, and a new `key` remounts it.
57
98
  */
58
- export function ChatHostProvider({ host, children }) {
59
- const parent = useContext(ChatHostContext);
60
- const [pinned] = useState(() => ({ host, value: { ...parent, ...host } }));
61
- if (pinned.host !== host) {
62
- throw new Error('A ChatHostProvider reads its host once: hand it the same object on every render, or a new key to mount it with another');
63
- }
64
- return createElement(ChatHostContext.Provider, { value: pinned.value }, children);
99
+ export function ChatHostProvider(t0) {
100
+ const $ = _c(6);
101
+ const {
102
+ host,
103
+ children
104
+ } = t0;
105
+ const parent = useContext(ChatHostContext);
106
+ let t1;
107
+ if ($[0] !== host || $[1] !== parent) {
108
+ t1 = () => ({
109
+ host,
110
+ value: {
111
+ ...parent,
112
+ ...host
113
+ }
114
+ });
115
+ $[0] = host;
116
+ $[1] = parent;
117
+ $[2] = t1;
118
+ } else {
119
+ t1 = $[2];
120
+ }
121
+ const [pinned] = useState(t1);
122
+ if (pinned.host !== host) {
123
+ throw new Error("A ChatHostProvider reads its host once: hand it the same object on every render, or a new key to mount it with another");
124
+ }
125
+ let t2;
126
+ if ($[3] !== children || $[4] !== pinned.value) {
127
+ t2 = createElement(ChatHostContext.Provider, {
128
+ value: pinned.value
129
+ }, children);
130
+ $[3] = children;
131
+ $[4] = pinned.value;
132
+ $[5] = t2;
133
+ } else {
134
+ t2 = $[5];
135
+ }
136
+ return t2;
65
137
  }
66
138
  /* The host of the nearest `ChatHostProvider`, or the defaults outside one. */
67
139
  export function useChatHost() {
68
- return useContext(ChatHostContext);
69
- }
140
+ return useContext(ChatHostContext);
141
+ }
package/dist/index.js CHANGED
@@ -7,4 +7,4 @@ export { configureAgentMarks } from './agents/agent-marks.js';
7
7
  export { configureChatStorage } from './storage.js';
8
8
  export { setLazyPrefetch, onLazyOpenError } from './lazy.js';
9
9
  export { MountedRegistry } from './mounted-registry.js';
10
- export { PROVIDERS_SECTION, USAGE_SECTION, settingsSection } from './settings/sections.js';
10
+ export { PROVIDERS_SECTION, USAGE_SECTION, settingsSection } from './settings/sections.js';
package/dist/lazy.js CHANGED
@@ -1,6 +1,6 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
2
1
  import { lazy } from 'react';
3
2
  import { LoadedComponent } from '@adecore/ui';
3
+ import { jsx as _jsx } from "react/jsx-runtime";
4
4
  const loaders = [];
5
5
  let register = null;
6
6
  const openErrorListeners = new Set();
@@ -9,20 +9,20 @@ const openErrorListeners = new Set();
9
9
  * one made from now on. Without it they load on their first render, as `React.lazy` does.
10
10
  */
11
11
  export function setLazyPrefetch(next) {
12
- register = next;
13
- for (const load of loaders) {
14
- next(load);
15
- }
12
+ register = next;
13
+ for (const load of loaders) {
14
+ next(load);
15
+ }
16
16
  }
17
17
  /*
18
18
  * Tells `listener` when a module the chat loads for a render fails to load, the way `onLazyOpenError`
19
19
  * of `@adecore/ui` does for the app's own. A failed prefetch never reaches it.
20
20
  */
21
21
  export function onLazyOpenError(listener) {
22
- openErrorListeners.add(listener);
23
- return () => {
24
- openErrorListeners.delete(listener);
25
- };
22
+ openErrorListeners.add(listener);
23
+ return () => {
24
+ openErrorListeners.delete(listener);
25
+ };
26
26
  }
27
27
  /*
28
28
  * `React.lazy` for a module that exports its component by name, `default` included. Once the module
@@ -30,28 +30,34 @@ export function onLazyOpenError(listener) {
30
30
  * module the prefetcher already fetched.
31
31
  */
32
32
  export function lazyNamed(load, name, options) {
33
- // Through `LoadedComponent`, so a `LazyBoundary` around it draws the moment the module lands.
34
- const loaded = new LoadedComponent(async () => (await load())[name]);
35
- const open = () => loaded.load();
36
- if (options?.prefetch !== false) {
37
- loaders.push(open);
38
- register?.(open);
33
+ // Through `LoadedComponent`, so a `LazyBoundary` around it draws the moment the module lands.
34
+ const loaded = new LoadedComponent(async () => (await load())[name]);
35
+ const open = () => loaded.load();
36
+ if (options?.prefetch !== false) {
37
+ loaders.push(open);
38
+ register?.(open);
39
+ }
40
+ // Only a render loads through here; a prefetch calls `open` itself, so its failures report nothing.
41
+ const Lazy = lazy(async () => {
42
+ try {
43
+ return {
44
+ default: await open()
45
+ };
46
+ } catch (error) {
47
+ for (const listener of openErrorListeners) {
48
+ listener(error);
49
+ }
50
+ throw error;
39
51
  }
40
- // Only a render loads through here; a prefetch calls `open` itself, so its failures report nothing.
41
- const Lazy = lazy(async () => {
42
- try {
43
- return { default: await open() };
44
- }
45
- catch (error) {
46
- for (const listener of openErrorListeners) {
47
- listener(error);
48
- }
49
- throw error;
50
- }
52
+ });
53
+ const LazyNamed = props => {
54
+ // `loaded` fills in place; compiled, the element drawn before the module landed would stay.
55
+ 'use no memo';
56
+
57
+ const Component = loaded.current ?? Lazy;
58
+ return /*#__PURE__*/_jsx(Component, {
59
+ ...props
51
60
  });
52
- const LazyNamed = (props) => {
53
- const Component = loaded.current ?? Lazy;
54
- return _jsx(Component, { ...props });
55
- };
56
- return LazyNamed;
57
- }
61
+ };
62
+ return LazyNamed;
63
+ }