Skip to content

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

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

shiju-nv wants to merge 3 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>
Preserve upstream removal of obsolete architecture documents and retain streaming guidance in the published sandbox documentation.

Signed-off-by: Shiju <shiju@nvidia.com>
@johntmyers johntmyers added gator:in-review Gator is reviewing or awaiting PR review feedback test:e2e Requires end-to-end coverage labels Sep 29, 2026

@johntmyers johntmyers left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

gator-agent

PR Review Status

This concentrated CLI feature is project-valid through linked issue #3802. The initial full-diff review found no blocking defects, and the user-facing command documentation and public CLI skill are updated.

Blocking findings:

  • No blocking findings remain

Carried findings:

  • None

Non-blocking suggestions:

  • None
Gator metadata
  • Validation: Linked issue #3802 defines the user path, failure semantics, input limit, and acceptance criteria; duplicate search found no overlapping work.
  • Docs: Fern sandbox documentation and the public CLI skill are updated for --stream-stdin.
  • Checks: Existing current-head branch, Helm, Trivy, and DCO gates are green; E2E dispatch is still being evaluated after label application.
  • E2E: test:e2e applied because sandbox execution behavior changed; E2E Label Help is running.
  • Head SHA: 1ca240f5d879b721d00782393e8f6af77d52ebc7
  • Base SHA: 33a8eac196a21aff3125dea46462a4591bcb5d0b
  • Merge base SHA: 33a8eac196a21aff3125dea46462a4591bcb5d0b
  • Patch ID: 20ec711c4a8a2d7516b076ee7739e1879626e64a
  • Gator payload: 9
  • Review mode: initial
  • Previous reviewed SHA: none
  • Review budget exhausted: no
  • Maintainer decision required: no
  • Next state: gator:in-review

@github-actions

Copy link
Copy Markdown

Label test:e2e applied for 1ca240f. Open the existing run and click Re-run all jobs to execute with the label set. The run will execute the standard E2E suite after building the required gateway, sandbox, and supervisor images once. The matching required CI gate status on this PR will flip green automatically once the run finishes.

@johntmyers johntmyers added gator:watch-pipeline Gator is monitoring PR CI/CD status gator:blocked Gator is blocked by process or repository gates gator:approval-needed Gator completed review; maintainer approval needed and removed gator:in-review Gator is reviewing or awaiting PR review feedback gator:watch-pipeline Gator is monitoring PR CI/CD status gator:blocked Gator is blocked by process or repository gates labels Sep 29, 2026

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

gator:approval-needed Gator completed review; maintainer approval needed test:e2e Requires end-to-end coverage

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Stream exec stdin without a TTY

2 participants