@vibe-forge/client 0.8.4 → 0.10.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 (301) hide show
  1. package/AGENTS.md +75 -0
  2. package/dist/assets/abap-DLDM7-KI.js +1 -0
  3. package/dist/assets/apex-DNDY2TF8.js +1 -0
  4. package/dist/assets/{arc-DCuZPvAs.js → arc-CCXV7u3V.js} +1 -1
  5. package/dist/assets/azcli-Y6nb8tq_.js +1 -0
  6. package/dist/assets/bat-BwHxbl9M.js +1 -0
  7. package/dist/assets/bicep-CFznDFnq.js +2 -0
  8. package/dist/assets/{blockDiagram-c4efeb88-C39d7-Bu.js → blockDiagram-c4efeb88-Bm52FmvT.js} +1 -1
  9. package/dist/assets/{c4Diagram-c83219d4-jWPBJdeq.js → c4Diagram-c83219d4-C8tTEpcK.js} +1 -1
  10. package/dist/assets/cameligo-Bf6VGUru.js +1 -0
  11. package/dist/assets/channel-gq_WMRvv.js +1 -0
  12. package/dist/assets/{classDiagram-beda092f-Bo7Yvv2T.js → classDiagram-beda092f-CNAIBAH1.js} +1 -1
  13. package/dist/assets/{classDiagram-v2-2358418a-DfoCP9XM.js → classDiagram-v2-2358418a-BHeZAVdc.js} +1 -1
  14. package/dist/assets/clojure-Dnu-v4kV.js +1 -0
  15. package/dist/assets/clone-XxGY7A5N.js +1 -0
  16. package/dist/assets/codicon-ngg6Pgfi.ttf +0 -0
  17. package/dist/assets/coffee-Bd8akH9Z.js +1 -0
  18. package/dist/assets/cpp-BbWJElDN.js +1 -0
  19. package/dist/assets/{createText-1719965b-8_Ez5rxh.js → createText-1719965b-BS2hLG8t.js} +1 -1
  20. package/dist/assets/csharp-Co3qMtFm.js +1 -0
  21. package/dist/assets/csp-D-4FJmMZ.js +1 -0
  22. package/dist/assets/css-DdJfP1eB.js +3 -0
  23. package/dist/assets/css.worker-BvV5MPou.js +93 -0
  24. package/dist/assets/cssMode-WHcTFAOU.js +1 -0
  25. package/dist/assets/cypher-cTPe9QuQ.js +1 -0
  26. package/dist/assets/dart-BOtBlQCF.js +1 -0
  27. package/dist/assets/dockerfile-BG73LgW2.js +1 -0
  28. package/dist/assets/ecl-BEgZUVRK.js +1 -0
  29. package/dist/assets/{edges-96097737-BEegO-R-.js → edges-96097737-C07f4iWA.js} +1 -1
  30. package/dist/assets/editor.worker-CKy7Pnvo.js +26 -0
  31. package/dist/assets/elixir-BkW5O-1t.js +1 -0
  32. package/dist/assets/{erDiagram-0228fc6a-derRgkLz.js → erDiagram-0228fc6a-BytsAWUs.js} +1 -1
  33. package/dist/assets/flow9-BeJ5waoc.js +1 -0
  34. package/dist/assets/{flowDb-c6c81e3f-ChtOxgsJ.js → flowDb-c6c81e3f-CQJkOpAs.js} +1 -1
  35. package/dist/assets/{flowDiagram-50d868cf-Bm4ufmmA.js → flowDiagram-50d868cf-CD5Tng2S.js} +1 -1
  36. package/dist/assets/flowDiagram-v2-4f6560a1-DIBOANLV.js +1 -0
  37. package/dist/assets/{flowchart-elk-definition-6af322e1-BRYLO-BL.js → flowchart-elk-definition-6af322e1-ylso-GWH.js} +1 -1
  38. package/dist/assets/freemarker2-U_9Jyyr3.js +3 -0
  39. package/dist/assets/fsharp-PahG7c26.js +1 -0
  40. package/dist/assets/{ganttDiagram-a2739b55-CbP6dzRO.js → ganttDiagram-a2739b55-Cg98bJx5.js} +1 -1
  41. package/dist/assets/{gitGraphDiagram-82fe8481-Du44v02s.js → gitGraphDiagram-82fe8481-7Yp4hz0N.js} +1 -1
  42. package/dist/assets/go-acbASCJo.js +1 -0
  43. package/dist/assets/{graph-0_VzJX6O.js → graph-Ig3nvzvL.js} +1 -1
  44. package/dist/assets/graphql-BxJiqAUM.js +1 -0
  45. package/dist/assets/handlebars-DQyCBwHe.js +1 -0
  46. package/dist/assets/hcl-DtV1sZF8.js +1 -0
  47. package/dist/assets/html-CNC2AT5k.js +1 -0
  48. package/dist/assets/html.worker-BLJhxQJQ.js +470 -0
  49. package/dist/assets/htmlMode-DlATk4xW.js +1 -0
  50. package/dist/assets/{index-5325376f-DLP7F7of.js → index-5325376f-C4zed9sb.js} +1 -1
  51. package/dist/assets/index-DRLsOoqb.css +32 -0
  52. package/dist/assets/index-Dbx0JG0p.js +1511 -0
  53. package/dist/assets/{infoDiagram-8eee0895-DY19rRl6.js → infoDiagram-8eee0895-C8oSBaFs.js} +1 -1
  54. package/dist/assets/ini-Kd9XrMLS.js +1 -0
  55. package/dist/assets/java-CXBNlu9o.js +1 -0
  56. package/dist/assets/javascript-9wv9uKW4.js +1 -0
  57. package/dist/assets/{journeyDiagram-c64418c1-4Asnwc86.js → journeyDiagram-c64418c1-D5kJldvy.js} +1 -1
  58. package/dist/assets/json.worker-usMZ-FED.js +58 -0
  59. package/dist/assets/jsonMode-45dv39mU.js +7 -0
  60. package/dist/assets/julia-cl7-CwDS.js +1 -0
  61. package/dist/assets/kotlin-s7OhZKlX.js +1 -0
  62. package/dist/assets/{layout-BILp7GjD.js → layout-DYNFLnIl.js} +1 -1
  63. package/dist/assets/less-9HpZscsL.js +2 -0
  64. package/dist/assets/lexon-OrD6JF1K.js +1 -0
  65. package/dist/assets/{line-D0Xqr8mi.js → line-1gvOYQYZ.js} +1 -1
  66. package/dist/assets/{linear-LpL8RZsq.js → linear-DHGm6Zdw.js} +1 -1
  67. package/dist/assets/liquid-BGoxrdXO.js +1 -0
  68. package/dist/assets/lspLanguageFeatures-CpCCXhrd.js +4 -0
  69. package/dist/assets/lua-Cyyb5UIc.js +1 -0
  70. package/dist/assets/m3-B8OfTtLu.js +1 -0
  71. package/dist/assets/markdown-BFxVWTOG.js +1 -0
  72. package/dist/assets/mdx-Dc2iMbEw.js +1 -0
  73. package/dist/assets/{mermaid.core-Bk0Y_0sz.js → mermaid.core-Cq2bBFF1.js} +6 -6
  74. package/dist/assets/{mindmap-definition-8da855dc-eCAgn5kY.js → mindmap-definition-8da855dc-y5l6GRVh.js} +1 -1
  75. package/dist/assets/mips-CiqrrVzr.js +1 -0
  76. package/dist/assets/msdax-DmeGPVcC.js +1 -0
  77. package/dist/assets/mysql-C_tMU-Nz.js +1 -0
  78. package/dist/assets/objective-c-BDtDVThU.js +1 -0
  79. package/dist/assets/pascal-vHIfCaH5.js +1 -0
  80. package/dist/assets/pascaligo-DtZ0uQbO.js +1 -0
  81. package/dist/assets/perl-Ub6l9XKa.js +1 -0
  82. package/dist/assets/pgsql-BlNEE0v7.js +1 -0
  83. package/dist/assets/php-BBUBE1dy.js +1 -0
  84. package/dist/assets/{pieDiagram-a8764435-BeGFFS1p.js → pieDiagram-a8764435-PNROcv9y.js} +1 -1
  85. package/dist/assets/pla-DSh2-awV.js +1 -0
  86. package/dist/assets/postiats-CocnycG-.js +1 -0
  87. package/dist/assets/powerquery-tScXyioY.js +1 -0
  88. package/dist/assets/powershell-COWaemsV.js +1 -0
  89. package/dist/assets/protobuf-Brw8urJB.js +2 -0
  90. package/dist/assets/pug-8SOpv6rk.js +1 -0
  91. package/dist/assets/python-DjYAge7h.js +1 -0
  92. package/dist/assets/qsharp-Bw9ernYp.js +1 -0
  93. package/dist/assets/{quadrantDiagram-1e28029f-tLqbYOHC.js → quadrantDiagram-1e28029f-CFJ3VPpp.js} +1 -1
  94. package/dist/assets/r-j7ic8hl3.js +1 -0
  95. package/dist/assets/razor-OIY8fx_i.js +1 -0
  96. package/dist/assets/redis-Bu5POkcn.js +1 -0
  97. package/dist/assets/redshift-Bs9aos_-.js +1 -0
  98. package/dist/assets/{requirementDiagram-08caed73-DCverr_g.js → requirementDiagram-08caed73-BpzDIINS.js} +1 -1
  99. package/dist/assets/restructuredtext-CqXO7rUv.js +1 -0
  100. package/dist/assets/ruby-zBfavPgS.js +1 -0
  101. package/dist/assets/rust-BzKRNQWT.js +1 -0
  102. package/dist/assets/{sankeyDiagram-a04cb91d-DidhF5PL.js → sankeyDiagram-a04cb91d-CH69-iIn.js} +1 -1
  103. package/dist/assets/sb-BBc9UKZt.js +1 -0
  104. package/dist/assets/scala-D9hQfWCl.js +1 -0
  105. package/dist/assets/scheme-BPhDTwHR.js +1 -0
  106. package/dist/assets/scss-CBJaRo0y.js +3 -0
  107. package/dist/assets/{sequenceDiagram-c5b8d532-CEKaiwTo.js → sequenceDiagram-c5b8d532-yBBEeVFU.js} +1 -1
  108. package/dist/assets/shell-DiJ1NA_G.js +1 -0
  109. package/dist/assets/solidity-Db0IVjzk.js +1 -0
  110. package/dist/assets/sophia-CnS9iZB_.js +1 -0
  111. package/dist/assets/sparql-CJmd_6j2.js +1 -0
  112. package/dist/assets/sql-ClhHkBeG.js +1 -0
  113. package/dist/assets/st-CHwy0fLd.js +1 -0
  114. package/dist/assets/{stateDiagram-1ecb1508-Cj9ZY7RH.js → stateDiagram-1ecb1508-BvF4sign.js} +1 -1
  115. package/dist/assets/{stateDiagram-v2-c2b004d7-Gsmps-dk.js → stateDiagram-v2-c2b004d7-BeyT7Ghx.js} +1 -1
  116. package/dist/assets/{styles-b4e223ce-D7E8Th0j.js → styles-b4e223ce-C58zxmK6.js} +1 -1
  117. package/dist/assets/{styles-ca3715f6-tTC26Jsm.js → styles-ca3715f6-DCE5sFi5.js} +1 -1
  118. package/dist/assets/{styles-d45a18b0-Bf6oqNdR.js → styles-d45a18b0-CG-C1aM8.js} +1 -1
  119. package/dist/assets/{svgDrawCommon-b86b1483-BxKi01m2.js → svgDrawCommon-b86b1483-F-K8GeDd.js} +1 -1
  120. package/dist/assets/swift-Bqt4WxQ4.js +3 -0
  121. package/dist/assets/systemverilog-Bs9z6M-B.js +1 -0
  122. package/dist/assets/tcl-Dm6ycUr_.js +1 -0
  123. package/dist/assets/{timeline-definition-faaaa080-D6PePEip.js → timeline-definition-faaaa080-DPv4uqVX.js} +1 -1
  124. package/dist/assets/ts.worker-DGHjMaqB.js +67731 -0
  125. package/dist/assets/tsMode-BtU8ZELV.js +11 -0
  126. package/dist/assets/twig-Csy3S7wG.js +1 -0
  127. package/dist/assets/typescript-CJHgISWo.js +1 -0
  128. package/dist/assets/typespec-Btyra-wh.js +1 -0
  129. package/dist/assets/vb-Db0cS2oM.js +1 -0
  130. package/dist/assets/wgsl-BTesnYfV.js +298 -0
  131. package/dist/assets/xml-C_TJw4Bi.js +1 -0
  132. package/dist/assets/{xychartDiagram-f5964ef8-BuP4qfXm.js → xychartDiagram-f5964ef8-BmXlhBzX.js} +1 -1
  133. package/dist/assets/yaml-BujeJOJ6.js +1 -0
  134. package/dist/favicon.svg +3 -3
  135. package/dist/index.html +2 -2
  136. package/package.json +14 -10
  137. package/public/favicon.svg +3 -3
  138. package/src/api/sessions.ts +36 -0
  139. package/src/api/workspace.ts +19 -0
  140. package/src/api.ts +4 -0
  141. package/src/components/NavRail.scss +9 -10
  142. package/src/components/ShortcutDisplay.scss +38 -0
  143. package/src/components/ShortcutDisplay.tsx +37 -0
  144. package/src/components/ShortcutTooltip.scss +36 -0
  145. package/src/components/ShortcutTooltip.tsx +84 -0
  146. package/src/components/Sidebar.scss +55 -13
  147. package/src/components/Sidebar.tsx +141 -52
  148. package/src/components/chat/AGENTS.md +163 -0
  149. package/src/components/chat/ChatHeader.scss +308 -49
  150. package/src/components/chat/ChatHeader.tsx +394 -80
  151. package/src/components/chat/ChatHistoryView.tsx +284 -69
  152. package/src/components/chat/ChatSettingsView.tsx +5 -3
  153. package/src/components/chat/ChatTimelineView.scss +3 -2
  154. package/src/components/chat/{sender/ThinkingStatus.tsx → ThinkingStatus.tsx} +1 -1
  155. package/src/components/chat/messages/MessageContextMenu.scss +145 -0
  156. package/src/components/chat/messages/MessageContextMenu.tsx +108 -0
  157. package/src/components/chat/messages/MessageContextMenuContent.tsx +87 -0
  158. package/src/components/chat/messages/MessageFooter.tsx +44 -24
  159. package/src/components/chat/messages/MessageItem.scss +147 -10
  160. package/src/components/chat/messages/MessageItem.tsx +378 -13
  161. package/src/components/chat/messages/build-message-context-menu-entries.ts +166 -0
  162. package/src/components/chat/messages/message-content-utils.ts +121 -0
  163. package/src/components/chat/messages/message-turns.ts +88 -0
  164. package/src/components/chat/messages/message-utils.ts +19 -1
  165. package/src/components/chat/sender/@components/adapter-select/AdapterSelectControl.scss +86 -0
  166. package/src/components/chat/sender/@components/adapter-select/AdapterSelectControl.tsx +54 -0
  167. package/src/components/chat/sender/@components/adapter-select/AdapterSelectDropdown.scss +42 -0
  168. package/src/components/chat/sender/@components/effort-select/EffortSelectControl.scss +68 -0
  169. package/src/components/chat/sender/@components/effort-select/EffortSelectControl.tsx +137 -0
  170. package/src/components/chat/sender/@components/effort-select/EffortSelectDropdown.scss +96 -0
  171. package/src/components/chat/sender/@components/model-select/ModelSelectControl.scss +82 -0
  172. package/src/components/chat/sender/@components/model-select/ModelSelectControl.tsx +171 -0
  173. package/src/components/chat/sender/@components/model-select/ModelSelectMenu.scss +95 -0
  174. package/src/components/chat/sender/@components/model-select/ModelSelectMenuLabels.scss +144 -0
  175. package/src/components/chat/sender/@components/model-select/ModelSelectOptionLabel.tsx +109 -0
  176. package/src/components/chat/sender/@components/reference-actions/ReferenceActionsControl.scss +106 -0
  177. package/src/components/chat/sender/@components/reference-actions/ReferenceActionsControl.tsx +156 -0
  178. package/src/components/chat/sender/@components/reference-actions/ReferenceActionsOption.scss +34 -0
  179. package/src/components/chat/sender/@components/reference-actions/ReferencePermissionActionsPopover.tsx +111 -0
  180. package/src/components/chat/sender/@components/sender-attachments/SenderAttachments.scss +103 -0
  181. package/src/components/chat/sender/@components/sender-attachments/SenderAttachments.tsx +47 -0
  182. package/src/components/chat/sender/@components/sender-body/SenderBody.tsx +137 -0
  183. package/src/components/chat/sender/@components/sender-interaction-panel/SenderInteractionPanel.scss +178 -0
  184. package/src/components/chat/sender/@components/sender-interaction-panel/SenderInteractionPanel.tsx +145 -0
  185. package/src/components/chat/sender/@components/sender-monaco-editor/SenderMonacoEditor.scss +47 -0
  186. package/src/components/chat/sender/@components/sender-monaco-editor/SenderMonacoEditor.tsx +121 -0
  187. package/src/components/chat/sender/@components/sender-monaco-editor/monaco-runtime.ts +99 -0
  188. package/src/components/chat/sender/@components/sender-monaco-editor/use-sender-editor-handle.ts +48 -0
  189. package/src/components/chat/sender/@components/sender-monaco-editor/use-sender-monaco-editor.ts +209 -0
  190. package/src/components/chat/sender/@components/sender-monaco-editor/use-sender-monaco-theme.ts +24 -0
  191. package/src/components/chat/sender/@components/sender-submit-action/SenderSubmitAction.scss +54 -0
  192. package/src/components/chat/sender/@components/sender-submit-action/SenderSubmitAction.tsx +80 -0
  193. package/src/components/chat/sender/@components/sender-toolbar/SenderSelectBase.scss +71 -0
  194. package/src/components/chat/sender/@components/sender-toolbar/SenderSelectShared.scss +118 -0
  195. package/src/components/chat/sender/@components/sender-toolbar/SenderToolbar.scss +99 -0
  196. package/src/components/chat/sender/@components/sender-toolbar/SenderToolbar.tsx +87 -0
  197. package/src/components/chat/sender/@core/build-sender-controller-result.ts +119 -0
  198. package/src/components/chat/sender/@core/build-sender-toolbar.ts +122 -0
  199. package/src/components/chat/sender/@core/content-attachments.ts +76 -0
  200. package/src/components/chat/sender/@core/create-sender-toolbar-handlers.ts +115 -0
  201. package/src/components/chat/sender/@core/get-sender-interaction-state.ts +18 -0
  202. package/src/components/chat/sender/@core/get-sender-runtime-state.ts +14 -0
  203. package/src/components/chat/sender/@core/interaction-request.ts +5 -0
  204. package/src/components/chat/sender/@core/sender-toolbar-bindings.ts +155 -0
  205. package/src/components/chat/sender/@hooks/use-model-select-browser.tsx +189 -0
  206. package/src/components/chat/sender/@hooks/use-sender-attachments.ts +143 -0
  207. package/src/components/chat/sender/@hooks/use-sender-autofocus.ts +34 -0
  208. package/src/components/chat/sender/@hooks/use-sender-completion.ts +62 -0
  209. package/src/components/chat/sender/@hooks/use-sender-composer-state.ts +34 -0
  210. package/src/components/chat/sender/@hooks/use-sender-controller.ts +193 -0
  211. package/src/components/chat/sender/@hooks/use-sender-focus-restore.ts +72 -0
  212. package/src/components/chat/sender/@hooks/use-sender-history.ts +79 -0
  213. package/src/components/chat/sender/@hooks/use-sender-keydown.ts +113 -0
  214. package/src/components/chat/sender/@hooks/use-sender-reference-actions.ts +191 -0
  215. package/src/components/chat/sender/@hooks/use-sender-reference-focus-restore.ts +21 -0
  216. package/src/components/chat/sender/@hooks/use-sender-refs.ts +19 -0
  217. package/src/components/chat/sender/@hooks/use-sender-select-overlays.ts +83 -0
  218. package/src/components/chat/sender/@hooks/use-sender-shortcuts.ts +78 -0
  219. package/src/components/chat/sender/@hooks/use-sender-submit.ts +81 -0
  220. package/src/components/chat/sender/@types/sender-composer.ts +19 -0
  221. package/src/components/chat/sender/@types/sender-editor.ts +12 -0
  222. package/src/components/chat/sender/@types/sender-props.ts +50 -0
  223. package/src/components/chat/sender/@types/sender-toolbar-types.ts +83 -0
  224. package/src/components/chat/sender/@types/sender-types.ts +21 -0
  225. package/src/components/chat/sender/@utils/sender-completion.ts +164 -0
  226. package/src/components/chat/sender/@utils/sender-constants.ts +18 -0
  227. package/src/components/chat/sender/@utils/sender-utils.ts +45 -0
  228. package/src/components/chat/sender/Sender.scss +8 -605
  229. package/src/components/chat/sender/Sender.tsx +54 -880
  230. package/src/components/chat/session-metadata.ts +55 -0
  231. package/src/components/chat/terminal/@hooks/use-terminal-instance.ts +152 -0
  232. package/src/components/chat/terminal/@hooks/use-terminal-session.ts +196 -0
  233. package/src/components/chat/terminal/ChatTerminalView.scss +62 -0
  234. package/src/components/chat/terminal/ChatTerminalView.tsx +114 -0
  235. package/src/components/chat/tools/core/ToolGroup.scss +7 -0
  236. package/src/components/chat/tools/core/ToolGroup.tsx +97 -56
  237. package/src/components/config/ConfigSectionForm.tsx +8 -1
  238. package/src/components/config/ConfigShortcutInput.tsx +9 -2
  239. package/src/components/config/configSchema.ts +12 -2
  240. package/src/components/config/record-editors/ModelServicesRecordEditor.tsx +0 -14
  241. package/src/components/dock-panel/DockPanel.scss +152 -0
  242. package/src/components/dock-panel/DockPanel.tsx +195 -0
  243. package/src/components/layout/AppShell.scss +40 -2
  244. package/src/components/layout/AppShell.tsx +25 -10
  245. package/src/components/sidebar/SessionContextMenu.scss +143 -0
  246. package/src/components/sidebar/SessionContextMenu.tsx +196 -0
  247. package/src/components/sidebar/SessionContextMenuContent.tsx +89 -0
  248. package/src/components/sidebar/SessionItem.scss +150 -67
  249. package/src/components/sidebar/SessionItem.tsx +183 -134
  250. package/src/components/sidebar/SessionList.scss +47 -17
  251. package/src/components/sidebar/SessionList.tsx +31 -16
  252. package/src/components/sidebar/SidebarHeader.scss +329 -49
  253. package/src/components/sidebar/SidebarHeader.tsx +108 -86
  254. package/src/components/sidebar/SidebarHeaderBatchActions.tsx +81 -0
  255. package/src/components/sidebar/SidebarHeaderSearchActions.tsx +176 -0
  256. package/src/components/sidebar/SidebarHeaderSelectField.tsx +24 -0
  257. package/src/components/sidebar/filter-utils.ts +23 -0
  258. package/src/components/workspace/ContextFilePicker.scss +64 -0
  259. package/src/components/workspace/ContextFilePicker.tsx +171 -0
  260. package/src/connectionManager.ts +4 -2
  261. package/src/hooks/chat/interaction-state.ts +104 -0
  262. package/src/hooks/chat/model-selector-data-builders.ts +146 -0
  263. package/src/hooks/chat/model-selector-data-option-utils.ts +62 -0
  264. package/src/hooks/chat/model-selector-data-types.ts +27 -0
  265. package/src/hooks/chat/model-selector-data.ts +109 -0
  266. package/src/hooks/chat/model-selector-recommendations.ts +69 -0
  267. package/src/hooks/chat/model-selector.ts +9 -0
  268. package/src/hooks/chat/use-chat-interaction.ts +13 -8
  269. package/src/hooks/chat/use-chat-model-adapter-selection.tsx +167 -164
  270. package/src/hooks/chat/use-chat-models.tsx +46 -23
  271. package/src/hooks/chat/use-chat-session-actions.ts +69 -23
  272. package/src/hooks/chat/use-chat-session-messages.ts +165 -60
  273. package/src/hooks/chat/use-chat-session.ts +34 -9
  274. package/src/hooks/chat/use-chat-view.ts +26 -6
  275. package/src/hooks/chat/use-composer-control-shortcuts.ts +69 -0
  276. package/src/hooks/chat/use-terminal-dock-visibility.ts +39 -0
  277. package/src/hooks/use-roving-focus-list.ts +104 -0
  278. package/src/hooks/use-sidebar-navigation.ts +9 -4
  279. package/src/hooks/use-sidebar-query-state.ts +79 -0
  280. package/src/main.tsx +6 -1
  281. package/src/resources/locales/en.json +151 -6
  282. package/src/resources/locales/zh.json +151 -6
  283. package/src/routes/ChatRoute.scss +159 -4
  284. package/src/routes/ChatRoute.tsx +43 -9
  285. package/src/runtime-config.ts +21 -0
  286. package/src/store/index.ts +1 -3
  287. package/src/styles/global.scss +12 -2
  288. package/src/utils/chat-links.ts +21 -0
  289. package/src/utils/copy.ts +18 -0
  290. package/src/utils/shortcutUtils.ts +111 -1
  291. package/src/vite-env.d.ts +1 -0
  292. package/src/ws.ts +6 -5
  293. package/vite.config.ts +71 -7
  294. package/dist/assets/channel-bLjHfx-Q.js +0 -1
  295. package/dist/assets/clone-upfY39Je.js +0 -1
  296. package/dist/assets/flowDiagram-v2-4f6560a1-F66FzZTY.js +0 -1
  297. package/dist/assets/index-C1O04Df8.js +0 -557
  298. package/dist/assets/index-sE8VA1N7.css +0 -1
  299. package/src/components/chat/sender/CompletionMenu.scss +0 -70
  300. package/src/components/chat/sender/CompletionMenu.tsx +0 -58
  301. /package/src/components/chat/{sender/ThinkingStatus.scss → ThinkingStatus.scss} +0 -0
@@ -4,6 +4,10 @@
4
4
  background-color: var(--bg-color);
5
5
  }
6
6
 
7
+ .chat-input-wrapper--inline-edit {
8
+ width: 100%;
9
+ }
10
+
7
11
  .chat-input-container {
8
12
  position: relative;
9
13
  display: flex;
@@ -11,7 +15,7 @@
11
15
  background-color: var(--input-bg, #f9fafb);
12
16
  border: 1px solid var(--border-color);
13
17
  border-radius: 12px;
14
- padding: 8px 12px;
18
+ padding: 12px;
15
19
  transition: all .2s;
16
20
 
17
21
  &:focus-within {
@@ -20,12 +24,8 @@
20
24
  box-shadow: 0 0 0 2px rgba(59, 130, 246, .1);
21
25
  }
22
26
 
23
- textarea {
27
+ .chat-input-monaco {
24
28
  color: var(--text-color);
25
- background: transparent;
26
- &::placeholder {
27
- color: var(--sub-text-color, #9ca3af);
28
- }
29
29
  }
30
30
 
31
31
  .model-unavailable {
@@ -87,534 +87,8 @@
87
87
  }
88
88
  }
89
89
 
90
- .file-input-hidden {
91
- display: none;
92
- }
93
-
94
- .pending-images {
95
- display: flex;
96
- gap: 8px;
97
- padding: 6px 0;
98
- flex-wrap: wrap;
99
- }
100
-
101
- .pending-image {
102
- position: relative;
103
- width: 56px;
104
- height: 56px;
105
- border-radius: 10px;
106
- overflow: hidden;
107
- border: 1px solid var(--border-color);
108
- background-color: var(--bg-color);
109
-
110
- img {
111
- width: 100%;
112
- height: 100%;
113
- object-fit: cover;
114
- display: block;
115
- }
116
- }
117
-
118
- .pending-image-remove {
119
- position: absolute;
120
- top: 4px;
121
- right: 4px;
122
- width: 18px;
123
- height: 18px;
124
- border-radius: 9px;
125
- background-color: rgba(0, 0, 0, .55);
126
- color: #fff;
127
- display: flex;
128
- align-items: center;
129
- justify-content: center;
130
- cursor: pointer;
131
-
132
- .material-symbols-rounded {
133
- font-size: 14px;
134
- line-height: 1;
135
- }
136
- }
137
-
138
- .chat-input-toolbar {
139
- display: flex;
140
- justify-content: space-between;
141
- align-items: center;
142
- margin-top: 4px;
143
- padding-top: 4px;
144
-
145
- .toolbar-left {
146
- display: flex;
147
- align-items: center;
148
- gap: 4px;
149
-
150
- .session-info-toolbar {
151
- display: flex;
152
- align-items: center;
153
- gap: 4px;
154
- margin-left: 6px;
155
- padding-left: 10px;
156
- border-left: 1px solid var(--border-color);
157
- border-radius: 1px;
158
- position: relative;
159
- height: auto;
160
- align-self: center;
161
-
162
- .ant-cascader {
163
- display: block;
164
- }
165
-
166
- .info-item {
167
- display: flex;
168
- align-items: center;
169
- gap: 8px;
170
- min-height: 28px;
171
- font-size: 12px;
172
- color: var(--sub-text-color, #9ca3af);
173
- background: linear-gradient(
174
- 180deg,
175
- var(--bg-color),
176
- var(--tag-hover-bg, #f3f4f6)
177
- );
178
- border: 1px solid var(--border-color);
179
- padding: 0 6px 0 8px;
180
- border-radius: 10px;
181
- white-space: nowrap;
182
- max-width: 170px;
183
- cursor: pointer;
184
- transition: all .2s ease;
185
-
186
- .info-item-leading {
187
- width: 18px;
188
- height: 18px;
189
- border-radius: 6px;
190
- background: rgba(99, 102, 241, .12);
191
- color: var(--primary-color, #6366f1);
192
- display: flex;
193
- align-items: center;
194
- justify-content: center;
195
- flex-shrink: 0;
196
-
197
- .material-symbols-rounded {
198
- font-size: 14px;
199
- }
200
- }
201
-
202
- .material-symbols-rounded {
203
- font-size: 18px;
204
- }
205
-
206
- .info-text {
207
- overflow: hidden;
208
- text-overflow: ellipsis;
209
- font-weight: 600;
210
- color: var(--text-color);
211
- }
212
-
213
- .arrow-icon {
214
- font-size: 18px;
215
- color: var(--sub-text-color, #9ca3af);
216
- background: var(--tag-hover-bg, #f3f4f6);
217
- border-radius: 999px;
218
- transition: transform .2s;
219
- }
220
-
221
- &:hover, &.active {
222
- color: var(--primary-color, #6366f1);
223
- border-color: rgba(99, 102, 241, .3);
224
- box-shadow: 0 8px 18px rgba(15, 23, 42, .08);
225
- .arrow-icon {
226
- color: var(--primary-color, #6366f1);
227
- }
228
- }
229
-
230
- &.active .arrow-icon {
231
- transform: rotate(180deg);
232
- }
233
- }
234
-
235
- .asset-warning-item {
236
- cursor: default;
237
-
238
- .info-item-leading {
239
- background: rgba(245, 158, 11, .14);
240
- color: #d97706;
241
- }
242
-
243
- &:hover {
244
- color: #b45309;
245
- border-color: rgba(245, 158, 11, .28);
246
-
247
- .info-text {
248
- color: #92400e;
249
- }
250
- }
251
- }
252
- }
253
- }
254
-
255
- .toolbar-right {
256
- display: flex;
257
- align-items: center;
258
- gap: 4px;
259
- }
260
-
261
- .toolbar-btn {
262
- width: 24px;
263
- height: 24px;
264
- display: flex;
265
- align-items: center;
266
- justify-content: center;
267
- border-radius: 4px;
268
- cursor: pointer;
269
- color: var(--sub-text-color, #9ca3af);
270
- transition: all .2s;
271
-
272
- &:hover {
273
- background-color: transparent;
274
- color: #3b82f6;
275
- }
276
-
277
- .material-symbols-rounded {
278
- font-size: 20px;
279
- line-height: 1;
280
- display: flex;
281
- align-items: center;
282
- justify-content: center;
283
- }
284
-
285
- &.model-switcher {
286
- width: auto;
287
- height: 28px;
288
- padding: 0 8px;
289
- gap: 4px;
290
- background-color: var(--tag-hover-bg, #f3f4f6);
291
- border: 1px solid var(--border-color);
292
- color: var(--sub-text-color, #6b7280);
293
-
294
- .model-name {
295
- font-size: 12px;
296
- font-weight: 500;
297
- }
298
-
299
- .arrow {
300
- font-size: 14px;
301
- }
302
-
303
- &:hover {
304
- border-color: #3b82f6;
305
- background-color: var(--bg-color);
306
- color: #3b82f6;
307
- }
308
- }
309
- }
310
- }
311
-
312
- .asset-warning-tooltip {
313
- display: flex;
314
- flex-direction: column;
315
- gap: 8px;
316
- max-width: 420px;
317
-
318
- &__title {
319
- font-weight: 600;
320
- }
321
-
322
- &__item {
323
- display: flex;
324
- flex-direction: column;
325
- gap: 2px;
326
- line-height: 1.4;
327
-
328
- code {
329
- font-size: 12px;
330
- color: rgba(255, 255, 255, .9);
331
- }
332
- }
333
-
334
- &__more {
335
- opacity: .8;
336
- font-size: 12px;
337
- }
338
- }
339
-
340
- .sender-tools-cascader-popup {
341
- .ant-cascader-menus {
342
- background: var(--bg-color);
343
- border: 1px solid var(--border-color);
344
- border-radius: 14px;
345
- overflow: hidden;
346
- box-shadow: 0 18px 40px rgba(15, 23, 42, .16);
347
- }
348
-
349
- .ant-cascader-menu {
350
- min-width: 240px;
351
- max-height: 320px;
352
- padding: 8px;
353
- background: var(--bg-color);
354
- border-inline-end: 1px solid var(--border-color);
355
- }
356
-
357
- .ant-cascader-menu:first-child {
358
- background: var(--sub-bg-color);
359
- }
360
-
361
- .ant-cascader-menu:last-child {
362
- border-inline-end: none;
363
- }
364
-
365
- .ant-cascader-menu-item {
366
- min-height: 40px;
367
- padding: 8px 10px;
368
- border-radius: 10px;
369
- color: var(--text-color);
370
- font-size: 13px;
371
- transition: all .18s ease;
372
- }
373
-
374
- .ant-cascader-menu-item-content {
375
- min-width: 0;
376
- }
377
-
378
- .ant-cascader-menu-item-expand-icon {
379
- color: var(--sub-text-color);
380
- }
381
-
382
- .ant-cascader-menu-item:hover,
383
- .ant-cascader-menu-item-active,
384
- .ant-cascader-menu-item-expand {
385
- background-color: var(--tag-hover-bg, #f3f4f6);
386
- }
387
-
388
- .sender-tool-group-option,
389
- .sender-tool-option {
390
- display: flex;
391
- align-items: center;
392
- gap: 10px;
393
- min-width: 0;
394
- width: 100%;
395
- }
396
-
397
- .sender-tool-group-option__icon {
398
- width: 20px;
399
- height: 20px;
400
- border-radius: 7px;
401
- display: inline-flex;
402
- align-items: center;
403
- justify-content: center;
404
- background: rgba(99, 102, 241, .12);
405
- color: var(--primary-color, #6366f1);
406
- font-size: 14px;
407
- flex-shrink: 0;
408
- }
409
-
410
- .sender-tool-group-option__text {
411
- flex: 1;
412
- min-width: 0;
413
- font-weight: 600;
414
- color: var(--text-color);
415
- }
416
-
417
- .sender-tool-group-option__count {
418
- flex-shrink: 0;
419
- min-width: 22px;
420
- padding: 1px 6px;
421
- border-radius: 999px;
422
- background: var(--bg-color);
423
- border: 1px solid var(--border-color);
424
- color: var(--sub-text-color);
425
- font-size: 11px;
426
- line-height: 1.4;
427
- text-align: center;
428
- }
429
-
430
- .sender-tool-option__dot {
431
- width: 8px;
432
- height: 8px;
433
- border-radius: 999px;
434
- background: var(--primary-color, #6366f1);
435
- box-shadow: 0 0 0 4px rgba(99, 102, 241, .12);
436
- flex-shrink: 0;
437
- margin-left: 2px;
438
- }
439
-
440
- .sender-tool-option__text {
441
- min-width: 0;
442
- overflow: hidden;
443
- text-overflow: ellipsis;
444
- font-size: 12px;
445
- font-family:
446
- ui-monospace, SFMono-Regular, SFMono-Regular, Menlo, Monaco, Consolas,
447
- 'Liberation Mono', 'Courier New', monospace;
448
- letter-spacing: .01em;
449
- }
450
- }
451
-
452
- .adapter-select,
453
- .model-select,
454
- .effort-select,
455
- .permission-mode-select {
456
- .ant-select-selector {
457
- height: 28px !important;
458
- border-radius: 8px !important;
459
- border: 1px solid var(--border-color) !important;
460
- background-color: var(--tag-hover-bg, #f3f4f6) !important;
461
- padding: 0 8px !important;
462
- display: flex;
463
- align-items: center;
464
- }
465
-
466
- .ant-select-selection-item,
467
- .ant-select-selection-placeholder {
468
- font-size: 12px;
469
- color: var(--text-color);
470
- line-height: 1;
471
- }
472
-
473
- &.ant-select-disabled .ant-select-selector {
474
- background-color: var(--tag-bg, #f9fafb) !important;
475
- color: var(--sub-text-color, #9ca3af);
476
- }
477
- }
478
-
479
- .adapter-select {
480
- min-width: 100px;
481
-
482
- .ant-select-selector {
483
- padding-right: 24px !important;
484
- }
485
-
486
- .ant-select-selection-wrap {
487
- display: flex;
488
- align-items: center;
489
- }
490
-
491
- .ant-select-selection-item,
492
- .ant-select-selection-placeholder {
493
- display: inline-flex;
494
- align-items: center;
495
- min-width: 0;
496
- }
497
- }
498
-
499
- .model-select {
500
- min-width: 160px;
501
- }
502
-
503
- .effort-select {
504
- min-width: 72px;
505
- }
506
-
507
- .permission-mode-select {
508
- min-width: 120px;
509
- }
510
-
511
- .effort-select-popup,
512
- .permission-mode-select-popup {
513
- .ant-select-item-option-content {
514
- font-size: 12px;
515
- }
516
- }
517
-
518
- .adapter-select-popup {
519
- .ant-select-item-option {
520
- display: flex;
521
- align-items: center;
522
- }
523
-
524
- .ant-select-item-option-content {
525
- display: flex;
526
- align-items: center;
527
- flex: 1;
528
- min-height: 20px;
529
- font-size: 12px;
530
- }
531
-
532
- .adapter-option {
533
- display: flex;
534
- align-items: center;
535
- gap: 6px;
536
- width: 100%;
537
- }
538
-
539
- .adapter-option__icon {
540
- width: 14px;
541
- height: 14px;
542
- object-fit: contain;
543
- flex-shrink: 0;
544
- }
545
-
546
- .adapter-option__text {
547
- display: flex;
548
- align-items: center;
549
- min-height: 14px;
550
- line-height: 1;
551
- }
552
- }
553
-
554
- .adapter-option {
555
- display: inline-flex;
556
- align-items: center;
557
- gap: 6px;
558
- min-width: 0;
559
- }
560
-
561
- .adapter-option__icon {
562
- width: 14px;
563
- height: 14px;
564
- display: block;
565
- object-fit: contain;
566
- flex-shrink: 0;
567
- }
568
-
569
- .adapter-option__text {
570
- display: inline-block;
571
- min-width: 0;
572
- overflow: hidden;
573
- text-overflow: ellipsis;
574
- white-space: nowrap;
575
- }
576
-
577
- .model-select-popup {
578
- .ant-select-item-group {
579
- padding: 8px 8px 4px;
580
- color: var(--text-color);
581
- font-weight: 600;
582
- font-size: 12px;
583
- }
584
-
585
- .model-group-label {
586
- display: flex;
587
- flex-direction: column;
588
- gap: 2px;
589
- }
590
-
591
- .model-group-title {
592
- font-size: 12px;
593
- font-weight: 600;
594
- color: var(--placeholder-color);
595
- }
596
-
597
- .model-group-desc {
598
- font-size: 11px;
599
- color: var(--placeholder-color);
600
- }
601
-
602
- .model-option {
603
- display: flex;
604
- flex-direction: column;
605
- gap: 2px;
606
- }
607
-
608
- .model-option-title {
609
- font-size: 13px;
610
- font-weight: 500;
611
- color: var(--text-color);
612
- }
613
-
614
- .model-option-desc {
615
- font-size: 12px;
616
- color: var(--sub-text-color, #9ca3af);
617
- }
90
+ .chat-input-container--inline-edit {
91
+ width: 100%;
618
92
  }
619
93
 
620
94
  html.dark {
@@ -623,74 +97,3 @@ html.dark {
623
97
  --input-focus-bg: #141414;
624
98
  }
625
99
  }
626
-
627
- .chat-input-textarea {
628
- background: transparent !important;
629
- padding: 4px 0 !important;
630
- font-size: 14px;
631
- line-height: 1.5;
632
- color: #111827;
633
-
634
- &::placeholder {
635
- color: #9ca3af;
636
- }
637
- }
638
-
639
- .chat-send-btn {
640
- width: 32px;
641
- height: 32px;
642
- margin-bottom: 1px;
643
- border-radius: 8px;
644
- background-color: transparent;
645
- display: flex;
646
- align-items: center;
647
- justify-content: center;
648
- cursor: pointer;
649
- transition: all .2s;
650
- color: #9ca3af;
651
- flex-shrink: 0;
652
-
653
- .material-symbols-rounded {
654
- display: inline-flex;
655
- align-items: center;
656
- justify-content: center;
657
- line-height: 1;
658
- font-size: 20px;
659
- }
660
-
661
- &:hover {
662
- color: #3b82f6;
663
- }
664
-
665
- &.active {
666
- color: #3b82f6;
667
-
668
- &:hover {
669
- color: #2563eb;
670
- }
671
- }
672
-
673
- &.thinking {
674
- color: #ef4444;
675
-
676
- &:hover {
677
- color: #dc2626;
678
- }
679
- }
680
-
681
- &.disabled {
682
- color: #9ca3af;
683
- cursor: not-allowed;
684
-
685
- &:hover {
686
- color: #9ca3af;
687
- }
688
- }
689
- }
690
-
691
- .chat-input-hint {
692
- margin-top: 4px;
693
- text-align: center;
694
- font-size: 12px;
695
- color: #9ca3af;
696
- }