-
Notifications
You must be signed in to change notification settings - Fork 2.6k
Add initial support for images in the ai chat #15410
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is awesome! Thank you!
I'm wondering whether we could integrate the handling of images with the existing context concept and extend it with images, rather than doing it alongside it? Conceptually it would feel like a good fit, alongside other context, like files.
yes I thought about that. Basically we need to decide how we want to handle non message data, eg images and audio. as part of the request or just as "additional information" and thus part of the context? |
Maybe even both should be possible? |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I tested this PR a bit more and I think it is a great feature that I really would like to get in!
Besides cleaning up the change (some unnecessary comments, out-commented code and formatting changes), I'm mostly thinking about how to best represent images in the chat session and in the UI. Currently it is added orthogonal to all available infrastructure we have.
I'm wondering whether we couldn't just reuse the file context variable or create an image context variable adjacent to it. This would give us the UI more or less for free:
- The drag'n'drop support to add images
- The + button support to add images
- Show images just like files in the chat input if they have been attached with the existing context variable UI
A minor disadvantage would be that we wouldn't show a preview of the image in the chat input. But I'm not sure this is a big deal.
We could still handle the images in the generic chat agent code (like now in this PR) but just filter out all image context variables from the context instead of reading the new request.images
. I like this as it is customizable by concrete chat agents. It might be worth though to give the getMessages
method access to the language model that is being used and add a property to it whether it even supports images. If it doesn't, we could avoid creating the image messages and show a warning to the user?
What do you think?
Great work with this PR, in any case!!! Looking forward to having this available in Theia AI!
So my thoughts about the context and why I didn't add it directly to it:
Yes I agree language models need a possibility to provide a feature list so that we can check what is supported. |
@eneufeld Thanks for the feedback! That makes sense. The way we use context so far is indeed a bit different in semantics, especially when thinking about audio. For images, though, I feel the advantages of reusing the existing infrastructure outweigh the semantic mismatch. For audio, I agree—it’s semantically equivalent to the user input, like a spoken prompt. But for images and files, they usually augment the input. Sure, it may also make sense to send an image without a user prompt (spoken or written). Actually, this may actually also be true for any file, e.g. when I copy a log file and want to send it to the LLM without writing a prompt. I don't see it as part of this PR, but we may want to consider enabling the send button if there is at least one context element (image or file). All in all, going the context-element route seems reasonable to me—especially as it simplifies integrating the UI behaviors (e.g. Drag&Drop, + button, consistent view in the chat input). But I’m totally open to your thoughts here and happy to go with whatever direction you feel is more robust long term. Thank you! |
I totally see the advantages of the context. We should just define a consistent logic for us what goes into the context (and thus what it is) and what stays outside of it. @sdirix any ideas here |
Images and Voice are transferred to the LLM via separate messages within the request. They are high priority items the user will always want to be included. Modeling these as additional fields on a request makes sense to me. The way the context is currently set up, it's optional content. The only way the LLM even knows about the context is by adding the context variable and/or the context functions deliberately to the prompt. Even then, an LLM still needs to perform tool calls to retrieve the content and might just ignore it. Therefore this does not fit to the deliberate copy of images or voice input. We still might want to (auto-)populate the context with images and audio later on for the LLM to offer for optional consumption, but this is not the current use case. |
Initial implementation of #15407
527dc5b
to
8c7eff1
Compare
I rebased the change and moved the image property to the context. As a follow-up we definitely want to support that images can be handled the same way other context variables (tasks, files) are handled at the moment. Still I think this adds a valuable feature and a good baseline for image support. |
0ccb96e
to
13b4250
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks, looks great to me! 👍 Excellent work.
@eneufeld Is it possible that this change breaks pasting text into the chat with the CTRL+V shortcut? It was working after pulling this noon, but seems to be broken after a pull just now… 😕 |
@xpomul Unfortunately, it does! There is a fix in https://github.com/eclipse-theia/theia/pull/15765/files#diff-7b86f78bfb9759d841ed4e6a074768ed761c0f18079b23dc1d705566bb8bcaab but if it is urgent and the PR review takes a longer time, we can pull the fix out. |
@martin-fleck-at ah thanks. Fine for me. I just wanted to give a heads-up so that it does not go unnoticed :) |
* fix: autocomplete content in chat view (#15240) Fixes autocomplete content not showing up in inline editors like the ChatInput. With the Lumino migration we disabled 'fixedOverflowWidgets' in our Monaco editors, as Lumino widget styles leverages 'contain', influencing the position of autocomplete content. This is now reverted, and instead the 'contain' of Lumino widgets is forcefully disabled, fixing the autocomplete issue. fixes #15237 Co-authored-by: Eugen Neufeld <[email protected]> * Limit the width of tab-bar rows to 100% of parent (#15260) Fixes #15254 Contributed on behalf of STMicroelectronics Signed-off-by: Thomas Mäder <[email protected]> * Refine AI setting descriptions (#15250) * Add shortcut for adding the current file to the AI chat context (#15252) * fix: Pin node-abi version to 3.x due to Node.js 22+ requirement in 4.x (#15212) * pins the node-abi version to resolve the compatibility issue where node-abi 4.x requires Node.js version 22 or higher * remove unused package node-abi @types/node-abi * update package-lock.json after delete node-abi * Prevent plugin host localization errors (#15268) * Allow to add all MCP functions via prompt fragment (#15270) fixed #14952 * [vscode] Support keepWhitespace in SnippetTextEdit and insertSnippet (#15176) fixes #15131 Contributed on behalf of STMicroelectronics Signed-off-by: Remi Schnekenburger <[email protected]> * Workspace Symbols: Pass multiple classnames as array of strings (#15244) * Dispose of child InstantiationServices in MonacoEditor (#15246) * Add news section with AI to welcome page (#15269) * Add news section with AI to welcome page * chore: make parameters in ToolRequest mandatory (#15288) Previously, parameters were optional, indicating that a tool request doesn’t take any. However, most LLMs produce better output when parameters are explicitly set to empty. This is now the default in TheiaAI. * chore: change private members to protected in ChatViewTreeWidget (#15297) Enhance extensibility for adopters by converting private functions and injections to protected in the ChatViewTreeWidget. Signed-off-by: Roman Piper <[email protected]> * Add variable completion for {{}} syntax in prompttemplate (#15026) The prompttemplate editor now supports autocompletion for variables using `{{` and `{{{` . fixes: #15202 * Add MCP Server config view to AI Configuration (#15280) Improve MCP services: - Introduce notification mechanism to listen to MCP server changes. - Created common interface for MCPFrontendService. - Rename getStartedServers() to getRunningServers(). - Added status handling to MCPServer (NotRunning, Starting, Running, Errored): - Add getServerDescription endpoint to retrieve information about the server. - Add status, error message and tool information to MCPServerDescription. - Add MCP Config view to AI Configuration: - This view helps to see the state of MCP servers. - Displays all the created settings. Obfuscates tokens (very basic support). - Shows the status of a server (Running, Starting, Errored, Not Running). - Shows all tools available. Let's the user easily copy the tools for chat and prompttemplate use. - Offers a button to start/stop the view. Fix autostart stopping for following servers if one fails: - Before this the autostart would stop for all following servers if one failed. - This was due to uncatched errors when trying to resolve the tools. - To prevent this in the future, improved the handling of the getTools() on client side. - Also adapted the Start Command to use the new status reporting instead of calling getTools() again. Signed-off-by: Simon Graband <[email protected]> * Consolidate widget labels (#15304) fixed #15303 * fix: getFileDiagnostics waits forever (#15305) * Use fixed version 1.5.5 of perfect-scrollbar (#15279) Fixes #15277, #15232 Contributed on behalf of STMicroelectronics Signed-off-by: Thomas Mäder <[email protected]> * feat: thinking support, request settings and communication restructuring (#15092) Support for Claude's thinking feature has been added by updating the Anthropic SDK to v0.39.0, implementing ThinkingChatResponseContent, adding a TextPartRenderer for displaying thinking content, and updating the language model request handling throughout the code. Centralizes all LLM communication via the new LanguageModelService. Leveraging this service, adopters can easily customize LLM request handling. Greatly enhances the model request settings, allowing configuration of default request settings for LLM providers, specific LLM models and agents. The request settings are merged with the handed over request settings via the new LanguageModelService. Additionally, request settings can now be set per session via the Chat UI, which is useful for quick experimentations, eliminating the need to manually modify preferences. Co-authored-by: Philip Langer [email protected] * feat(chat): add customizable welcome message (#15316) Extracts the disabled AI message and adds a welcome messages for the chat view. Both messages are provided by a customizable DI binding. The current messages are moved into the `ai-ide` package. * Improve dirty diff & avoid instantiation service leakage (#15238) * Ensures that a valid InstantiationService is available for hover delegate creation * Improves dirty diff functionality to work when editor modified * Hide overflow in view container headers (#15321) Fixes #15274 Contributed on behalf of STMicroelectronics Signed-off-by: Thomas Mäder <[email protected]> * fix: do not set anthropic tool choice without tools (#15329) Makes sure to not hand over the 'tool_choice' parameter to the anthropic SDK if there are no tools to choose from. The SDK will throw an error otherwise. fixes #15327 * fix: communication recording in Orchestrator (#15328) Restores communication recording in Orchestrator chat agent. Makes sure an own request id is used for history recording. * Explicitly set scrolling element to avoid document scroll (#15315) * Fixes document scroll on node selection in preferences view * Prevent SiW overflow & scrollbar (#15287) * feat(chat): introduce LLM-based chat naming and last interaction date (#15116) Finding chat sessions is currently very difficult as we are recoding the last request as a name. It'd be better to use a language model to generate a name for the chat session and also record the last interaction date, to have proper sorting and a chronological relation to the chat sessions. Moreover, this PR allows users to manually specify a name for the chat session, which will be used instead of the generated name. Fixes https://github.com/eclipse-theia/theia/issues/15115 Co-authored-by: Stefan Dirix <[email protected]> * Turn automatic inline code completion off by default (#15333) fixed #15332 * [vscode] Rename AuthenticationForceNewSessionOptions (#15264) fixes #15133 Contributed on behalf of STMicroelectronics Signed-off-by: Remi Schnekenburger <[email protected]> * Allow project specific prompt additions (#15236) * Allow project specific prompt additions fixed #15200 * Bump VS Code API version (#15341) Fixes #15138 Contributed on behalf of STMicroelectronics Signed-off-by: Remi Schnekenburger <[email protected]> * Set selection upon editor navigation only after editor is fully visible (#15302) This change required the introduction of "navigation transactions", where a location is not remembered in the navigation location stack while another navigation transaction is still active. This prevents the navigation location service from recording intermediate locations while navigating to an already open editor. Only the final location in simultaneous transactions is recorded. Fixes #15145, #15191 Contributed on behalf of STMicroelectronics Signed-off-by: Thomas Mäder <[email protected]> * Correctly set dirty state when current save is canceled (#15310) * Normalize results of Path.join (#15331) * Ensure all tool providers bound to self (#15330) * Allows downstream application to override individual tool implementations * chore: remove outline in the chat session settings editor * Modify link in AI chat instructions to show AI settings directly (#15326) * fix: add missing `editor` dependency to `console` (#15354) Closes eclipse-theia/theia#15353 * Show context menu for editor minimap (#15220) Fixes #15217 and #13070. * Relayout dock panel when breadcrumbs become active (#15342) Fixes #15273 Contributed on behalf of STMicroelectronics Signed-off-by: Thomas Mäder <[email protected]> * [vsode] Support command workbench.extensions.command.installFromVSIX (#15179) fixes #15169 Contributed on behalf of STMicroelectronics Signed-off-by: Remi Schnekenburger <[email protected]> * chore: improve style of code blocks in modern theme * [vscode] make DiagnosticCollection iterable (#15361) fixes #15348 Contributed on behalf of STMicroelectronics Signed-off-by: Remi Schnekenburger <[email protected]> * Do not re-export the configuration folder as env variable (#15376) Before this the configurationFolder (which includes the user settings for example) was exported as a env variable THEIA_CONFIG_DIR. This is problematic, as we also allow users to define a configurationFolder via this variable, and use it whenever provided for a new session. Therefore, if you debug another application from a Theia tool (e.g. the Theia IDE) you will always get the tools configurationFolder, which is probably not intended. As this results in settings being changed in the started application to also be applied in the root too (e.g. colorTheme). Signed-off-by: Simon Graband <[email protected]> * Minor Improvements MCP View (#15364) * Minor Improvements MCP View * Add third button for prompt fragment in prompt template * Remove copy chat specific button for single functions fixed #15363 * Use camelCase in React SVG (#15367) * fix: fix response content in language model utility I ran into cases where the getTextOfResponse() appended `false` to the returned string. * Refine coder prompt (#15358) fixed #15357 * Make icons right-aligned. (#15373) fixes #15296 Contributed on behalf of STMicroelectronics Signed-off-by: Thomas Mäder <[email protected]> * add native google ai-provider (#15334) Co-authored-by: Jonas Helming <[email protected]> * Translation update for version 1.60.0 (#15382) * docs: split changelogs by year Signed-off-by: Simon Graband <[email protected]> * docs: update changelog for 1.60.0 Signed-off-by: Simon Graband <[email protected]> * core: update re-exports for 1.60.0 Signed-off-by: Simon Graband <[email protected]> * v1.60.0 Signed-off-by: Simon Graband <[email protected]> * Wait for async creation of 15370_wait_for_debug_console_widget (#15388) Fixes #15370 Contributed on behalf of STMicroelectronics Signed-off-by: Thomas Mäder <[email protected]> * white label prompt templates (#15322) * Remove Theia name from prompt template labels Signed-off-by: Roman Piper <[email protected]> * feat(chat): enhance streaming content parsing for incomplete response content matches (#15387) - Refactored `addStreamResponse` method to maintain a complete text buffer for streamed responses, improving handling of incomplete matches. - Introduced `ProgressChatResponseContent` interface and its implementation to support progress updates in chat responses via incomplete matches - Updated `parseContents` function to differentiate between complete and incomplete matches, allowing for better content management during streaming. - Added unit tests for new functionality in `parse-contents-stream.spec.ts` and updated existing tests to utilize custom matchers for code content parsing. Fixes https://github.com/eclipse-theia/theia/issues/15386 * Add initial support for tracking token usage * [vscode] remove proposed API createFileSystemWatcher (#15265) fixes #15135 Contributed on behalf of STMicroelectronics Signed-off-by: Remi Schnekenburger <[email protected]> * Provide range to completion item to allow for correct inline display (#15398) * Support `fix-path` in non-bundled environments (#14819) * Revert #15331 to fix webviews (#15421) Fixes #15416 Contributed on behalf of STMicroelectronics Signed-off-by: Thomas Mäder <[email protected]> * fix cell editor and notebook output selection (#15384) --------- Signed-off-by: Jonah Iden <[email protected]> * Add DOCKER_HOST support to devcontainer (#15350) --------- Signed-off-by: KnowZero <[email protected]> * Add the ability to disable installed plugins (#15205) Step 1 of #13901 Contributed on behalf of STMicroelectronics Signed-off-by: Thomas Mäder <[email protected]> * fix: implement the registerDiffInformationCommand to resolve issue #14144 (#15406) * Clarify replace function description (#15442) fixed #15441 * Add project info prompt fragment (#15449) fixed #15448 * docs: Fix broken links in documentation (#15454) Signed-off-by: Per Tillisch <[email protected]> * chore(polyfills) remove es6-promise & setImmediate (#15436) Signed-off-by: Alexander Taran <[email protected]> * Correctly return tool input when creating the message For tool calls which had no arguments, the tool input was returned as empty string which does not work for some models. fixes #15455 * NPM upgrade Removed version fix of `@types/express-serve-static-core` to `5.0.4`. Signed-off-by: Simon Graband <[email protected]> * Resolve unresolved variables to empty string (#15463) * Resolve unresolved variables to empty string - Unresolved prompt fragments - Empty changesets fixed #15453 * Fixes switching the localization language back to the default Fixes https://github.com/eclipse-theia/theia/issues/15444 * AI Chat UI: Minor presentation improvements (#15344) * Collapse label in order & no explicit nbsp * Also use the label provider system's details for context items * Remove linebreaks from start and end of chat messages * Only call resolve() on tasks that have no execution (#15480) Fixes #15171 Contributed on behalf of STMicroelectronics Signed-off-by: Thomas Mäder <[email protected]> * Avoid double registration of sticky scroll toggle (#15366) Removes registration of editor.action.toggleStickyScroll command in monaco package in favor of editor package registration * Clarify error for multiple occurences during replace (#15481) * Clarify error for multiple occurences during replace * Fix test --------- Co-authored-by: Colin Grant <[email protected]> * fix: typo in code completion prompt (#15383) fixes #15379 * add gpt-4.1 models to the list of default models (#15465) * add gpt-4.1 models to the list of default models * add o3 and o4-mini * Add Gemini Flash 2.5 to default models (#15487) * Fixes #15475 by properly calling the toOllamaXxx() methods Signed-off-by: Stefan Winkler <[email protected]> * Support version for installExtension, support uninstall cmd (#13795, #13796) (#14298) * fix: use `ElectronConnectionHandler` to connect updater services (#15430) Signed-off-by: Giacomo Cusinato <[email protected]> * More legible history entries (#15483) * fix(chat): ensure we keep space after variables and agent label in place * Hide overflow on sidebar-toolbar (#15492) Fixes #15468 Contributed on behalf of STMicroelectronics Signed-off-by: Thomas Mäder <[email protected]> * Remove @theia/git from release (#15471) stop publishing deprecated extension * Make preventTabbingOutsideDialog more easily overridable (#15460) - Add comment about functionality - Expose application shell classes for easier reference Fixes #15417 * Introduce editable chat requests (#15479) Closes https://github.com/eclipse-theia/theia/issues/15295 * Fix ScanOSS button/icon in chat ui (#15339) Co-authored-by: Philip Langer <[email protected]> * Allow workspace specific custom agents (#15457) fixed #15456 * Add support for search in workspace fixes #15467 * Add a new tools which allow to list and run tasks fixes #15503 * Add next template for coder Co-authored-by: Jonas Helming <[email protected]> * Use SimpleMonacoEditor for most inline cases (#15389) * Fix breakpoint editor shrinking in size (#15515) Fixes #15241. * Pass the original argv to the "second instance" handler (#15124) Fixes #14747 Contributed on behalf of STMicroelectronics Signed-off-by: Thomas Mäder <[email protected]> * Update dirty diff when editor becomes visible. (#15505) Fixes #15426 Contributed on behalf of STMicroelectronics Signed-off-by: Thomas Mäder <[email protected]> * Add Terminal via "+" in terminal tool bar (#15470) * Add Terminal via "+" in terminal tool bar fixed #15282 * Reacto to editor model changing. (#15509) Fixes, #15498, #15497, #15496 Signed-off-by: Thomas Mäder <[email protected]> * Basic ssh_config support (#15499) --------- Signed-off-by: KnowZero <[email protected]> Signed-off-by: Jonah Iden <[email protected]> Co-authored-by: Jonah Iden <[email protected]> * Use editor widget as key for debug editor models (#15516) Fixes #15510 Contributed on behalf of STMicroelectronics Signed-off-by: Thomas Mäder <[email protected]> * Agent prompt suggestions & chat summary (#15427) * Architect suggestion to summarize and continue with Coder (#15512) * Update deprecated xterm dependency (#15523) fixes #13896 Contributed on behalf of STMicroelectronics Signed-off-by: Remi Schnekenburger <[email protected]> * Translation update for version 1.61.0 (#15530) Co-authored-by: Simon Graband <[email protected]> * Remove git deprecation from Publishing Signed-off-by: Simon Graband <[email protected]> * docs: update changelog for 1.61.0 Signed-off-by: Simon Graband <[email protected]> * core: update re-exports for 1.61.0 Signed-off-by: Simon Graband <[email protected]> * v1.61.0 Signed-off-by: Simon Graband <[email protected]> * Use ubuntu 22.04 runner in package native dependencies step Ubuntu 20.04 runner is deprecated. Signed-off-by: Simon Graband <[email protected]> * Stub conpty.node import on linux and macos (#15443) Signed-off-by: Parisa Betel Miri <[email protected]> * Add test infor and code guidlines to project-info (#15537) * Make monaco commands available through command palette for notebook cells (#15538) Signed-off-by: Jonah Iden <[email protected]> * Improve handling of proxy errors and logging (#15478) * Add initial prompt for coder agent mode (#15569) * Add initial prompt for coder agent mode * Add default context resolution for custom agents (#15571) * Add default context resolution for custom agents * Refactor menu nodes (#14676) Fixes #14217 Makes menu nodes active object that can decide on visibility, enablement, etc. themselves. Contributed on behalf of STMicroelectronics Signed-off-by: Thomas Mäder <[email protected]> Co-authored-by: Dennis Huebner <[email protected]> * Improve playwright tests reliability (#15446) * Improve playwright tests reliability * Use monaco editor instead of its container internally * Workaround a bug where a new cell doesn't contain monaco-editor * Use proper locator for monaco editor. Added editor wrapper page object. * More reliable execution counter retrieval * Clean up handling of "toggle maximized". (#15547) Fixes #15462, #15525 Contributed on behalf of STMicroelectronics Signed-off-by: Thomas Mäder <[email protected]> * feat: add generic AI communication model (#15409) Adds a new AI communication model for tracking raw LLM requests and responses. Tracking is automated via the language-model-service. This model serves as the foundation for: - Extracting communication history from Theia AI, allowing LLM testing without running the full Theia-based application - Replaying LLM communication without using an actual LLM, enabling deterministic integration tests - Removing the clunky communication recording service, making the ai-history package optional Resolves #15221 Contributed on behalf of STMicroelectronics * Subscribe to decoration changes at initialization (#15573) * When the DebugEditorModel attaches to the editor, it initially does not receive decorations updates. Only when changing the file, decorations are updated. Fixes #15567 Signed-off-by: Florian Richter <[email protected]> * Use shouldAutoSave when closing widget (#15502) * Respect editor associations when opening diff-editors (#15422) Fixes #15401. * [vscode] Support TerminalState shell property (#15514) [vscode] Support TerminalState shell property fixes #15433 Contributed on behalf of STMicroelectronics Signed-off-by: Remi Schnekenburger <[email protected]> * Update tree upon becoming visible (#15595) Fixes #15592 Contributed on behalf of STMicroelectronics Signed-off-by: Thomas Mäder <[email protected]> * deps: Bump tar-fs to 3.0.8 (#15562) tar-fs 3.0.8 fixes CVE-2024-12905 (https://security.snyk.io/vuln/SNYK-JS-TARFS-9535930) Contributed by STMicroelectronics Signed-off-by: Torbjörn SVENSSON <[email protected]> * deps: Bump dompurify to 3.2.4 (#15564) dompurify 3.2.4 fixes CVE-2025-26791 (https://security.snyk.io/vuln/SNYK-JS-DOMPURIFY-8722251) Contributed by STMicroelectronics Signed-off-by: Torbjörn SVENSSON <[email protected]> * [vscode] Support CommentAuthorInformation in CommentThread canreply (#15598) fixes #15558 Contributed on behalf of STMicroelectronics Signed-off-by: Remi Schnekenburger <[email protected]> * Close secondary windows on reload (#15591) Handle closing secondary windows on reload in the electron changes Fixed #15533 Contributed on behalf of STMicroelectronics Signed-off-by: Thomas Mäder <[email protected]> * Implement "code actions on save" (#15555) Fixes #14955 Contributed on behalf of STMicroelectronics * feat(hover-service) make hover-service use platform showPopover() (#15452) Signed-off-by: Alexander Taran <[email protected]> * Clarify resolution of context files for Coder an Architect (#15579) * Clarify resolution of context files for Coder an Architect * chore: hide suggestions from chat input for message editing Fixes https://github.com/eclipse-theia/theia/issues/15616 * feat: introduce experimental generic LLM provider via Vercel AI Adds OpenAI and Anthropic for testing. For now everything is in one package, but we should eventually split that into a generic vercel package and a package for each provider. Tested tool calling, streaming and structured output. Did not test custom OpenAI compatible and Azure models. Co-authored-by: Eugen Neufeld <[email protected]> * chore: commit lock file changes (#15630) Closes eclipse-theia/theia#15627 * fix: remove duplicate npm script (#15631) Closes eclipse-theia/theia#15628 * Allow to see editor hovers while debugging (#15609) Currently, when debugging, hovers provided by the LSP server are not displayed, because the are disabled at the start of debugging. This change will disable these hovers only while showing a debug hover. Thus during debugging, debug hovers have priority over editor hovers. Fixes #15170 Signed-off-by: Florian Richter <[email protected]> * Update OCT integration to v0.3 (#15633) Co-authored-by: Jonah Iden <[email protected]> * Clean up next coder prompt (#15634) * Clean up next coder prompt * Remove two more errors * fix show all opened editors dropdown display by using correct icon class type (#15624) Fixes #15623 - Fixes rendering issue in "Show all opened editors" quick pick dropdown caused by icon classes being passed as a string instead of a string array. - Also refactors to reuse the existing constant for the quick input prefix when executing the command. * fix: correctly handle empty text response (#15638) The stream chat agent was not correctly checking text content and thus contents was duplicated. * Open AI configuration View at bottom (#15637) * deps: Bump multer to 2.0.0 (#15614) multer 2.0.0 fixes CVE-2025-47944 (https://nvd.nist.gov/vuln/detail/CVE-2025-47944) Contributed by STMicroelectronics Signed-off-by: Torbjörn SVENSSON <[email protected]> * Improve File Change Set Functions (#15642) * Add Claude 4 Models (#15640) * Add Claude 4 Models * refactor: use communication model in AI history view (#15540) Refactors the AI history view to use the new AI communication model as data input. Removes the now obsolete communication recording service. The history now supports two visual modes: "raw" and "compact" for easier inspection. Also added an option to toggle newline rendering. The ai-history package now depends on ai-chat-ui instead of the other way around. Therefore the AI history is now optional. Resolves #15539 Contributed on behalf of STMicroelectronics * Fix a repetition in the coder prompt (#15650) * fix: chat input field does not show a scroll bar (#15654) Closes #15580 * Improve Mistral support using openAI provider * add stream_options/include_usage only for openai models * add workarounds to correctly handle optional fields for mistral * fix: check for a valid LanguageModelStreamResponsePart (#15653) OpenAI returns empty stream parts which create an empty newContent object and is added as a markdown part in the section not expecting a text part. This breaks all the logic. A new check is added that checks for known stream parts. Unknown parts are logged as a warning. fixes #15646 Co-authored-by: Stefan Dirix <[email protected]> * Add next prompt for architect (#15649) * Use pointer capture for split handle dragging (#15643) Fixes #15589 Contributed on behalf of STMicroelectronics Signed-off-by: Thomas Mäder <[email protected]> * fix: overload ChatToolRequest.handler (#15655) Under TS `strictFunctionTypes`, `ChatToolRequest[]` was not assignable to `ToolRequest[]` because its handler signature narrowed the `ctx` parameter. Adding a second overload matching the base `ToolRequest` signature (`handler(arg_string: string, ctx?: unknown)`) restores assignability in `strict` mode, while still exposing the stricter `MutableChatRequestModel`-required overload for chat code. Related to #15648 Also fixes typos in templates, symbols and consts * WSL remote support (#15543) --------- Signed-off-by: Jonah Iden <[email protected]> * Render groups correctly in "more" tab bar menu (#15647) Fixes #15636 Contributed on behalf of STMicroelectronics Signed-off-by: Thomas Mäder <[email protected]> * Introduce debounce for inline AI code completion Closes #15399 - debounces inline AI code completion requests - adds new preference `aiFeatures.codeCompletion.debounceDelay` (default 300 ms) - explicit trigger bypasses the debounce entirely * Prompt management refactoring and view (#15632) Unified naming: - Introduced clear separation between prompt templates (text) and prompt fragments (template + metadata) - Added support for 0...1 built-in versions per fragment and unlimited custom versions - Agents are now assigned prompts instead of prompt templates - Agent prompts are a set of variant (1...n), which are prompt fragments, united under one id. - Added selected & active variant logic for system prompts The prompt service is now responsible for handling all requests regarding prompts. This includes customization's (will be forwarded to the customization service, if one exists). Also handles the newly introduced agent prompts. Changed agents prompts declaration: - Agent now provide the id of the system prompt they are using. - Additionally they need to define the default variant, but can register many more variants. Improved logic in prompt-service: - Added listener when the prompts have changed - Removed as much assumed information about the customization service as possible (e.g. file name) - Added PromptVariantSets, selected & active variant maps to keep the state. - Introduces types for BuiltInPromptFragment & CustomizedPromptFragment. Introduces a new widget for configuring AI prompt fragments and PromptVariantSets. Displays all PromptVariantSets, which agent they are used by, their variants and customizations. Shows the active and selected variants as well as the active customization. Offers buttons to revert to a certain customization or deleting it. Allows the user to create a customization of built-in prompt fragents. Displays the template text for each customization. Shows prompt fragments that are not associated part of a variant set. * [vscode] bump vscode API compatibility to 1.99.3 (#15658) fix #15435 Contributed on behalf of STMicroelectronics Signed-off-by: Remi Schnekenburger <[email protected]> * Translation update for version 1.62.0 (#15667) Co-authored-by: jfaltermeier <[email protected]> * chore: clarify API key description for Vercel AI keys (#15665) Extends the description of the API key preferences of Vercel AI to clarify that the keys will be used by the Vercel AI SDK. Co-authored-by: Philip Langer <[email protected]> * Translation update for version 1.62.0 (#15673) Co-authored-by: jfaltermeier <[email protected]> * Fix localization of files in `electron-browser` (#15677) * Translation update for version 1.62.0 (#15678) Co-authored-by: jfaltermeier <[email protected]> * docs: update changelog for 1.62.0 * core: update re-exports for 1.62.0 * v1.62.0 * fix: support more than 10 tool calls via OpenAI SDK (#15696) We use the convenience "runTools" API of the OpenAI SDK to handle requests with tool calls. By default, the SDK stops after 10 chat completions, whereby each function call is counting as one. Thereby the SDK just stops generating in use cases with many tool requests (e.g. Coder with GPT4.1). We raise the limit to 100 now by default. The option is also made configurable for adopters. Also updates to the latest OpenAI SDK major version 5 and adjusts the code where necessary. * Add (major) dependency update to Publishing (#15674) To check with every release if (major) dependencies need to be updated. Signed-off-by: Simon Graband <[email protected]> * fix: remove tool results from subsequential requests During multiple tool requests, the anthropic provider was passing all tool results over and over again. This resulted in unreasonable high token usage due to repetetition. * Make sure to add openai stream options only in streaming models (#15706) * Add support for custom AI variables in code completion prompt (#15681) Add unit tests and sample for manual testing Signed-off-by: Vivien Jovet <[email protected]> Co-authored-by: Philip Langer <[email protected]> * Add Widgets, Commands and Toolbar to project info. (#15697) * Add Widgets, Commands and Toolbar to project info. * Make workspace functions token efficient (#15703) * Use relative path in search results in workspace function (#15704) * feat(chat): preserve change sets across chat branch changes Fixes https://github.com/eclipse-theia/theia/issues/15513 * Start Chat from Editor Context (#15712) Fixes https://github.com/eclipsesource/theia/issues/195 Co-authored-by: Haydar Metin <[email protected]> Co-authored-by: Philip Langer <[email protected]> Co-authored-by: Nina Doschek <[email protected]> * Workspace search function allows specifying file extensions (#15699) * AppTester Agent via Browser Automation (#15713) - New AppTester for browser automation support - Ask the user before starting and installing the Playwright MCP Server Co-authored-by: Haydar Metin <[email protected]> * fix: temporary scroll lock when user scrolls up in AI Chat (#15683) - when user tries to scroll up in the Chat View, temporarily enable scroll lock, even if it is originally disabled - restore the previous scroll lock state when scrolling back to the bottom fixes #15049 Signed-off-by: Camille Letavernier <[email protected]> * fix: initial configuration of backend loggers (#15705) Log levels can be set via the CLI. However some loggers are already constructed before the CLI arguments are parsed. We now make sure that any CLI configuration also reaches the initial loggers. fixes #15695 * Add ai tool functions for write through file changes (#15717) * Rename the existing change set tool functions and classes to align better with that they do * Add new tool functions to directly write changes to disk * Adapt Coder prompts to adapt to the renamed tool function classes * Use write through functions in coder agent mode prompt Co-authored-by: Thomas Mäder <[email protected]> * Revert "fix: remove tool results from subsequential requests" (#15721) This reverts commit ee5e882a7069e72e0ac84f3ca58cedd4e11096d3. The commit is reverted as it breaks LLM behavior in many use cases, for example when multiple tool results are required to continue. * Move AI Configuration View to main (#15726) * fix: filter out error messages from the messages send to the llm The llm does not care why the previous run was halted. So remove error messages from the list of messages send to the llm. * Show active chat in chat dropdown (if it has a title). * Update project info with styling information * feat: implement prompt caching for Anthropic (#15731) Mark system prompts, tools and messages for caching in the Anthropic LanguageModel. For typical agent workflows like "@Coder" this reduces token costs by a large factor and reduces the pressure on the rate limit. Currently caching is enabled by default for all Anthropic models. Also updates token tracking functionality to be aware of token caching and updates the Anthropic SDK. fixes #15729 * Fix chat input widget not tracking branches and pending state (#15727) Update the ChatInput widget to - track the currently active branch in the session tree - listen for state changes in the model to show either the cancel button when a request is pending or else the send button Co-authored-by: Christian W. Damus <[email protected]> * Tool Call Confirmation UI (#15714) This PR introduces a flexible and user-configurable tool call confirmation system for agent interactions. Users can now control, on a per-tool basis, whether a tool call should be: - **Disabled**: The tool cannot be executed. - **Confirm**: The user is prompted for approval each time the tool is called. - **YOLO**: The tool is executed immediately without confirmation. **Features:** - **Per-Tool Confirmation Settings:** Users can configure the confirmation mode for each tool individually, either via the AI configuration view (dropdown per tool) or directly in `settings.json`. - **Session and Persistent Preferences:** When prompted, users can approve or deny a tool call once, for the entire chat session, or persist their preference (including disabling or enabling YOLO mode) in their settings. - **Default Mode:** The default mode is YOLO, but users can set their own global default. - **Configuration UI:** Added a dedicated view for managing tool confirmation settings, making it easy to adjust preferences per tool. Signed-off-by: Simon Graband <[email protected]> Co-authored-by: Simon Graband <[email protected]> Co-authored-by: Eugen Neufeld <[email protected]> Co-authored-by: Nina Doschek <[email protected]> * Consolidate Coder Prompts (#15733) * Consolidate Coder Prompts * Don't steal global focus for widget activation (#15735) * fix: avoid overflow of tabbar in AI config Fixes https://github.com/eclipsesource/theia/issues/243 * chore: update the Google AI SDK (#15737) Updates @google/genai from 0.7.0 to 1.3.0. Instead of 'latest' we now use a proper version range. Also updates the Gemini default models to the latest available ones. * fix: difficult to scroll up when auto scroll is enabled (#15748) - distinguish between "scroll up" and "scroll down" - always enable tmp scroll lock when going up, regardless of distance from bottom - disable tmp scroll lock when scrolling down, if we reach the bottom area * Include the ai-ide stylesheet in the secondary window (#15752) Fixes eclipsesource/theia/241 Signed-off-by: Christian W. Damus <[email protected]> Co-authored-by: Olaf Lessenich <[email protected]> * Fix existence check when contributing monaco menu items (#15746) Fixes #15691 Contributed on behalf of STMicroelectronics Signed-off-by: Thomas Mäder <[email protected]> * Improve Ask AI feature (#15725) * Improve Ask AI feature Part of https://github.com/eclipsesource/theia/issues/222 Fixes https://github.com/eclipsesource/theia/issues/236 - Ensure that focus option for creating new chat session properly activates and focuses the AI chat widget (eclipsesource/theia/issues/236) -Introduce a mechanism to contribute data to the editor context and add a default contribution for diagnostic information - Introduce AI code actions for error markers (Fix with AI, Explain with AI) Co-authored-by: Nina Doschek <[email protected]> Co-authored-by: Tobias Ortmayr <[email protected]> * Address review feedback * Add README to ai-editor package Fixes https://github.com/eclipsesource/theia/issues/255 --------- Co-authored-by: Nina Doschek <[email protected]> * Add initial support for images in the ai chat (#15410) Initial implementation of #15407 --------- Co-authored-by: Martin Fleck <[email protected]> Co-authored-by: Philip Langer <[email protected]> * Fix Toolcall Spinner (#15757) * Add support for the new vscode.lm.registerMcpServerDefinitionProvider API (#15755) Co-authored-by: Philip Langer <[email protected]> * Fix change set deletion (#15759) * Allow to increase the number of retries before failing (#15730) - Add a preference setting for setting the max retries - use the preference in vercel, openai and anthropic Co-authored-by: Stefan Dirix <[email protected]> * Replace YOLO terminology with "Always Allow" (#15756) * Change YOLO terminology to Always Allow * In the Tool Confirmation Mode UI and settings schema, change usage of the term YOLO to "Always Allow". * Remove colouring of tool options * The colouring is not necessary and can cause issues for persons with reduced vision. * Change Approve terminology to Allow in toolcall renderer * Make the terminology used by the Tool Call Part Renderer consistent, in the UI and in the code, with the Allow terminology of the Tool Configuration UI. Signed-off-by: Christian W. Damus <[email protected]> * Work on improving code completion (#15715) * Add next code-completion template * does not affect current default template * Include project info in next prompt * Add cache for code completions * currently only caching proposals for the same file, line, and surrounding context * we may improve this by checking if the user typed parts of a previously cached proposal before making a new request, which might require adjusting how we create the cache keys * Start Chat from Task Context (#15700) Add a new command to start a chat by selecting an agent and a context --------- Co-authored-by: Christian W. Damus <[email protected]> * Don't focus window for reveal widget call (#15760) * Make Workspace Search function more efficient / use less tokens (#15743) * add preference to configure max search results * introduce `ai-features.workspaceFunctions.searchMaxResults` preference * respect preference in AI workspace search to avoid excessive token usage * return error message when result count reaches the configured limit * restrict workspace search to subdirectories * add optional `subDirectoryPath` parameter to search arguments * validate and resolve subdirectory path relative to workspace root * perform scoped search if subdirectory is provided * optimize result format for token efficiency * trim whitespace and format matches for concise output * group matches by relative file path and simplify structure * add unit tests to verify formatting logic and token reduction * use 30 as new default * Fix paste handling in chat input * feat: Provide a Task Context Management / Agent (#15732) * Add task-context agent Add prompts for creating task context and updating this document Ensure task contexts are properly saved and updated on content change Add a way to propose changes as a change set to the summary on update and do not change directly Signed-off-by: Alexandra Buzila <[email protected]> Signed-off-by: Tobias Ortmayr <[email protected]> Signed-off-by: Remi Schnekenburger <[email protected]> Co-authored-by: Alexandra Muntean <[email protected]> Co-authored-by: Tobias Ortmayr <[email protected]> Co-authored-by: Remi Schnekenburger <[email protected]> * fix: remove obsolete menu workaround (#15753) We previously used a workaround in the browser-menu-plugin to support initially empty menus, which weren’t compatible with Lumino. Since the menu refactoring in #14676, this workaround is no longer needed. In fact, it now causes issues like empty submenus appearing in context menus. Removing the workaround fixes this regression. Fixes #15694 Contributed on behalf of STMicroelectronics * Use Ctrl+Tab for tab navigation on Mac (#15763) * enable Agent-to-Agent Delegation via Tool Calls (#15736) * Add chat retry button Add a retry button visible for cancelled or failed responses. * Sanitize Task Context Labels (#15762) * Add async initialization to ChangeSetFileElement (#15761) * Fix revealTab (#15754) Use the contentContainer for computations, because this is the DOM element passed to PerfectScrollbar on creation * Remove clear change from Coder prompt (#15774) * Chat Variable for All Open Editors (#15775) * Set Opus 4 to 32000 max tokens (#15788) * Improve image support for tool calls (#15765) - Introduce ToolCallResult type for better of known MCP result types - Add visual playwright MCP server to AppTester (can use screenshots) - Improve rendering for tool call results * deps: Bump tar-fs to 3.0.9 (#15719) tar-fs 3.0.9 fixes CVE-2025-48387 (https://security.snyk.io/vuln/SNYK-JS-TARFS-10293725 Contributed by STMicroelectronics Signed-off-by: Torbjörn SVENSSON <[email protected]> * dep: bump multer version to 2.0.1 (#15806) Contributed on behalf of STMicroelectronics * Listen for model will save events directly (#15787) Instead of registering a save participant. Fixes #15770 Contributed on behalf of STMicroelectronics Signed-off-by: Thomas Mäder <[email protected]> * Support instant request for chat initialized with task context and agent (#15778) When a new chat session is initialized with a pinned agent and a task, context such as from the Initiate Chat command or agent hand-off, in the Chat Input View show: - a placeholder "Perform this task." instead of "Ask a question" - let the user submit without typing anything, which sends that placeholder as the request message Fixes eclipsesource/theia#233 Signed-off-by: Christian W. Damus <[email protected]> * Return undefined instead of throwing when getting non-existent menu (#15792) Fixes #15664 Contributed on behalf of STMicroelectronics Signed-off-by: Thomas Mäder <[email protected]> * AI features accessible when AI is not enabled (#15780) * hide AI-related (context) menu entries and toolbar actions when AI is not active * ensure conditional rendering of ScanOSS UI based on AI activation * added ai-editor to electron sample application * disable chat input widget and its actions when AI is inactive * Allow adding variants via files (#15815) * Allow adding variants via files fixed #15794 * Avoid playwright tests depending on cwd * Avoid playwright tests depending on the current working directory * Instead use paths relative to __dirname for resources * This fixes being able to run the tests from the VSCode playwright extension from Microsoft. Signed-off-by: Florian Richter <[email protected]> * Update Ollama version and support newest features (#15795) * Update Ollama version and support newest features * Update ollama to 0.5.16 * Add support for streaming tool calling * Add support for real thinking messages * Add support for images * Add support for Token Usage Counting Signed-off-by: Stefan Winkler <[email protected]> * Use chatInputWidget in AskAI Input and fix keyboard scrolling (#15781) * fix: agent tree selection highlighting in AI configuration widget * Fix bug that customizations are treated as variants (#15846) * Amend enablement/visibility checks for dirty diff widget toolbar actions (#15851) * Enact code actions when change set file created (#15724) Signed-off-by: Simon Graband <[email protected]> Co-authored-by: Simon Graband <[email protected]> Co-authored-by: Colin Grant <[email protected]> * Add missing NLS item for format on save (#15813) * Pin the last mentioned agent (#15777) Modifies the pinning behavior so that new explicit agent mentions result in the mentioned agent being pinned, even if another agent is already pinned. * Streamline Ask AI commands and fix Send to AI error (#15839) - Remove `Send to AI Chat` command from the command palette - Narrow enablement of `Ask AI` commands for editor and terminal - Ensure the `AiTerminalChatWidget` is only shown for user created terminals Fixes #15827 Fixes #15849 * Fix getMenuNode() for leaf nodes (#15845) Fixes #15828 Contributed on behalf of STMicroelectronics Signed-off-by: Thomas Mäder <[email protected]> * Fix playwright tests on Windows (#15684) Fixes #15447 ### Also Simplify waitForCellStatus: The previous implementation did not wait at all. Furthermore only waiting for success and error together was used until now. Signed-off-by: Florian Richter <[email protected]> * fix: sync selection if props change (#15784) Class components do not re-run constructors on prop changes. This meant that `defaultValue` and `options` were only evaluated once during the initial mount. As a result, dynamic updates to the selected channel did not reflect in the SelectComponent UI. This change extracts the selected index logic into a helper method and calls it from both the constructor and `componentDidUpdate` to keep state in sync with prop changes, mimicking behavior of function components using hooks. Closes: eclipse-theia/theia#15769 * Remind coder to use file change functions (#15848) * Cancel hover preview on right/middle mouse click (#15826) This prevent overlap with e.g. menus. Cancels the hover preview when a right or middle mouse button is pressed. Left-clicks are not handled, as the event does not propagate, but this is not critical since left-clicking typically changes the UI and dismisses the hover naturally. Fixes # 15825 Signed-off-by: Simon Graband <[email protected]> * Fix problems with menu item 15828_menu_visibility (#15856) - Don't check uniqueness of menu items. Plugins contribute the same menu item multiple times with different visibility conditions - Don't show the 'inline' group in context 15828_menu_visibility Fixes #15828 Contributed on behalf of STMicroelectronics Signed-off-by: Thomas Mäder <[email protected]> * Enable multiSelect for the DebugBreakpointsWidget (#15749) - Enable multiSelect for breakpoints in the DebugBreakpointsWidget - Add commands to remove/enable/disable the selected breakpoints Signed-off-by: Stefan Winkler <[email protected]> * Option to put close icons at the start of the tab label on macOS (#15103) Add a new window.tabCloseIconPlacement preference for whether to present the Close (X) icon in tab titles on the left or the right of the tab in conformity with the OS's native tab controls. Render the tab title with the icon on the left or right accordingly. Show the new preference in the Settings UI on macOS platform only. Default to the right as on other platforms to maintain current appearance. Fixes eclipse-theia/theia-ide#460 Signed-off-by: Christian W. Damus <[email protected]> * Implement missing methods for plugin management in FrontendPluginServer --------- Signed-off-by: Thomas Mäder <[email protected]> Signed-off-by: Remi Schnekenburger <[email protected]> Signed-off-by: Roman Piper <[email protected]> Signed-off-by: Simon Graband <[email protected]> Signed-off-by: Jonah Iden <[email protected]> Signed-off-by: KnowZero <[email protected]> Signed-off-by: Per Tillisch <[email protected]> Signed-off-by: Alexander Taran <[email protected]> Signed-off-by: Stefan Winkler <[email protected]> Signed-off-by: Giacomo Cusinato <[email protected]> Signed-off-by: Parisa Betel Miri <[email protected]> Signed-off-by: Florian Richter <[email protected]> Signed-off-by: Torbjörn SVENSSON <[email protected]> Signed-off-by: Vivien Jovet <[email protected]> Signed-off-by: Camille Letavernier <[email protected]> Signed-off-by: Christian W. Damus <[email protected]> Signed-off-by: Alexandra Buzila <[email protected]> Signed-off-by: Tobias Ortmayr <[email protected]> Co-authored-by: Stefan Dirix <[email protected]> Co-authored-by: Eugen Neufeld <[email protected]> Co-authored-by: Thomas Mäder <[email protected]> Co-authored-by: Jonas Helming <[email protected]> Co-authored-by: fanyipin <[email protected]> Co-authored-by: Mark Sujew <[email protected]> Co-authored-by: Remi Schnekenburger <[email protected]> Co-authored-by: colin-grant-work <[email protected]> Co-authored-by: RomanPiperMVTec <[email protected]> Co-authored-by: Simon Graband <[email protected]> Co-authored-by: Philip Langer <[email protected]> Co-authored-by: lessmost <[email protected]> Co-authored-by: Akos Kitta <[email protected]> Co-authored-by: Vladimir Piskarev <[email protected]> Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Jonah Iden <[email protected]> Co-authored-by: KnowZero <[email protected]> Co-authored-by: Per Tillisch <[email protected]> Co-authored-by: Alexander Taran <[email protected]> Co-authored-by: Zebsterpasha <[email protected]> Co-authored-by: Stefan Winkler <[email protected]> Co-authored-by: Dennis Huebner <[email protected]> Co-authored-by: Giacomo Cusinato <[email protected]> Co-authored-by: Johannes Faltermeier <[email protected]> Co-authored-by: Martin Fleck <[email protected]> Co-authored-by: Haydar Metin <[email protected]> Co-authored-by: parisa-mchp <[email protected]> Co-authored-by: Florian Richter <[email protected]> Co-authored-by: Torbjorn-Svensson <[email protected]> Co-authored-by: Nina Doschek <[email protected]> Co-authored-by: Hanksha <[email protected]> Co-authored-by: Camille Letavernier <[email protected]> Co-authored-by: Lucas Koehler <[email protected]> Co-authored-by: Thomas Mäder <[email protected]> Co-authored-by: Christian W. Damus <[email protected]> Co-authored-by: Olaf Lessenich <[email protected]> Co-authored-by: Tobias Ortmayr <[email protected]> Co-authored-by: Alexandra Muntean <[email protected]> Co-authored-by: Remi Schnekenburger <[email protected]> Co-authored-by: Alexandra Muntean <[email protected]> Co-authored-by: Florian Richter <[email protected]> Co-authored-by: Christian W. Damus <[email protected]>
What it does
Initial implementation of #15407
How to test
Copy an image into the clipboard. Paste it using
CTRL+V
.Follow-ups
As this is the first introduction of non text data to the request, it must be decided where and how this kind of data should be stored. All adaptations on the communication from input widget to the llm must be reviewed and discussed also in regard to more kind of input data (e.g. audio).
Breaking changes
Attribution
Review checklist
Reminder for reviewers