@parallelworks/ui 0.44.0 → 0.46.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 (637) hide show
  1. package/README.md +348 -25
  2. package/dist/ai/agent/diff.d.ts +2 -1
  3. package/dist/ai/agent/diff.js +4 -12
  4. package/dist/ai/agent/diffHighlight.d.ts +1 -1
  5. package/dist/ai/agent/diffHighlight.js +4 -3
  6. package/dist/ai/agent/index.d.ts +2 -1
  7. package/dist/ai/agent/permissions.d.ts +1 -1
  8. package/dist/ai/agent/permissions.js +1 -1
  9. package/dist/ai/agent/toolStrings.d.ts +37 -0
  10. package/dist/ai/agent/toolStrings.js +35 -0
  11. package/dist/ai/agent/toolfmt.d.ts +8 -3
  12. package/dist/ai/agent/toolfmt.js +50 -65
  13. package/dist/ai/ai.css +22 -35
  14. package/dist/ai/components/AllocationSelector.js +2 -2
  15. package/dist/ai/components/AttachmentManager.js +28 -29
  16. package/dist/ai/components/AttachmentUpload.js +25 -30
  17. package/dist/ai/components/BlockedGroupBanner.js +2 -2
  18. package/dist/ai/components/BranchNavigator.js +3 -4
  19. package/dist/ai/components/ChatEmptyState.js +8 -7
  20. package/dist/ai/components/ChatInput.js +10 -12
  21. package/dist/ai/components/ChatLayout.js +3 -3
  22. package/dist/ai/components/ChatMessage.js +49 -61
  23. package/dist/ai/components/ChatMessageList.js +46 -42
  24. package/dist/ai/components/ChatSidebar.js +26 -34
  25. package/dist/ai/components/ChatStage.d.ts +1 -1
  26. package/dist/ai/components/ChatStage.js +2 -2
  27. package/dist/ai/components/ComposerChrome.js +3 -4
  28. package/dist/ai/components/DragOverlay.js +6 -4
  29. package/dist/ai/components/ModelSelector.js +14 -15
  30. package/dist/ai/components/PastedText.js +18 -14
  31. package/dist/ai/components/ProviderIssueBanner.js +3 -4
  32. package/dist/ai/components/Reasoning.d.ts +12 -6
  33. package/dist/ai/components/Reasoning.js +31 -18
  34. package/dist/ai/components/ShareDialog.js +25 -28
  35. package/dist/ai/components/SlashMenu.js +3 -3
  36. package/dist/ai/components/agent/ActivityLine.d.ts +0 -5
  37. package/dist/ai/components/agent/ActivityLine.js +17 -54
  38. package/dist/ai/components/agent/AgentMessageParts.js +139 -149
  39. package/dist/ai/components/conversationActions.js +16 -16
  40. package/dist/ai/core/ChatProvider.d.ts +2 -4
  41. package/dist/ai/core/ChatProvider.js +25 -38
  42. package/dist/ai/core/exportConversation.js +4 -4
  43. package/dist/ai/core/pasteLanguage.d.ts +1 -1
  44. package/dist/ai/core/pasteLanguage.js +1 -1
  45. package/dist/ai/core/sidebarState.d.ts +8 -6
  46. package/dist/ai/core/sidebarState.js +21 -28
  47. package/dist/ai/core/useKeyboardShortcuts.js +14 -5
  48. package/dist/ai/index.d.ts +4 -5
  49. package/dist/ai/index.js +7 -7
  50. package/dist/ai/strings.d.ts +14 -31
  51. package/dist/ai/strings.js +19 -39
  52. package/dist/ai/types.d.ts +0 -5
  53. package/dist/ai/ui/ConversationSidebar.d.ts +12 -9
  54. package/dist/ai/ui/ConversationSidebar.js +43 -87
  55. package/dist/ai/ui/Markdown.d.ts +3 -6
  56. package/dist/ai/ui/Markdown.js +6 -73
  57. package/dist/ai/ui/Notice.js +10 -12
  58. package/dist/ai/ui/chip.d.ts +2 -2
  59. package/dist/ai/ui/chip.js +1 -1
  60. package/dist/ai/ui/sidebar.d.ts +4 -20
  61. package/dist/ai/ui/sidebar.js +30 -67
  62. package/dist/ai/utils.d.ts +0 -1
  63. package/dist/ai/utils.js +1 -14
  64. package/dist/brandIcons.d.ts +51 -0
  65. package/dist/brandIcons.js +75 -0
  66. package/dist/components/Avatar.d.ts +3 -1
  67. package/dist/components/Avatar.js +34 -28
  68. package/dist/components/Button.d.ts +12 -7
  69. package/dist/components/Button.js +39 -44
  70. package/dist/components/Callout.js +18 -12
  71. package/dist/components/Card.d.ts +18 -8
  72. package/dist/components/Card.js +17 -6
  73. package/dist/components/Checkbox.d.ts +9 -0
  74. package/dist/components/Checkbox.js +30 -0
  75. package/dist/components/Combobox.d.ts +9 -1
  76. package/dist/components/Combobox.js +71 -44
  77. package/dist/components/ConfirmModal.js +11 -11
  78. package/dist/components/ContextMenu.d.ts +2 -8
  79. package/dist/components/ContextMenu.js +2 -29
  80. package/dist/components/CopyToClipboard.js +17 -36
  81. package/dist/components/CreateModal.d.ts +3 -24
  82. package/dist/components/CreateModal.js +46 -113
  83. package/dist/components/DatePicker.d.ts +31 -0
  84. package/dist/components/DatePicker.js +191 -0
  85. package/dist/components/DescriptionList.js +4 -4
  86. package/dist/components/Disclosure.d.ts +34 -0
  87. package/dist/components/Disclosure.js +46 -0
  88. package/dist/components/Drawer.d.ts +47 -0
  89. package/dist/components/Drawer.js +120 -0
  90. package/dist/components/EmptyState.d.ts +15 -10
  91. package/dist/components/EmptyState.js +13 -8
  92. package/dist/components/ExternalLink.d.ts +8 -0
  93. package/dist/components/ExternalLink.js +29 -0
  94. package/dist/components/Field.d.ts +70 -0
  95. package/dist/components/Field.js +159 -0
  96. package/dist/components/HoverCard.js +11 -14
  97. package/dist/components/IconButton.d.ts +16 -13
  98. package/dist/components/IconButton.js +27 -18
  99. package/dist/components/InfoTip.js +16 -23
  100. package/dist/components/Input.d.ts +10 -9
  101. package/dist/components/Input.js +54 -96
  102. package/dist/components/LetterBadge.js +2 -2
  103. package/dist/components/Loader.d.ts +15 -8
  104. package/dist/components/Loader.js +29 -19
  105. package/dist/components/Markdown.d.ts +7 -1
  106. package/dist/components/Markdown.js +2 -0
  107. package/dist/components/MarkdownImpl.d.ts +1 -1
  108. package/dist/components/MarkdownImpl.js +55 -14
  109. package/dist/components/Menu.js +13 -15
  110. package/dist/components/MenuEntries.js +11 -16
  111. package/dist/components/Meter.d.ts +48 -0
  112. package/dist/components/Meter.js +94 -0
  113. package/dist/components/Modal.js +11 -14
  114. package/dist/components/NumberInput.d.ts +25 -0
  115. package/dist/components/NumberInput.js +55 -0
  116. package/dist/components/Overview.js +12 -10
  117. package/dist/components/PageHeader.d.ts +2 -3
  118. package/dist/components/PageHeader.js +30 -21
  119. package/dist/components/Pagination.d.ts +27 -14
  120. package/dist/components/Pagination.js +86 -25
  121. package/dist/components/Popover.d.ts +47 -0
  122. package/dist/components/Popover.js +63 -0
  123. package/dist/components/Provider.d.ts +200 -83
  124. package/dist/components/Provider.js +203 -121
  125. package/dist/components/Radio.d.ts +1 -1
  126. package/dist/components/Radio.js +4 -4
  127. package/dist/components/RefreshButton.d.ts +15 -0
  128. package/dist/components/RefreshButton.js +53 -0
  129. package/dist/components/RunStatusIcon.d.ts +12 -0
  130. package/dist/components/RunStatusIcon.js +84 -0
  131. package/dist/components/SearchInput.d.ts +16 -0
  132. package/dist/components/SearchInput.js +52 -0
  133. package/dist/components/Section.d.ts +28 -0
  134. package/dist/components/Section.js +76 -0
  135. package/dist/components/SegmentedControl.d.ts +7 -11
  136. package/dist/components/SegmentedControl.js +25 -56
  137. package/dist/components/Select.d.ts +5 -1
  138. package/dist/components/Select.js +43 -44
  139. package/dist/components/SettingModeOption.d.ts +3 -5
  140. package/dist/components/SettingModeOption.js +5 -6
  141. package/dist/components/SettingsCard.d.ts +32 -19
  142. package/dist/components/SettingsCard.js +40 -13
  143. package/dist/components/Skeleton.d.ts +22 -0
  144. package/dist/components/Skeleton.js +34 -0
  145. package/dist/components/Slider.d.ts +16 -0
  146. package/dist/components/Slider.js +30 -0
  147. package/dist/components/Sort.js +4 -6
  148. package/dist/components/StatusBadge.d.ts +5 -3
  149. package/dist/components/StatusBadge.js +10 -33
  150. package/dist/components/StatusIcons.d.ts +0 -4
  151. package/dist/components/StatusIcons.js +5 -13
  152. package/dist/components/Switch.d.ts +5 -1
  153. package/dist/components/Switch.js +23 -6
  154. package/dist/components/Table.js +13 -20
  155. package/dist/components/Tabs.d.ts +52 -0
  156. package/dist/components/Tabs.js +75 -0
  157. package/dist/components/ThemeEditor.d.ts +29 -0
  158. package/dist/components/ThemeEditor.js +397 -0
  159. package/dist/components/Toast.d.ts +57 -0
  160. package/dist/components/Toast.js +203 -0
  161. package/dist/components/Tooltip.js +12 -15
  162. package/dist/components/buttonClasses.d.ts +18 -0
  163. package/dist/components/buttonClasses.js +31 -0
  164. package/dist/components/codeTheme.d.ts +5 -0
  165. package/dist/components/codeTheme.js +93 -0
  166. package/dist/components/comboboxItems.d.ts +1 -1
  167. package/dist/components/fieldBox.d.ts +14 -0
  168. package/dist/components/fieldBox.js +29 -0
  169. package/dist/components/floating.d.ts +26 -5
  170. package/dist/components/floating.js +31 -9
  171. package/dist/{ai/ui/codeBreaks.js → components/markdownCodeBreaks.js} +1 -1
  172. package/dist/components/persistedState.d.ts +2 -0
  173. package/dist/components/persistedState.js +63 -0
  174. package/dist/components/relativeTime.d.ts +36 -8
  175. package/dist/components/relativeTime.js +106 -23
  176. package/dist/components/segmented.d.ts +17 -0
  177. package/dist/components/segmented.js +27 -0
  178. package/dist/components/shortcutKey.d.ts +4 -0
  179. package/dist/components/shortcutKey.js +27 -0
  180. package/dist/components/splitter.d.ts +26 -0
  181. package/dist/components/splitter.js +69 -0
  182. package/dist/components/tone.d.ts +9 -0
  183. package/dist/components/tone.js +30 -0
  184. package/dist/components/useCopy.d.ts +14 -0
  185. package/dist/components/useCopy.js +31 -0
  186. package/dist/components/useCssIsDark.d.ts +2 -0
  187. package/dist/components/useCssIsDark.js +2 -1
  188. package/dist/components/useTheme.d.ts +10 -0
  189. package/dist/components/useTheme.js +40 -0
  190. package/dist/cx.d.ts +5 -0
  191. package/dist/cx.js +11 -0
  192. package/dist/editing.d.ts +1 -1
  193. package/dist/editor/Editor.js +2 -2
  194. package/dist/editor/EditorField.js +7 -10
  195. package/dist/editor/FormCodePanel.js +10 -23
  196. package/dist/editor/Monaco.js +7 -4
  197. package/dist/editor/index.d.ts +1 -1
  198. package/dist/editor/index.js +2 -2
  199. package/dist/editor/themes.d.ts +4 -0
  200. package/dist/editor/themes.js +75 -76
  201. package/dist/file-explorer/FileExplorer.js +180 -187
  202. package/dist/file-explorer/FileExplorerContext.js +45 -67
  203. package/dist/file-explorer/FilePreview/CodePreviewEditor.js +2 -1
  204. package/dist/file-explorer/FilePreview/Inline.js +9 -7
  205. package/dist/file-explorer/FilePreview/StreamedBadge.js +2 -2
  206. package/dist/file-explorer/FilePreview/Viewer.js +32 -34
  207. package/dist/file-explorer/FilePreview/index.js +60 -92
  208. package/dist/file-explorer/FilePreview/useObjectBlobUrl.js +4 -4
  209. package/dist/file-explorer/FilePreview/useObjectText.js +4 -4
  210. package/dist/file-explorer/FilePreview/usePresignedUrl.js +4 -4
  211. package/dist/file-explorer/FileRow.js +10 -15
  212. package/dist/file-explorer/FileRowsWindow.js +2 -6
  213. package/dist/file-explorer/FileTable.js +2 -2
  214. package/dist/file-explorer/FileTableHeaders.js +8 -11
  215. package/dist/file-explorer/LoadMoreRow.js +8 -9
  216. package/dist/file-explorer/TreeView.js +16 -16
  217. package/dist/file-explorer/helpers.d.ts +1 -4
  218. package/dist/file-explorer/helpers.js +101 -114
  219. package/dist/file-explorer/lib/types.d.ts +2 -2
  220. package/dist/file-explorer/lib/utils.d.ts +0 -2
  221. package/dist/file-explorer/lib/utils.js +1 -25
  222. package/dist/file-explorer/toasts.js +109 -190
  223. package/dist/form/Fields/BooleanField.js +12 -14
  224. package/dist/form/Fields/CheckboxGroupField.d.ts +1 -1
  225. package/dist/form/Fields/CheckboxGroupField.js +16 -18
  226. package/dist/form/Fields/ColorField.js +11 -11
  227. package/dist/form/Fields/DropdownField.d.ts +1 -1
  228. package/dist/form/Fields/DropdownField.js +20 -36
  229. package/dist/form/Fields/DurationField.d.ts +1 -1
  230. package/dist/form/Fields/DurationField.js +36 -50
  231. package/dist/form/Fields/LabelField.js +2 -2
  232. package/dist/form/Fields/MultiDropdownField.d.ts +1 -1
  233. package/dist/form/Fields/MultiDropdownField.js +9 -14
  234. package/dist/form/Fields/NumberField.d.ts +1 -1
  235. package/dist/form/Fields/NumberField.js +13 -48
  236. package/dist/form/Fields/ObjectField.js +3 -3
  237. package/dist/form/Fields/RadioField.d.ts +1 -1
  238. package/dist/form/Fields/RadioField.js +15 -18
  239. package/dist/form/Fields/RangeField.js +34 -35
  240. package/dist/form/Fields/StringField.d.ts +1 -1
  241. package/dist/form/Fields/StringField.js +15 -25
  242. package/dist/form/Fields/TextAreaField.js +10 -15
  243. package/dist/form/Form.d.ts +7 -2
  244. package/dist/form/Form.js +144 -49
  245. package/dist/form/FormLayout.js +18 -12
  246. package/dist/form/Wizard/WizardContainer.js +44 -18
  247. package/dist/form/Wizard/WizardNavigation.d.ts +1 -1
  248. package/dist/form/Wizard/WizardNavigation.js +31 -56
  249. package/dist/form/Wizard/WizardStepIndicator.d.ts +3 -0
  250. package/dist/form/Wizard/WizardStepIndicator.js +98 -114
  251. package/dist/form/Wizard/types.d.ts +2 -2
  252. package/dist/form/fieldFrame.d.ts +7 -0
  253. package/dist/form/fieldFrame.js +19 -0
  254. package/dist/form/index.d.ts +5 -5
  255. package/dist/form/index.js +4 -6
  256. package/dist/form/layoutCSS.js +5 -4
  257. package/dist/form/types/fieldComponentTypes.d.ts +5 -3
  258. package/dist/form/useChoiceField.js +2 -3
  259. package/dist/form/useFieldValue.d.ts +3 -0
  260. package/dist/form/useFieldValue.js +24 -7
  261. package/dist/form/utils/duration.d.ts +2 -2
  262. package/dist/form/utils/duration.js +3 -3
  263. package/dist/form/utils/fieldItems.d.ts +1 -1
  264. package/dist/form/utils/fieldPath.d.ts +5 -3
  265. package/dist/form/utils/fieldPath.js +18 -3
  266. package/dist/form/utils/secondaryField.d.ts +0 -7
  267. package/dist/form/utils/secondaryField.js +1 -12
  268. package/dist/form/validation.d.ts +29 -0
  269. package/dist/form/validation.js +14 -0
  270. package/dist/format.d.ts +28 -0
  271. package/dist/format.js +64 -0
  272. package/dist/graph/AnnotationBanner.js +20 -31
  273. package/dist/graph/Connectors.js +1 -1
  274. package/dist/graph/DependencyGraph.js +51 -65
  275. package/dist/graph/GraphEditor.js +24 -28
  276. package/dist/graph/GraphEditorDialogs.js +239 -245
  277. package/dist/graph/InputDialog.js +93 -112
  278. package/dist/graph/InputsEditor.js +83 -84
  279. package/dist/graph/JobSummary.js +10 -11
  280. package/dist/graph/MatrixGroup.js +3 -3
  281. package/dist/graph/ProblemsButton.js +9 -10
  282. package/dist/graph/ShortcutsButton.js +12 -17
  283. package/dist/graph/SuggestionInput.d.ts +2 -3
  284. package/dist/graph/SuggestionInput.js +2 -4
  285. package/dist/graph/TreeView.js +47 -45
  286. package/dist/graph/WorkflowSettingsDialog.js +97 -102
  287. package/dist/graph/editorChrome.js +10 -12
  288. package/dist/graph/editorFields.d.ts +19 -16
  289. package/dist/graph/editorFields.js +97 -135
  290. package/dist/graph/editorPrimitives.d.ts +2 -2
  291. package/dist/graph/editorPrimitives.js +3 -3
  292. package/dist/graph/editorRows.js +22 -25
  293. package/dist/graph/editorStrings.d.ts +18 -21
  294. package/dist/graph/editorStrings.js +15 -27
  295. package/dist/graph/fieldProblems.js +2 -2
  296. package/dist/graph/graphEditorState.d.ts +4 -4
  297. package/dist/graph/inputRefs.d.ts +0 -13
  298. package/dist/graph/inputRefs.js +122 -160
  299. package/dist/graph/settingsViews.js +5 -3
  300. package/dist/graph/stepWith.js +100 -100
  301. package/dist/graph/toolbarPanel.d.ts +8 -0
  302. package/dist/graph/toolbarPanel.js +11 -0
  303. package/dist/icons.d.ts +234 -23
  304. package/dist/icons.js +249 -264
  305. package/dist/index.d.ts +38 -21
  306. package/dist/index.js +42 -21
  307. package/dist/list/ActionToolbar.d.ts +1 -5
  308. package/dist/list/ActionToolbar.js +21 -20
  309. package/dist/list/ListPage.js +7 -7
  310. package/dist/list/ListTable.d.ts +3 -2
  311. package/dist/list/ListTable.js +33 -29
  312. package/dist/list/ListViewControls.d.ts +0 -17
  313. package/dist/list/ListViewControls.js +50 -118
  314. package/dist/list/UserHoverCard.js +24 -32
  315. package/dist/list/index.d.ts +2 -4
  316. package/dist/list/index.js +3 -5
  317. package/dist/list/listSearch.d.ts +1 -1
  318. package/dist/list/listSearch.js +19 -14
  319. package/dist/list/rowMenu.js +20 -26
  320. package/dist/logviewer/LogViewer.js +268 -382
  321. package/dist/logviewer/logviewer.css +53 -41
  322. package/dist/logviewer/segments.d.ts +1 -1
  323. package/dist/logviewer/segments.js +1 -1
  324. package/dist/styles/base.css +16 -40
  325. package/dist/styles/theme.css +75 -106
  326. package/dist/styles.css +1 -1
  327. package/dist/theme/color.d.ts +40 -0
  328. package/dist/theme/color.js +228 -0
  329. package/dist/theme/contrast.d.ts +42 -0
  330. package/dist/theme/contrast.js +145 -0
  331. package/dist/theme/derive.d.ts +25 -0
  332. package/dist/theme/derive.js +475 -0
  333. package/dist/theme/fit.d.ts +35 -0
  334. package/dist/theme/fit.js +185 -0
  335. package/dist/theme/index.d.ts +14 -29
  336. package/dist/theme/index.js +20 -279
  337. package/dist/theme/model.d.ts +64 -0
  338. package/dist/theme/model.js +219 -0
  339. package/package.json +9 -5
  340. package/dist/ai/ui/Avatar.d.ts +0 -7
  341. package/dist/ai/ui/Avatar.js +0 -24
  342. package/dist/components/Filter.d.ts +0 -15
  343. package/dist/components/Filter.js +0 -32
  344. package/dist/components/FilterPill.d.ts +0 -7
  345. package/dist/components/FilterPill.js +0 -14
  346. package/dist/components/Indicator.d.ts +0 -4
  347. package/dist/components/Indicator.js +0 -44
  348. package/dist/components/SectionHeader.d.ts +0 -8
  349. package/dist/components/SectionHeader.js +0 -11
  350. package/dist/components/SettingRow.d.ts +0 -18
  351. package/dist/components/SettingRow.js +0 -35
  352. package/dist/components/SettingsGroup.d.ts +0 -8
  353. package/dist/components/SettingsGroup.js +0 -17
  354. package/dist/components/ghostButton.d.ts +0 -4
  355. package/dist/components/ghostButton.js +0 -7
  356. package/dist/components/inputClasses.d.ts +0 -1
  357. package/dist/components/inputClasses.js +0 -4
  358. package/dist/duration.d.ts +0 -3
  359. package/dist/duration.js +0 -17
  360. package/dist/form/FieldGroup.d.ts +0 -11
  361. package/dist/form/FieldGroup.js +0 -36
  362. package/dist/form/FieldWrapper.d.ts +0 -16
  363. package/dist/form/FieldWrapper.js +0 -55
  364. package/dist/form/fieldContext.d.ts +0 -19
  365. package/dist/form/fieldContext.js +0 -26
  366. package/dist/graph/Collapse.d.ts +0 -7
  367. package/dist/graph/Collapse.js +0 -15
  368. package/dist/graph/ToolbarPopover.d.ts +0 -13
  369. package/dist/graph/ToolbarPopover.js +0 -39
  370. package/dist/icons/ai/AiOutlineRollback.js +0 -16
  371. package/dist/icons/bi/BiBell.js +0 -16
  372. package/dist/icons/bi/BiBellOff.js +0 -16
  373. package/dist/icons/bi/BiBuildings.js +0 -20
  374. package/dist/icons/bi/BiError.js +0 -20
  375. package/dist/icons/bi/BiExpandVertical.js +0 -16
  376. package/dist/icons/bi/BiPause.js +0 -16
  377. package/dist/icons/bi/BiPlay.js +0 -16
  378. package/dist/icons/bi/BiRedo.js +0 -16
  379. package/dist/icons/bi/BiSolidCheckShield.js +0 -16
  380. package/dist/icons/bi/BiSolidTrashAlt.js +0 -16
  381. package/dist/icons/bi/BiStop.js +0 -16
  382. package/dist/icons/bi/BiUndo.js +0 -16
  383. package/dist/icons/bs/BsArrowsCollapse.js +0 -22
  384. package/dist/icons/bs/BsBank2.js +0 -19
  385. package/dist/icons/bs/BsBriefcase.js +0 -19
  386. package/dist/icons/bs/BsBucket.js +0 -19
  387. package/dist/icons/bs/BsCalendarX.js +0 -23
  388. package/dist/icons/bs/BsChatLeft.js +0 -19
  389. package/dist/icons/bs/BsChevronDoubleDown.js +0 -29
  390. package/dist/icons/bs/BsChevronDoubleUp.js +0 -29
  391. package/dist/icons/bs/BsClipboardCheck.js +0 -34
  392. package/dist/icons/bs/BsCurrencyDollar.js +0 -19
  393. package/dist/icons/bs/BsDash.js +0 -19
  394. package/dist/icons/bs/BsFileEarmarkZip.js +0 -23
  395. package/dist/icons/bs/BsFiles.js +0 -19
  396. package/dist/icons/bs/BsGeoAlt.js +0 -23
  397. package/dist/icons/bs/BsGrid.js +0 -19
  398. package/dist/icons/bs/BsLayers.js +0 -19
  399. package/dist/icons/bs/BsLayoutThreeColumns.js +0 -19
  400. package/dist/icons/bs/BsListUl.js +0 -22
  401. package/dist/icons/bs/BsMortarboard.js +0 -23
  402. package/dist/icons/bs/BsMusicNoteBeamed.js +0 -34
  403. package/dist/icons/bs/BsOpenai.js +0 -19
  404. package/dist/icons/bs/BsPersonPlus.js +0 -26
  405. package/dist/icons/bs/BsSearch.js +0 -19
  406. package/dist/icons/bs/BsSend.js +0 -19
  407. package/dist/icons/bs/BsShieldSlash.js +0 -22
  408. package/dist/icons/bs/BsStar.js +0 -19
  409. package/dist/icons/bs/BsStarFill.js +0 -19
  410. package/dist/icons/bs/BsStopCircle.js +0 -23
  411. package/dist/icons/bs/BsTag.js +0 -23
  412. package/dist/icons/bs/BsTelephone.js +0 -19
  413. package/dist/icons/bs/BsTerminal.js +0 -23
  414. package/dist/icons/bs/BsTerminalFill.js +0 -19
  415. package/dist/icons/bs/BsThreeDots.js +0 -19
  416. package/dist/icons/bs/BsThreeDotsVertical.js +0 -19
  417. package/dist/icons/bs/BsZoomIn.js +0 -37
  418. package/dist/icons/fa/FaAmazon.js +0 -16
  419. package/dist/icons/fa/FaAngleDown.js +0 -16
  420. package/dist/icons/fa/FaAngleLeft.js +0 -16
  421. package/dist/icons/fa/FaAngleRight.js +0 -16
  422. package/dist/icons/fa/FaAngleUp.js +0 -16
  423. package/dist/icons/fa/FaArrowDown.js +0 -16
  424. package/dist/icons/fa/FaArrowLeft.js +0 -16
  425. package/dist/icons/fa/FaArrowRight.js +0 -16
  426. package/dist/icons/fa/FaArrowUp.js +0 -16
  427. package/dist/icons/fa/FaBalanceScale.js +0 -16
  428. package/dist/icons/fa/FaCaretDown.js +0 -16
  429. package/dist/icons/fa/FaCentos.js +0 -16
  430. package/dist/icons/fa/FaChartLine.js +0 -16
  431. package/dist/icons/fa/FaChartPie.js +0 -16
  432. package/dist/icons/fa/FaCheck.js +0 -16
  433. package/dist/icons/fa/FaChevronDown.js +0 -16
  434. package/dist/icons/fa/FaChevronUp.js +0 -16
  435. package/dist/icons/fa/FaChrome.js +0 -16
  436. package/dist/icons/fa/FaCircleNotch.js +0 -16
  437. package/dist/icons/fa/FaCloud.js +0 -16
  438. package/dist/icons/fa/FaCloudDownloadAlt.js +0 -16
  439. package/dist/icons/fa/FaCog.js +0 -16
  440. package/dist/icons/fa/FaCogs.js +0 -16
  441. package/dist/icons/fa/FaComments.js +0 -16
  442. package/dist/icons/fa/FaCompress.js +0 -16
  443. package/dist/icons/fa/FaDesktop.js +0 -16
  444. package/dist/icons/fa/FaDocker.js +0 -16
  445. package/dist/icons/fa/FaDollarSign.js +0 -16
  446. package/dist/icons/fa/FaEdge.js +0 -16
  447. package/dist/icons/fa/FaEdit.js +0 -16
  448. package/dist/icons/fa/FaExclamationTriangle.js +0 -16
  449. package/dist/icons/fa/FaExpand.js +0 -16
  450. package/dist/icons/fa/FaEye.js +0 -16
  451. package/dist/icons/fa/FaEyeSlash.js +0 -16
  452. package/dist/icons/fa/FaFile.js +0 -16
  453. package/dist/icons/fa/FaFilePdf.js +0 -16
  454. package/dist/icons/fa/FaFilter.js +0 -16
  455. package/dist/icons/fa/FaFirefoxBrowser.js +0 -16
  456. package/dist/icons/fa/FaFlask.js +0 -16
  457. package/dist/icons/fa/FaFolder.js +0 -16
  458. package/dist/icons/fa/FaGithub.js +0 -16
  459. package/dist/icons/fa/FaGitlab.js +0 -16
  460. package/dist/icons/fa/FaGlobe.js +0 -16
  461. package/dist/icons/fa/FaGlobeAmericas.js +0 -16
  462. package/dist/icons/fa/FaImage.js +0 -16
  463. package/dist/icons/fa/FaInfoCircle.js +0 -16
  464. package/dist/icons/fa/FaKey.js +0 -16
  465. package/dist/icons/fa/FaLayerGroup.js +0 -16
  466. package/dist/icons/fa/FaLink.js +0 -16
  467. package/dist/icons/fa/FaLinkedin.js +0 -16
  468. package/dist/icons/fa/FaLinux.js +0 -16
  469. package/dist/icons/fa/FaList.js +0 -16
  470. package/dist/icons/fa/FaLock.js +0 -16
  471. package/dist/icons/fa/FaOpenid.js +0 -16
  472. package/dist/icons/fa/FaOpera.js +0 -16
  473. package/dist/icons/fa/FaPaperclip.js +0 -16
  474. package/dist/icons/fa/FaPlus.js +0 -16
  475. package/dist/icons/fa/FaPowerOff.js +0 -16
  476. package/dist/icons/fa/FaPrint.js +0 -16
  477. package/dist/icons/fa/FaQrcode.js +0 -16
  478. package/dist/icons/fa/FaQuestionCircle.js +0 -16
  479. package/dist/icons/fa/FaRedhat.js +0 -16
  480. package/dist/icons/fa/FaRegCircle.js +0 -16
  481. package/dist/icons/fa/FaRegFileImage.js +0 -16
  482. package/dist/icons/fa/FaRegFolder.js +0 -16
  483. package/dist/icons/fa/FaRobot.js +0 -16
  484. package/dist/icons/fa/FaRocket.js +0 -16
  485. package/dist/icons/fa/FaRunning.js +0 -16
  486. package/dist/icons/fa/FaSafari.js +0 -16
  487. package/dist/icons/fa/FaSave.js +0 -16
  488. package/dist/icons/fa/FaSearch.js +0 -16
  489. package/dist/icons/fa/FaShieldAlt.js +0 -16
  490. package/dist/icons/fa/FaSlack.js +0 -16
  491. package/dist/icons/fa/FaStar.js +0 -16
  492. package/dist/icons/fa/FaStop.js +0 -16
  493. package/dist/icons/fa/FaSuse.js +0 -16
  494. package/dist/icons/fa/FaTerminal.js +0 -16
  495. package/dist/icons/fa/FaTimes.js +0 -16
  496. package/dist/icons/fa/FaUbuntu.js +0 -16
  497. package/dist/icons/fa/FaUndoAlt.js +0 -16
  498. package/dist/icons/fa/FaUnlink.js +0 -16
  499. package/dist/icons/fa/FaUser.js +0 -16
  500. package/dist/icons/fa/FaUsers.js +0 -16
  501. package/dist/icons/fa/FaWindows.js +0 -16
  502. package/dist/icons/fa6/FaApple.js +0 -16
  503. package/dist/icons/fa6/FaArrowsRotate.js +0 -16
  504. package/dist/icons/fa6/FaDebian.js +0 -16
  505. package/dist/icons/fa6/FaFilterCircleXmark.js +0 -16
  506. package/dist/icons/fa6/FaInbox.js +0 -16
  507. package/dist/icons/fa6/FaLocationDot.js +0 -16
  508. package/dist/icons/fa6/FaRegFilePdf.js +0 -16
  509. package/dist/icons/fa6/FaRegFolderOpen.js +0 -16
  510. package/dist/icons/fa6/FaUpRightFromSquare.js +0 -16
  511. package/dist/icons/fa6/FaWandMagicSparkles.js +0 -16
  512. package/dist/icons/fa6/FaXTwitter.js +0 -16
  513. package/dist/icons/fi/FiActivity.js +0 -23
  514. package/dist/icons/fi/FiAlertCircle.js +0 -49
  515. package/dist/icons/fi/FiChevronDown.js +0 -23
  516. package/dist/icons/fi/FiClock.js +0 -31
  517. package/dist/icons/fi/FiCopy.js +0 -34
  518. package/dist/icons/fi/FiDownload.js +0 -40
  519. package/dist/icons/fi/FiFile.js +0 -27
  520. package/dist/icons/fi/FiFileText.js +0 -55
  521. package/dist/icons/fi/FiHardDrive.js +0 -55
  522. package/dist/icons/fi/FiRotateCcw.js +0 -27
  523. package/dist/icons/fi/FiUpload.js +0 -40
  524. package/dist/icons/fi/FiX.js +0 -37
  525. package/dist/icons/fi/FiZap.js +0 -23
  526. package/dist/icons/gi/GiSpy.js +0 -16
  527. package/dist/icons/go/GoGitCommit.js +0 -16
  528. package/dist/icons/go/GoGitPullRequest.js +0 -20
  529. package/dist/icons/go/GoIssueOpened.js +0 -16
  530. package/dist/icons/go/GoPlus.js +0 -16
  531. package/dist/icons/go/GoRepoForked.js +0 -28
  532. package/dist/icons/go/GoSignOut.js +0 -16
  533. package/dist/icons/go/GoSkip.js +0 -20
  534. package/dist/icons/go/GoVideo.js +0 -20
  535. package/dist/icons/gr/GrCloudComputer.js +0 -20
  536. package/dist/icons/gr/GrInbox.js +0 -20
  537. package/dist/icons/gr/GrServerCluster.js +0 -20
  538. package/dist/icons/gr/GrStorage.js +0 -20
  539. package/dist/icons/gr/GrTasks.js +0 -20
  540. package/dist/icons/hi/HiCog.js +0 -24
  541. package/dist/icons/hi/HiDuplicate.js +0 -24
  542. package/dist/icons/hi/HiOutlineArchive.js +0 -26
  543. package/dist/icons/hi/HiOutlineClipboardCopy.js +0 -26
  544. package/dist/icons/hi/HiOutlineHome.js +0 -26
  545. package/dist/icons/hi/HiQuestionMarkCircle.js +0 -24
  546. package/dist/icons/hi/HiServer.js +0 -24
  547. package/dist/icons/hi2/HiMiniCheckCircle.js +0 -24
  548. package/dist/icons/hi2/HiMiniLanguage.js +0 -28
  549. package/dist/icons/hi2/HiMiniMinusCircle.js +0 -24
  550. package/dist/icons/hi2/HiMiniXCircle.js +0 -24
  551. package/dist/icons/hi2/HiSparkles.js +0 -24
  552. package/dist/icons/im/ImSpinner5.js +0 -19
  553. package/dist/icons/io/IoIosNotifications.js +0 -16
  554. package/dist/icons/io/IoMdBuild.js +0 -16
  555. package/dist/icons/io/IoMdClose.js +0 -16
  556. package/dist/icons/io5/IoCloudUploadOutline.js +0 -32
  557. package/dist/icons/io5/IoDocumentTextOutline.js +0 -31
  558. package/dist/icons/io5/IoFileTrayFullOutline.js +0 -31
  559. package/dist/icons/io5/IoHeart.js +0 -16
  560. package/dist/icons/io5/IoHeartDislike.js +0 -16
  561. package/dist/icons/io5/IoHeartOutline.js +0 -22
  562. package/dist/icons/io5/IoInformationCircleOutline.js +0 -50
  563. package/dist/icons/io5/IoSettingsOutline.js +0 -22
  564. package/dist/icons/io5/IoWarningOutline.js +0 -40
  565. package/dist/icons/lu/LuArrowRight.js +0 -27
  566. package/dist/icons/lu/LuBadgeCheck.js +0 -27
  567. package/dist/icons/lu/LuBraces.js +0 -27
  568. package/dist/icons/lu/LuBrainCircuit.js +0 -101
  569. package/dist/icons/lu/LuCalendar.js +0 -46
  570. package/dist/icons/lu/LuCheck.js +0 -23
  571. package/dist/icons/lu/LuChevronLeft.js +0 -23
  572. package/dist/icons/lu/LuChevronRight.js +0 -23
  573. package/dist/icons/lu/LuCode.js +0 -27
  574. package/dist/icons/lu/LuExternalLink.js +0 -35
  575. package/dist/icons/lu/LuEye.js +0 -31
  576. package/dist/icons/lu/LuEyeOff.js +0 -40
  577. package/dist/icons/lu/LuFolderTree.js +0 -40
  578. package/dist/icons/lu/LuIdCard.js +0 -55
  579. package/dist/icons/lu/LuKeyboard.js +0 -71
  580. package/dist/icons/lu/LuLogs.js +0 -65
  581. package/dist/icons/lu/LuMail.js +0 -33
  582. package/dist/icons/lu/LuMegaphone.js +0 -27
  583. package/dist/icons/lu/LuMoon.js +0 -23
  584. package/dist/icons/lu/LuNetwork.js +0 -63
  585. package/dist/icons/lu/LuPartyPopper.js +0 -65
  586. package/dist/icons/lu/LuSettings2.js +0 -48
  587. package/dist/icons/lu/LuSheet.js +0 -72
  588. package/dist/icons/lu/LuShield.js +0 -23
  589. package/dist/icons/lu/LuSun.js +0 -69
  590. package/dist/icons/lu/LuTextCursorInput.js +0 -45
  591. package/dist/icons/lu/LuX.js +0 -27
  592. package/dist/icons/lu/LuZoomIn.js +0 -59
  593. package/dist/icons/lu/LuZoomOut.js +0 -49
  594. package/dist/icons/md/MdClear.js +0 -23
  595. package/dist/icons/md/MdDragHandle.js +0 -23
  596. package/dist/icons/md/MdInstallDesktop.js +0 -31
  597. package/dist/icons/md/MdOutlineAttachMoney.js +0 -23
  598. package/dist/icons/md/MdOutlineMoneyOff.js +0 -23
  599. package/dist/icons/md/MdPieChart.js +0 -23
  600. package/dist/icons/md/MdRefresh.js +0 -23
  601. package/dist/icons/md/MdReplay.js +0 -23
  602. package/dist/icons/md/MdSmartphone.js +0 -23
  603. package/dist/icons/pi/PiArrowBendUpRightBold.js +0 -19
  604. package/dist/icons/pi/PiPlugsConnectedFill.js +0 -19
  605. package/dist/icons/pi/PiRectangleDashed.js +0 -19
  606. package/dist/icons/pi/PiShareBold.js +0 -19
  607. package/dist/icons/si/SiAnthropic.js +0 -19
  608. package/dist/icons/si/SiHelm.js +0 -19
  609. package/dist/icons/si/SiKubernetes.js +0 -19
  610. package/dist/icons/tb/TbAlertTriangle.js +0 -35
  611. package/dist/icons/tb/TbAlertTriangleFilled.js +0 -19
  612. package/dist/icons/tb/TbApi.js +0 -40
  613. package/dist/icons/tb/TbBrain.js +0 -50
  614. package/dist/icons/tb/TbBuildingTunnel.js +0 -65
  615. package/dist/icons/tb/TbEdit.js +0 -35
  616. package/dist/icons/tb/TbLayoutSidebar.js +0 -27
  617. package/dist/icons/tb/TbLayoutSidebarLeftCollapse.js +0 -35
  618. package/dist/icons/tb/TbLayoutSidebarRightCollapse.js +0 -35
  619. package/dist/icons/tb/TbUser.js +0 -27
  620. package/dist/icons/tb/TbUserOff.js +0 -35
  621. package/dist/icons/tb/TbWorldShare.js +0 -55
  622. package/dist/icons/tb/TbWorldWww.js +0 -65
  623. package/dist/icons/ti/TiArrowSortedDown.js +0 -20
  624. package/dist/icons/ti/TiArrowSortedUp.js +0 -20
  625. package/dist/icons/ti/TiArrowUnsorted.js +0 -20
  626. package/dist/icons/ti/TiCancel.js +0 -20
  627. package/dist/icons/vsc/VscChromeMinimize.js +0 -19
  628. package/dist/icons/vsc/VscJson.js +0 -19
  629. package/dist/icons/vsc/VscLayoutSidebarLeft.js +0 -19
  630. package/dist/icons/vsc/VscPass.js +0 -27
  631. package/dist/icons/vsc/VscSplitHorizontal.js +0 -19
  632. package/dist/icons/vsc/VscTerminalPowershell.js +0 -19
  633. package/dist/list/ListPager.d.ts +0 -14
  634. package/dist/list/ListPager.js +0 -62
  635. package/dist/list/textEntry.d.ts +0 -2
  636. package/dist/list/textEntry.js +0 -10
  637. /package/dist/{ai/ui/codeBreaks.d.ts → components/markdownCodeBreaks.d.ts} +0 -0
@@ -1,26 +1,15 @@
1
+ import { toast } from "../../components/Toast.js";
2
+ import { usePersistedState } from "../../components/Provider.js";
1
3
  import { applyPartDelta, finalizeParts, toolTurnMessages } from "./parts.js";
2
4
  import { chatReducer, initialState } from "./chatReducer.js";
3
5
  import { ChatConfigProvider, resolveChatConfig } from "./config.js";
4
6
  import { providerIssueFor } from "./providerIssues.js";
5
- import { ReportSidebarPresentationContext, readStoredSidebar, storeSidebar, useControllable } from "./sidebarState.js";
7
+ import { ReportSidebarPresentationContext, useControllable, useOwnSidebar } from "./sidebarState.js";
6
8
  import { useSSEStream } from "./useSSEStream.js";
7
9
  import { jsx } from "react/jsx-runtime";
8
10
  import { createContext, useCallback, useContext, useEffect, useMemo, useReducer, useRef, useState } from "react";
9
11
  import { DateTime } from "luxon";
10
12
  //#region src/ai/core/ChatProvider.tsx
11
- var SELECTED_MODEL_STORAGE_KEY = "aiChatSelectedModel";
12
- function readStoredModel() {
13
- try {
14
- return globalThis.localStorage?.getItem(SELECTED_MODEL_STORAGE_KEY) ?? null;
15
- } catch {
16
- return null;
17
- }
18
- }
19
- function storeSelectedModel(modelId) {
20
- try {
21
- globalThis.localStorage?.setItem(SELECTED_MODEL_STORAGE_KEY, modelId);
22
- } catch {}
23
- }
24
13
  function generateTitleFromMessage(content) {
25
14
  const cleaned = content.replace(/```[\s\S]*?```/g, "").replace(/`[^`]+`/g, "").replace(/[#*_~[\]()]/g, "").replace(/\s+/g, " ").trim();
26
15
  if (cleaned.length <= 50) return cleaned;
@@ -61,11 +50,14 @@ function useChat() {
61
50
  if (!context) throw new Error("useChat must be used within a ChatProvider");
62
51
  return context;
63
52
  }
64
- function ChatProvider({ adapter, currentUser, navigation, notify, activeConversationId = null, config, sidebar: sidebarProp, onSidebarChange, drawerOpen: drawerOpenProp, onDrawerOpenChange, children }) {
53
+ function ChatProvider({ adapter, currentUser, navigation, activeConversationId = null, config, sidebar: sidebarProp, onSidebarChange, drawerOpen: drawerOpenProp, onDrawerOpenChange, children }) {
65
54
  const [state, dispatch] = useReducer(chatReducer, initialState);
66
55
  const hasLoadedConversationsRef = useRef(false);
67
56
  const { onStreamingChunk, startStreaming, stopAnimationLoop, resetAnimationRefs, targetStreamContentRef, streamActiveRef, streamingConversationIdRef, backgroundStreamsRef, abortControllerRef } = useSSEStream(dispatch);
68
57
  const currentConversationIdRef = useRef(null);
58
+ const [storedModel, storeModel] = usePersistedState("aiChat.model", null);
59
+ const storedModelRef = useRef(storedModel);
60
+ storedModelRef.current = storedModel;
69
61
  const selectedProviderRef = useRef(state.selectedProvider);
70
62
  useEffect(() => {
71
63
  selectedProviderRef.current = state.selectedProvider;
@@ -87,14 +79,14 @@ function ChatProvider({ adapter, currentUser, navigation, notify, activeConversa
87
79
  });
88
80
  hasLoadedConversationsRef.current = true;
89
81
  } catch (error) {
90
- notify.error(errorText(error));
82
+ toast.error(errorText(error));
91
83
  } finally {
92
84
  dispatch({
93
85
  type: "SET_LOADING",
94
86
  isLoading: false
95
87
  });
96
88
  }
97
- }, [adapter, notify]);
89
+ }, [adapter]);
98
90
  const streamingToConversationRef = useRef(null);
99
91
  const loadSequenceRef = useRef(0);
100
92
  const loadConversation = useCallback(async (id) => {
@@ -115,7 +107,7 @@ function ChatProvider({ adapter, currentUser, navigation, notify, activeConversa
115
107
  type: "SET_LOADING_CONVERSATION",
116
108
  isLoadingConversation: false
117
109
  });
118
- notify.error(errorText(error));
110
+ toast.error(errorText(error));
119
111
  currentConversationIdRef.current = null;
120
112
  dispatch({
121
113
  type: "SET_CURRENT_CONVERSATION",
@@ -147,7 +139,6 @@ function ChatProvider({ adapter, currentUser, navigation, notify, activeConversa
147
139
  }
148
140
  }, [
149
141
  adapter,
150
- notify,
151
142
  resetAnimationRefs,
152
143
  streamingConversationIdRef,
153
144
  backgroundStreamsRef,
@@ -166,9 +157,9 @@ function ChatProvider({ adapter, currentUser, navigation, notify, activeConversa
166
157
  });
167
158
  hasLoadedProvidersRef.current = true;
168
159
  } catch (error) {
169
- notify.error(errorText(error));
160
+ toast.error(errorText(error));
170
161
  }
171
- }, [adapter, notify]);
162
+ }, [adapter]);
172
163
  const refreshProviders = useCallback(async () => {
173
164
  hasLoadedProvidersRef.current = false;
174
165
  await loadProviders();
@@ -190,7 +181,7 @@ function ChatProvider({ adapter, currentUser, navigation, notify, activeConversa
190
181
  });
191
182
  hasLoadedModelsRef.current = true;
192
183
  const current = selectedProviderRef.current;
193
- const stored = readStoredModel();
184
+ const stored = storedModelRef.current;
194
185
  const offers = (id) => !!id && models.some((m) => m.id === id);
195
186
  const firstUsable = models.find((model) => !providerIssueFor(providerIssues, model)) ?? models[0];
196
187
  const resolved = offers(current) ? current : offers(stored) ? stored : firstUsable?.id ?? null;
@@ -224,6 +215,7 @@ function ChatProvider({ adapter, currentUser, navigation, notify, activeConversa
224
215
  loadProviders();
225
216
  loadModels();
226
217
  }, [loadProviders, loadModels]);
218
+ const resolvedConfig = useMemo(() => resolveChatConfig(config), [config]);
227
219
  const createConversation = useCallback(async (title) => {
228
220
  try {
229
221
  const conversation = await adapter.conversations.create(title);
@@ -233,15 +225,15 @@ function ChatProvider({ adapter, currentUser, navigation, notify, activeConversa
233
225
  });
234
226
  return conversation.id;
235
227
  } catch (error) {
236
- notify.error(errorText(error));
228
+ toast.error(errorText(error));
237
229
  return null;
238
230
  }
239
- }, [adapter, notify]);
231
+ }, [adapter]);
240
232
  const deleteConversation = useCallback(async (id) => {
241
233
  try {
242
234
  await adapter.conversations.remove(id);
243
235
  } catch (error) {
244
- notify.error(errorText(error));
236
+ toast.error(errorText(error));
245
237
  return false;
246
238
  }
247
239
  dispatch({
@@ -258,7 +250,6 @@ function ChatProvider({ adapter, currentUser, navigation, notify, activeConversa
258
250
  return true;
259
251
  }, [
260
252
  adapter,
261
- notify,
262
253
  state.currentConversation,
263
254
  navigation
264
255
  ]);
@@ -268,7 +259,7 @@ function ChatProvider({ adapter, currentUser, navigation, notify, activeConversa
268
259
  if (!convId) return false;
269
260
  const MAX_QUEUED_MESSAGES = 10;
270
261
  if (pendingQueueRef.current.length >= MAX_QUEUED_MESSAGES) {
271
- notify.error(`You can queue up to ${MAX_QUEUED_MESSAGES} messages while waiting for a response`);
262
+ toast.error(`You can queue up to ${MAX_QUEUED_MESSAGES} messages while waiting for a response`);
272
263
  return false;
273
264
  }
274
265
  const queuedId = crypto.randomUUID();
@@ -294,7 +285,7 @@ function ChatProvider({ adapter, currentUser, navigation, notify, activeConversa
294
285
  }
295
286
  const modelString = state.selectedProvider;
296
287
  if (!isSelectedModelAvailable || !modelString) {
297
- notify.error("Please select a provider first");
288
+ toast.error(resolvedConfig.strings.modelPicker.selectFirst);
298
289
  return false;
299
290
  }
300
291
  isSendingRef.current = true;
@@ -539,7 +530,7 @@ function ChatProvider({ adapter, currentUser, navigation, notify, activeConversa
539
530
  }
540
531
  }, [
541
532
  adapter,
542
- notify,
533
+ resolvedConfig,
543
534
  isSelectedModelAvailable,
544
535
  state.selectedProvider,
545
536
  state.selectedAllocation,
@@ -563,7 +554,7 @@ function ChatProvider({ adapter, currentUser, navigation, notify, activeConversa
563
554
  try {
564
555
  await adapter.conversations.rename(id, title);
565
556
  } catch (error) {
566
- notify.error(errorText(error));
557
+ toast.error(errorText(error));
567
558
  return false;
568
559
  }
569
560
  dispatch({
@@ -583,17 +574,16 @@ function ChatProvider({ adapter, currentUser, navigation, notify, activeConversa
583
574
  return true;
584
575
  }, [
585
576
  adapter,
586
- notify,
587
577
  state.conversations,
588
578
  state.currentConversation
589
579
  ]);
590
580
  const setSelectedProvider = useCallback((providerId) => {
591
- if (providerId && state.models.some((m) => m.id === providerId)) storeSelectedModel(providerId);
581
+ if (providerId && state.models.some((m) => m.id === providerId)) storeModel(providerId);
592
582
  dispatch({
593
583
  type: "SET_SELECTED_PROVIDER",
594
584
  providerId
595
585
  });
596
- }, [state.models]);
586
+ }, [state.models, storeModel]);
597
587
  const setSelectedAllocation = useCallback((allocation) => {
598
588
  dispatch({
599
589
  type: "SET_SELECTED_ALLOCATION",
@@ -685,8 +675,8 @@ function ChatProvider({ adapter, currentUser, navigation, notify, activeConversa
685
675
  state.currentConversation?.messages,
686
676
  state.thinkingStartTime
687
677
  ]);
688
- const [sidebar, setSidebar, sidebarRef] = useControllable(sidebarProp, readStoredSidebar, onSidebarChange, storeSidebar);
689
- const [drawerOpen, setDrawerOpen, drawerOpenRef] = useControllable(drawerOpenProp, () => false, onDrawerOpenChange);
678
+ const [sidebar, setSidebar, sidebarRef] = useControllable(sidebarProp, useOwnSidebar(), onSidebarChange);
679
+ const [drawerOpen, setDrawerOpen, drawerOpenRef] = useControllable(drawerOpenProp, useState(false), onDrawerOpenChange);
690
680
  const [sidebarPresentation, setSidebarPresentation] = useState("inline");
691
681
  const presentationRef = useRef(sidebarPresentation);
692
682
  presentationRef.current = sidebarPresentation;
@@ -740,12 +730,10 @@ function ChatProvider({ adapter, currentUser, navigation, notify, activeConversa
740
730
  conversation: null
741
731
  });
742
732
  }, [resetAnimationRefs, streamingConversationIdRef]);
743
- const resolvedConfig = useMemo(() => resolveChatConfig(config), [config]);
744
733
  const value = useMemo(() => ({
745
734
  adapter,
746
735
  currentUser,
747
736
  navigation,
748
- notify,
749
737
  activeConversationId,
750
738
  conversations: state.conversations,
751
739
  currentConversation: state.currentConversation,
@@ -796,7 +784,6 @@ function ChatProvider({ adapter, currentUser, navigation, notify, activeConversa
796
784
  adapter,
797
785
  currentUser,
798
786
  navigation,
799
- notify,
800
787
  activeConversationId,
801
788
  state,
802
789
  sidebar,
@@ -1,13 +1,13 @@
1
- import { DateTime } from "luxon";
1
+ import { formatDateTime } from "../../format.js";
2
2
  //#region src/ai/core/exportConversation.ts
3
3
  function conversationToMarkdown(conversation) {
4
4
  const lines = [];
5
5
  lines.push(`# ${conversation.title?.trim() || "Conversation"}`);
6
6
  if (conversation.createdAt) {
7
- const dt = DateTime.fromISO(conversation.createdAt);
8
- if (dt.isValid) {
7
+ const started = formatDateTime(conversation.createdAt);
8
+ if (started) {
9
9
  lines.push("");
10
- lines.push(`> Started ${dt.toLocaleString(DateTime.DATETIME_MED)}`);
10
+ lines.push(`> Started ${started}`);
11
11
  }
12
12
  }
13
13
  for (const message of conversation.messages) {
@@ -1,5 +1,5 @@
1
1
  /** The highlighter's name for the language a paste is written in, or ''
2
- * when it is not recognisably one. */
2
+ * when it is not recognizably one. */
3
3
  export declare function guessPasteLanguage(text: string): string;
4
4
  /** The paste as a fenced code block in its language. The fence outruns any
5
5
  * run of backticks inside the paste, so nothing in it can close the fence. */
@@ -17,7 +17,7 @@ function isJson(trimmed) {
17
17
  var YAML_LINE = /^\s*(-\s+)?["']?[\w./-]+["']?\s*:(\s|$)|^\s*-(\s|$)|^---\s*$/;
18
18
  var TOML_LINE = /^\s*\[{1,2}[\w."-]+\]{1,2}\s*$|^\s*[\w."-]+\s*=\s*\S/;
19
19
  /** The highlighter's name for the language a paste is written in, or ''
20
- * when it is not recognisably one. */
20
+ * when it is not recognizably one. */
21
21
  function guessPasteLanguage(text) {
22
22
  const trimmed = text.trim();
23
23
  if (!trimmed) return "";
@@ -4,16 +4,18 @@ export type SidebarState = 'expanded' | 'collapsed' | 'hidden';
4
4
  /** How the layout shows the list right now: as a column beside the thread,
5
5
  * or as a drawer over it. */
6
6
  export type SidebarPresentation = 'inline' | 'drawer';
7
- export declare function readStoredSidebar(): SidebarState;
8
- export declare function storeSidebar(state: SidebarState): void;
7
+ /** The reader's own choice between the column and the rail, remembered through
8
+ * the host's persisted state. Hiding the list is the host's call, so it lasts
9
+ * only for the page that made it. */
10
+ export declare function useOwnSidebar(): readonly [SidebarState, (state: SidebarState) => void];
9
11
  /** A value the host may own through a prop. Without the prop the provider
10
- * keeps it; either way the change callback hears every change. The ref
11
- * reads the latest value from callbacks that should not re-create. */
12
- export declare function useControllable<T>(controlled: T | undefined, initial: () => T, onChange: ((value: T) => void) | undefined, remember?: (value: T) => void): readonly [T, (next: T) => void, import("react").RefObject<{
12
+ * keeps it in `own`; either way the change callback hears every change. The
13
+ * ref reads the latest value from callbacks that should not re-create. */
14
+ export declare function useControllable<T>(controlled: T | undefined, own: readonly [T, (value: T) => void], onChange: ((value: T) => void) | undefined): readonly [T, (next: T) => void, import("react").RefObject<{
13
15
  value: T;
14
16
  controlled: boolean;
15
17
  onChange: ((value: T) => void) | undefined;
16
- remember: ((value: T) => void) | undefined;
18
+ setOwn: (value: T) => void;
17
19
  }>];
18
20
  export declare const ReportSidebarPresentationContext: import("react").Context<(presentation: SidebarPresentation) => void>;
19
21
  export declare function useReportSidebarPresentation(): (presentation: SidebarPresentation) => void;
@@ -1,49 +1,42 @@
1
+ import { usePersistedState } from "../../components/Provider.js";
1
2
  import { createContext, useCallback, useContext, useRef, useState } from "react";
2
3
  //#region src/ai/core/sidebarState.ts
3
- var SIDEBAR_STORAGE_KEY = "aiChatSidebar";
4
- var LEGACY_COLLAPSED_STORAGE_KEY = "aiChatSidebarCollapsed";
5
- function readStoredSidebar() {
6
- try {
7
- const stored = globalThis.localStorage?.getItem(SIDEBAR_STORAGE_KEY);
8
- if (stored === "expanded" || stored === "collapsed") return stored;
9
- return globalThis.localStorage?.getItem(LEGACY_COLLAPSED_STORAGE_KEY) === "1" ? "collapsed" : "expanded";
10
- } catch {
11
- return "expanded";
12
- }
13
- }
14
- function storeSidebar(state) {
15
- if (state === "hidden") return;
16
- try {
17
- globalThis.localStorage?.setItem(SIDEBAR_STORAGE_KEY, state);
18
- } catch {}
4
+ /** The reader's own choice between the column and the rail, remembered through
5
+ * the host's persisted state. Hiding the list is the host's call, so it lasts
6
+ * only for the page that made it. */
7
+ function useOwnSidebar() {
8
+ const [remembered, remember] = usePersistedState("aiChat.sidebar", "expanded");
9
+ const [hidden, setHidden] = useState(false);
10
+ const set = useCallback((state) => {
11
+ setHidden(state === "hidden");
12
+ if (state !== "hidden") remember(state);
13
+ }, [remember]);
14
+ return [hidden ? "hidden" : remembered === "collapsed" ? "collapsed" : "expanded", set];
19
15
  }
20
16
  /** A value the host may own through a prop. Without the prop the provider
21
- * keeps it; either way the change callback hears every change. The ref
22
- * reads the latest value from callbacks that should not re-create. */
23
- function useControllable(controlled, initial, onChange, remember) {
24
- const [own, setOwn] = useState(initial);
25
- const value = controlled === void 0 ? own : controlled;
17
+ * keeps it in `own`; either way the change callback hears every change. The
18
+ * ref reads the latest value from callbacks that should not re-create. */
19
+ function useControllable(controlled, own, onChange) {
20
+ const [ownValue, setOwn] = own;
21
+ const value = controlled === void 0 ? ownValue : controlled;
26
22
  const latest = useRef({
27
23
  value,
28
24
  controlled: controlled !== void 0,
29
25
  onChange,
30
- remember
26
+ setOwn
31
27
  });
32
28
  latest.current = {
33
29
  value,
34
30
  controlled: controlled !== void 0,
35
31
  onChange,
36
- remember
32
+ setOwn
37
33
  };
38
34
  return [
39
35
  value,
40
36
  useCallback((next) => {
41
37
  const l = latest.current;
42
38
  if (Object.is(next, l.value)) return;
43
- if (!l.controlled) {
44
- setOwn(next);
45
- l.remember?.(next);
46
- }
39
+ if (!l.controlled) l.setOwn(next);
47
40
  l.onChange?.(next);
48
41
  }, []),
49
42
  latest
@@ -54,4 +47,4 @@ function useReportSidebarPresentation() {
54
47
  return useContext(ReportSidebarPresentationContext);
55
48
  }
56
49
  //#endregion
57
- export { ReportSidebarPresentationContext, readStoredSidebar, storeSidebar, useControllable, useReportSidebarPresentation };
50
+ export { ReportSidebarPresentationContext, useControllable, useOwnSidebar, useReportSidebarPresentation };
@@ -1,3 +1,6 @@
1
+ import { toast } from "../../components/Toast.js";
2
+ import { useStrings } from "../../components/Provider.js";
3
+ import { useChatConfig } from "./config.js";
1
4
  import { useChat } from "./ChatProvider.js";
2
5
  import { isMac } from "../utils.js";
3
6
  import { FOCUS_SIDEBAR_SEARCH_EVENT } from "./events.js";
@@ -11,7 +14,9 @@ function lastUserMessage(messages) {
11
14
  }
12
15
  function useKeyboardShortcuts(options = {}) {
13
16
  const { enabled = true } = options;
14
- const { currentConversation, isStreaming, stopStreaming, clearCurrentConversation, navigation, notify } = useChat();
17
+ const { currentConversation, isStreaming, stopStreaming, clearCurrentConversation, navigation } = useChat();
18
+ const { common } = useStrings();
19
+ const { chrome: t } = useChatConfig().strings;
15
20
  const getLastAssistantMessage = useCallback(() => lastAssistantContent(currentConversation?.messages ?? []), [currentConversation?.messages]);
16
21
  const getLastUserMessage = useCallback(() => lastUserMessage(currentConversation?.messages ?? []), [currentConversation?.messages]);
17
22
  const handleNewConversation = useCallback(() => {
@@ -22,12 +27,16 @@ function useKeyboardShortcuts(options = {}) {
22
27
  const content = getLastAssistantMessage();
23
28
  if (content) try {
24
29
  await navigator.clipboard.writeText(content);
25
- notify.success("Copied to clipboard");
30
+ toast.success(common.copiedToClipboard);
26
31
  } catch {
27
- notify.error("Failed to copy");
32
+ toast.error(common.copyFailed);
28
33
  }
29
- else notify.info("No response to copy");
30
- }, [getLastAssistantMessage, notify]);
34
+ else toast.info(t.noResponseToCopy);
35
+ }, [
36
+ getLastAssistantMessage,
37
+ common,
38
+ t
39
+ ]);
31
40
  const handleStopGeneration = useCallback(() => {
32
41
  if (isStreaming) stopStreaming();
33
42
  }, [isStreaming, stopStreaming]);
@@ -1,10 +1,9 @@
1
- export { durationToAbsHumanDuration } from '../duration.js';
2
1
  export * from './adapter/types.js';
3
2
  export * from './agent/index.js';
4
3
  export { default as AllocationSelector } from './components/AllocationSelector.js';
5
4
  export { default as AttachmentManager } from './components/AttachmentManager.js';
6
5
  export { type Attachment, type AttachmentUploadHandle, default as AttachmentUpload, } from './components/AttachmentUpload.js';
7
- export { compactCount, default as ActivityLine, formatElapsed, } from './components/agent/ActivityLine.js';
6
+ export { default as ActivityLine } from './components/agent/ActivityLine.js';
8
7
  export { ApprovalBlock, default as AgentMessageParts, } from './components/agent/AgentMessageParts.js';
9
8
  export { default as PermissionPicker } from './components/agent/PermissionPicker.js';
10
9
  export { default as BlockedGroupBanner } from './components/BlockedGroupBanner.js';
@@ -40,7 +39,7 @@ export { default as useDragDrop } from './core/useDragDrop.js';
40
39
  export { useKeyboardShortcuts } from './core/useKeyboardShortcuts.js';
41
40
  export { type ChatStrings, defaultChatStrings } from './strings.js';
42
41
  export * from './types.js';
43
- export { ConversationSidebar, type ConversationSidebarGroup, useResizableSidebarWidth, } from './ui/ConversationSidebar.js';
42
+ export { ConversationSidebar, type ConversationSidebarGroup, sidebarDrawerProps, } from './ui/ConversationSidebar.js';
44
43
  export { NoticeBar, NoticeCard, type NoticeTone, OutputCard } from './ui/Notice.js';
45
- export { RenameDialog, type RowDialogStrings, SidebarDrawer, SidebarGroupHeading, SidebarPanel, SidebarPlaceholder, SidebarRailItem, SidebarRow, SidebarRowTitle, SidebarToggle, useRowDialogs, } from './ui/sidebar.js';
46
- export { formatFileSize, isMac, isOrgModel } from './utils.js';
44
+ export { RenameDialog, type RowDialogStrings, SidebarGroupHeading, SidebarPanel, SidebarRailItem, SidebarRow, SidebarRowTitle, SidebarToggle, useRowDialogs, } from './ui/sidebar.js';
45
+ export { isMac, isOrgModel } from './utils.js';
package/dist/ai/index.js CHANGED
@@ -1,7 +1,7 @@
1
- import { durationToAbsHumanDuration } from "../duration.js";
2
1
  import { ChatAdapterError } from "./adapter/types.js";
3
2
  import { classifyPseudoUserMessage } from "./agent/classifier.js";
4
- import { AGENT_COLOR_NAMES, agentColorHex, bashExitCode, clip, fullToolArgs, isGroupableTool, plural, resultFailed, rollupSentence, sanitizeLabel, sanitizePanelText, summarizeToolArgs, toolHeaderFor, toolSummary } from "./agent/toolfmt.js";
3
+ import { defaultToolStrings } from "./agent/toolStrings.js";
4
+ import { AGENT_COLOR_NAMES, agentColorHex, bashExitCode, clip, fullToolArgs, isGroupableTool, resultFailed, rollupSentence, sanitizeLabel, sanitizePanelText, summarizeToolArgs, toolHeaderFor, toolSummary } from "./agent/toolfmt.js";
5
5
  import { MAX_EDIT_DIFF_LINES, MAX_WRITE_DIFF_LINES, computeEditDiff, computeWriteRows, editSummary, isEditDiffTool, lineDelta, parseEditArgs, wordEmphasisRanges } from "./agent/diff.js";
6
6
  import { languageForPath, tokenizeDiffLines } from "./agent/diffHighlight.js";
7
7
  import { DEFAULT_PERMISSION_MODE, NAMED_PERMISSION_MODES, clampPermissionMode, isNamedPermissionMode, permissionModesUpTo } from "./agent/permissions.js";
@@ -12,11 +12,11 @@ import { defaultChatStrings } from "./strings.js";
12
12
  import { resolveChatConfig, useChatConfig } from "./core/config.js";
13
13
  import { providerIssueFor } from "./core/providerIssues.js";
14
14
  import { ChatProvider, useChat } from "./core/ChatProvider.js";
15
- import { formatFileSize, isMac, isOrgModel } from "./utils.js";
15
+ import { isMac, isOrgModel } from "./utils.js";
16
16
  import AllocationSelector from "./components/AllocationSelector.js";
17
17
  import AttachmentManager from "./components/AttachmentManager.js";
18
18
  import AttachmentUpload from "./components/AttachmentUpload.js";
19
- import ActivityLine, { compactCount, formatElapsed } from "./components/agent/ActivityLine.js";
19
+ import ActivityLine from "./components/agent/ActivityLine.js";
20
20
  import AgentMessageParts, { ApprovalBlock } from "./components/agent/AgentMessageParts.js";
21
21
  import PermissionPicker from "./components/agent/PermissionPicker.js";
22
22
  import ModelSelector, { getProviderKeyFromModelId } from "./components/ModelSelector.js";
@@ -36,8 +36,8 @@ import ChatEmptyState from "./components/ChatEmptyState.js";
36
36
  import { FOCUS_SIDEBAR_SEARCH_EVENT } from "./core/events.js";
37
37
  import { useKeyboardShortcuts } from "./core/useKeyboardShortcuts.js";
38
38
  import { KeyboardShortcutsProvider } from "./core/KeyboardShortcutsProvider.js";
39
- import { RenameDialog, SidebarDrawer, SidebarGroupHeading, SidebarPanel, SidebarPlaceholder, SidebarRailItem, SidebarRow, SidebarRowTitle, SidebarToggle, useRowDialogs } from "./ui/sidebar.js";
40
- import { ConversationSidebar, useResizableSidebarWidth } from "./ui/ConversationSidebar.js";
39
+ import { RenameDialog, SidebarGroupHeading, SidebarPanel, SidebarRailItem, SidebarRow, SidebarRowTitle, SidebarToggle, useRowDialogs } from "./ui/sidebar.js";
40
+ import { ConversationSidebar, sidebarDrawerProps } from "./ui/ConversationSidebar.js";
41
41
  import ShareDialog, { ShareButton } from "./components/ShareDialog.js";
42
42
  import { groupConversationsByDate, useConversationActions } from "./components/conversationActions.js";
43
43
  import ChatSidebar from "./components/ChatSidebar.js";
@@ -45,4 +45,4 @@ import ChatLayout, { CHAT_COLUMN_SCOPE, ConversationLayout, DRAWER_BELOW_PX } fr
45
45
  import ChatMessage_default from "./components/ChatMessage.js";
46
46
  import ChatMessageList from "./components/ChatMessageList.js";
47
47
  import ChatThread from "./components/ChatThread.js";
48
- export { AGENT_COLOR_NAMES, ActivityLine, AgentMessageParts, AllocationSelector, ApprovalBlock, AttachmentManager, AttachmentUpload, BlockedGroupBanner, BranchNavigator, CHAT_COLUMN_SCOPE, ChatAdapterError, ChatEmptyState, ChatInput, ChatLayout, ChatMessageList, ChatMessage_default as ChatMessageView, ChatProvider, ChatSidebar, ChatStage, ChatThread, ComposerContext, ComposerControls, ComposerSettings, ComposerUsage, ConnectToolsLink, ConversationLayout, ConversationSidebar, DEFAULT_PERMISSION_MODE, DRAWER_BELOW_PX, DragOverlay, FOCUS_SIDEBAR_SEARCH_EVENT, INTERRUPTED_NOTICE, KeyboardShortcutsProvider, MAX_EDIT_DIFF_LINES, MAX_WRITE_DIFF_LINES, ManageProvidersLink, ModelSelector, NAMED_PERMISSION_MODES, NoticeBar, NoticeCard, OutputCard, PermissionPicker, ProviderIssueBanner, RenameDialog, ShareButton, ShareDialog, SidebarDrawer, SidebarGroupHeading, SidebarPanel, SidebarPlaceholder, SidebarRailItem, SidebarRow, SidebarRowTitle, SidebarToggle, agentColorHex, agentTypeLabel, applyPartDelta, askQuestionFromArgs, bashExitCode, chatReducer, clampPermissionMode, classifyPseudoUserMessage, clip, compactCount, computeEditDiff, computeWriteRows, defaultChatStrings, durationToAbsHumanDuration, editSummary, finalizeParts, firstNonEmptyLine, formatElapsed, formatFileSize, fullToolArgs, getGreeting, getProviderKeyFromModelId, groupConversationsByDate, hiddenTranscriptTool, initialState, interruptionNotice, isEditDiffTool, isGroupableTool, isMac, isNamedPermissionMode, isOrgModel, languageForPath, lineDelta, parseEditArgs, parseSubagentNotice, pasteInlineMaxBytes, permissionModesUpTo, planFromArgs, plural, providerIssueFor, resolveChatConfig, resultFailed, rollupSentence, sanitizeLabel, sanitizePanelText, slashMatches, subagentDeliveryLine, summarizeToolArgs, taskCallFromArgs, thinkingHeading, tokenizeDiffLines, toolHeaderFor, toolSummary, useChat, useChatConfig, useConversationActions, useDragDrop, useKeyboardShortcuts, useResizableSidebarWidth, useRowDialogs, wordEmphasisRanges };
48
+ export { AGENT_COLOR_NAMES, ActivityLine, AgentMessageParts, AllocationSelector, ApprovalBlock, AttachmentManager, AttachmentUpload, BlockedGroupBanner, BranchNavigator, CHAT_COLUMN_SCOPE, ChatAdapterError, ChatEmptyState, ChatInput, ChatLayout, ChatMessageList, ChatMessage_default as ChatMessageView, ChatProvider, ChatSidebar, ChatStage, ChatThread, ComposerContext, ComposerControls, ComposerSettings, ComposerUsage, ConnectToolsLink, ConversationLayout, ConversationSidebar, DEFAULT_PERMISSION_MODE, DRAWER_BELOW_PX, DragOverlay, FOCUS_SIDEBAR_SEARCH_EVENT, INTERRUPTED_NOTICE, KeyboardShortcutsProvider, MAX_EDIT_DIFF_LINES, MAX_WRITE_DIFF_LINES, ManageProvidersLink, ModelSelector, NAMED_PERMISSION_MODES, NoticeBar, NoticeCard, OutputCard, PermissionPicker, ProviderIssueBanner, RenameDialog, ShareButton, ShareDialog, SidebarGroupHeading, SidebarPanel, SidebarRailItem, SidebarRow, SidebarRowTitle, SidebarToggle, agentColorHex, agentTypeLabel, applyPartDelta, askQuestionFromArgs, bashExitCode, chatReducer, clampPermissionMode, classifyPseudoUserMessage, clip, computeEditDiff, computeWriteRows, defaultChatStrings, defaultToolStrings, editSummary, finalizeParts, firstNonEmptyLine, fullToolArgs, getGreeting, getProviderKeyFromModelId, groupConversationsByDate, hiddenTranscriptTool, initialState, interruptionNotice, isEditDiffTool, isGroupableTool, isMac, isNamedPermissionMode, isOrgModel, languageForPath, lineDelta, parseEditArgs, parseSubagentNotice, pasteInlineMaxBytes, permissionModesUpTo, planFromArgs, providerIssueFor, resolveChatConfig, resultFailed, rollupSentence, sanitizeLabel, sanitizePanelText, sidebarDrawerProps, slashMatches, subagentDeliveryLine, summarizeToolArgs, taskCallFromArgs, thinkingHeading, tokenizeDiffLines, toolHeaderFor, toolSummary, useChat, useChatConfig, useConversationActions, useDragDrop, useKeyboardShortcuts, useRowDialogs, wordEmphasisRanges };
@@ -1,10 +1,6 @@
1
1
  import type { ReactNode } from 'react';
2
+ import { type ToolStrings } from './agent/toolStrings.js';
2
3
  export interface ChatStrings {
3
- modal: {
4
- cancel: string;
5
- save: string;
6
- loading: string;
7
- };
8
4
  shareConversation: {
9
5
  title: string;
10
6
  loadError: string;
@@ -16,7 +12,6 @@ export interface ChatStrings {
16
12
  noGroups: string;
17
13
  viewOnly: string;
18
14
  canCollaborate: string;
19
- remove: string;
20
15
  addGroups: string;
21
16
  info: ReactNode;
22
17
  shareButton: string;
@@ -40,7 +35,6 @@ export interface ChatStrings {
40
35
  search: string;
41
36
  loading: string;
42
37
  failed: string;
43
- retry: string;
44
38
  none: string;
45
39
  /** Beside a provider another user registered and shared with the reader. */
46
40
  sharedBy: (owner: string) => string;
@@ -50,6 +44,8 @@ export interface ChatStrings {
50
44
  notResponding: string;
51
45
  /** Links the provider's settings from its issue banner, for its owner. */
52
46
  manageProvider: string;
47
+ /** Sending before a model is chosen. */
48
+ selectFirst: string;
53
49
  };
54
50
  allocationPicker: {
55
51
  choose: string;
@@ -64,9 +60,6 @@ export interface ChatStrings {
64
60
  waitingNextStep: string;
65
61
  /** Under a message the host has already handed to the running turn. */
66
62
  handedOver: string;
67
- /** The visible label of the remove control; `remove` names it for
68
- * assistive technology. */
69
- removeShort: string;
70
63
  };
71
64
  activity: {
72
65
  tokens: (input: string, output: string) => string;
@@ -80,7 +73,6 @@ export interface ChatStrings {
80
73
  addProvider: string;
81
74
  sessionUnreachableTitle: (session: string) => ReactNode;
82
75
  sessionUnreachableBody: string;
83
- retry: string;
84
76
  };
85
77
  input: {
86
78
  placeholder: string;
@@ -101,7 +93,11 @@ export interface ChatStrings {
101
93
  label: string;
102
94
  ellipsis: string;
103
95
  thoughtFor: (duration: string) => string;
96
+ /** A finished reasoning toggle's label when its duration is unknown. */
97
+ thoughtProcess: string;
104
98
  activity: string;
99
+ /** A finished turn's label when it ran tools without reasoning. */
100
+ ranToolCalls: (count: number) => string;
105
101
  };
106
102
  thread: {
107
103
  viewOnly: string;
@@ -113,9 +109,6 @@ export interface ChatStrings {
113
109
  groupThisMonth: string;
114
110
  groupOlder: string;
115
111
  untitled: string;
116
- rename: string;
117
- share: string;
118
- delete: string;
119
112
  sharedWithYou: string;
120
113
  openSidebar: string;
121
114
  closeSidebar: string;
@@ -130,26 +123,22 @@ export interface ChatStrings {
130
123
  noConversations: string;
131
124
  deleteTitle: string;
132
125
  deleteBody: string;
133
- deleteAction: string;
134
126
  renameTitle: string;
135
- renameAction: string;
136
127
  renameLabel: string;
137
128
  renamePlaceholder: string;
138
129
  };
139
130
  attachmentUpload: {
140
131
  fileTooLarge: (maxSize: string) => string;
141
132
  maxFilesAllowed: (max: number) => string;
142
- remove: string;
143
133
  dropFilesHere: string;
134
+ releaseToUpload: string;
144
135
  addFiles: string;
136
+ maxSizePerFile: (size: string) => string;
137
+ uploading: string;
145
138
  };
146
139
  attachmentManager: {
147
140
  title: string;
148
141
  empty: string;
149
- download: string;
150
- delete: string;
151
- loadMore: string;
152
- loading: string;
153
142
  };
154
143
  branch: {
155
144
  previous: string;
@@ -159,24 +148,19 @@ export interface ChatStrings {
159
148
  searchPlaceholder: string;
160
149
  searchLabel: string;
161
150
  noMatches: string;
162
- download: string;
163
151
  exportError: string;
164
152
  jumpToLatest: string;
165
- dismiss: string;
153
+ /** The copy shortcut's note when no reply has come yet. */
154
+ noResponseToCopy: string;
166
155
  };
167
156
  messageMeta: {
168
157
  stopped: string;
169
- showMore: string;
170
- showLess: string;
171
158
  tokens: (total: number) => string;
172
159
  tokensBreakdown: (prompt: number, completion: number) => string;
173
160
  copy: string;
174
161
  edit: string;
175
162
  regenerate: string;
176
- retry: string;
177
163
  editPlaceholder: string;
178
- cancel: string;
179
- send: string;
180
164
  };
181
165
  permissions: {
182
166
  choose: string;
@@ -192,8 +176,6 @@ export interface ChatStrings {
192
176
  planHint: string;
193
177
  };
194
178
  agentTranscript: {
195
- showMore: string;
196
- showLess: string;
197
179
  running: string;
198
180
  done: string;
199
181
  failed: string;
@@ -212,7 +194,6 @@ export interface ChatStrings {
212
194
  denyCall: string;
213
195
  denyWithFeedback: string;
214
196
  feedbackPlaceholder: string;
215
- send: string;
216
197
  answered: string;
217
198
  writeOwnAnswer: string;
218
199
  subagent: string;
@@ -221,5 +202,7 @@ export interface ChatStrings {
221
202
  approvalPending: string;
222
203
  approvalOptions: string;
223
204
  };
205
+ /** One-line summaries of an agent's finished tool calls. */
206
+ tools: ToolStrings;
224
207
  }
225
208
  export declare const defaultChatStrings: ChatStrings;