Skip to content

feat(cli): stream non-TTY exec input before EOF - #3803

Open
shiju-nv wants to merge 2 commits into
NVIDIA:mainfrom
shiju-nv:feat/non-tty-streaming-exec
Open

shiju-nv wants to merge 2 commits into
NVIDIA:mainfrom
shiju-nv:feat/non-tty-streaming-exec

Conversation

@shiju-nv

Copy link
Copy Markdown
Collaborator

Summary

Add sandbox exec --stream-stdin so a client can exchange requests and responses with one remote process before closing stdin. The mode runs without a TTY and keeps stdout and stderr separate.

Related Issue

Closes #3802

Changes

  • Reuse the bidirectional exec RPC while preserving default finite-input behavior.
  • Retain the 4 MiB total stdin limit; cancel on overflow and warn that earlier input may already have been processed.
  • Drain output through the final gRPC status, report trailing transport errors, and never automatically retry an interrupted command. Update exec documentation and CLI guidance.

Testing

  • mise run pre-commit passes
  • Unit tests added/updated
  • E2E tests added/updated (if applicable)

Checklist

  • Follows Conventional Commits
  • Commits are signed off (DCO)
  • Architecture docs updated (if applicable)

Add --stream-stdin using the existing interactive exec RPC without a PTY. Preserve separate output streams and enforce the existing 4 MiB cumulative input cap while forwarding input.

Require explicit clean stdin EOF and drain the response through its final gRPC status. Cover held-open input, limits, cancellation, trailers, and default finite-input behavior with subprocess and live sandbox regressions.

Signed-off-by: Shiju <shiju@nvidia.com>
Treat transport termination and response cancellation as separate test observations. Verify explicit stdin EOF through the shared frame writer and cover cancellation in the pinned Tonic decoder.

Signed-off-by: Shiju <shiju@nvidia.com>

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Stream exec stdin without a TTY

1 participant