[alpha] shells - mostly backend related setup#1831
Merged
Conversation
Collaborator
KCarretto
commented
Feb 18, 2026
…end (#1824) - Update `Shell` ent schema to make task optional and add `ShellTask` relation. - Create `ShellTask` ent schema with history mixin. - Update `portal.proto` to include `ShellPayload`. - Add `createShell` mutation to GraphQL schema and implement resolver. - Implement `ShellV2Handler` with WebSocket upgrade, shell verification, auth check, and pubsub integration. - Update `tavern/app.go` to register new endpoint. - Update `ShellV2` frontend to verify shell status via GraphQL and handle errors. - Fix generated resolvers to avoid panics. Co-authored-by: google-labs-jules[bot] <161369871+google-labs-jules[bot]@users.noreply.github.com> Co-authored-by: KCarretto <16250309+KCarretto@users.noreply.github.com>
- Update `ShellPayload` in `portal.proto` to include `stream_id` for multi-user session tracking. - Implement `writeMessagesFromWebsocket` in `tavern/internal/http/shell/handler.go` to handle user input, create `ShellTask` ents, and route messages to active portals or queue them if no portal is active. - Implement `writeMessagesFromShell` to handle output from portals (interactive) or DB polling (non-interactive), with support for "Other Stream" output notifications. - Add `WebsocketMessageKindOutputFromOtherStream` and associated message struct in `websocket.go`. - Add integration tests in `tavern/internal/http/shell/integration_test.go` covering interactive, non-interactive, and multi-user scenarios. - Fix WebSocket handler to accept both `TextMessage` and `BinaryMessage` frames. - Ensure thread-safe access to `activePortal` state using `ShellSession`. Co-authored-by: google-labs-jules[bot] <161369871+google-labs-jules[bot]@users.noreply.github.com> Co-authored-by: KCarretto <16250309+KCarretto@users.noreply.github.com>
* feat: update ShellV2 to use typed WebSocket protocol and improved output rendering - Created `tavern/internal/www/src/pages/shellv2/websocket.ts` to mirror backend WebSocket message types. - Updated `headless-adapter.ts` to use typed messages and correct input format. - Refactored `ShellV2` component to handle asynchronous output by clearing and redrawing the input line. - Implemented specific handling for task errors (red) and control flow messages. Co-authored-by: KCarretto <16250309+KCarretto@users.noreply.github.com> * minor changes --------- Co-authored-by: google-labs-jules[bot] <161369871+google-labs-jules[bot]@users.noreply.github.com> Co-authored-by: KCarretto <16250309+KCarretto@users.noreply.github.com>
hulto
approved these changes
Feb 18, 2026
Cictrone
approved these changes
Feb 18, 2026
Contributor
Summary
Previous Results
Insights
Slowest Tests
🎉 No failed tests in this run. | 🍂 No flaky tests in this run. Github Test Reporter by CTRF 💚 🔄 This comment has been updated |
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.