Feat/all in one - #49
Open
jlee-kitware wants to merge 3 commits into
Open
Conversation
Run tool calls that local backends emit as inline text (for models that do not support native tool calling), add optional logging of vtk-mcp tool calls with a persisted setting, and add an agentic-retrieval toggle that skips pre-injected context so the model drives retrieval itself.
Make the prompt client stateless so each conversation (session) owns its messages, then let conversations generate concurrently: each generation is tied to its originating conversation and its result, error, and rendered scene are delivered there rather than to whatever the user is currently viewing. The drawer shows which conversation is generating, the in-pane spinner tracks the visible conversation, and returning to a conversation that is still generating no longer shows a stale result. Each conversation restores its own scene on switch, a new conversation starts idle, titles come from its own first prompt, and the render window is cleared wherever a conversation is reset. Generated code can no longer open a native render window or corrupt the app's window, and the editor remounts per conversation.
Capture stdout and stderr from running generated code (previously only visible in the server terminal) and show them in a per-conversation Console tab beside the transcript. Lines are classified by stream, not text content: stdout is ordinary output regardless of content (a printed class name like vtkErrorCode is not an error), stderr is a warning, and a raised exception is an error. Long lines are truncated and scroll within a width-contained box so large output cannot blow out the layout, and the console is stored on the session so it is per-conversation. The console is now the single record of a run: run errors, generation and config errors, and the data-file resolver's "could not resolve" suggestion (as a warning) all appear there, and the floating alert is removed; the Console tab badge is coloured by the latest run's severity so failures are noticeable from the transcript. When a data-file reference cannot be resolved, offer the closest known names as one-click fixes via a "Fix data file" toolbar menu. The code editor remounts when its contents change (conversation switch or code version) so it never keeps a cursor past the end of shorter content.
Closed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Add MCP tooling, concurrent conversations, and a console panel
Combines three related pieces of work on the trame UI. Supersedes #48 (its MCP-tooling content is included here).
Contents
MCP tool-call support for local and text-emitting backends
Runs tool calls that local backends emit as inline text, for models without native tool-calling. Adds optional logging of vtk-mcp tool calls (persisted setting) and an agentic-retrieval toggle that skips pre-injected context so the model drives retrieval itself.
Concurrent conversations, each owning its own state
Makes the prompt client stateless so each conversation owns its messages, then lets conversations generate concurrently. Each generation is tied to its originating conversation; its result, error, and rendered scene are delivered there rather than to whatever the user is currently viewing. The drawer shows which conversation is generating, the in-pane spinner tracks the visible conversation, and each conversation restores its own scene on switch. Generated code can no longer open a native render window or corrupt the app's window.
A console panel and data-file suggestions
Captures stdout/stderr from running generated code (previously only in the server terminal) into a per-conversation Console tab. Lines are classified by stream, not text content - so a printed class name like vtkErrorCode is not flagged as an error. The console is now the single record of a run (run errors, generation/config errors, and the data-file resolver's "could not resolve" warning all appear there); the floating alert is removed, with a severity-colored badge on the Console tab instead. When a data-file reference can't be resolved, the closest known names are offered as one-click fixes via a "Fix data file" menu.
Testing
ruff, flake8, mypy, and pytest pass (the 3 pre-existing test_code_history failures are unrelated to this PR). New tests: test_console_classify.py, test_data_suggestions.py.
Much of this is trame layout, Monaco, and tab-rendering behavior that only surfaces in a live browser, not in CI:
Start a generation in one conversation, switch to another mid-generation - each should keep its own spinner/result/scene.
Trigger an error in a background conversation, then switch to it - the error appears in its console.
Run print(dir(vtk)) - shows as normal output (not an error), scrolls inside the console, doesn't collapse the render window.
Switch Conversation ↔ Console tabs repeatedly - render window holds its width.
Reference a bad data file (e.g. can.ex) - warning in the console + a working "Fix data file" dropdown.