Repository navigation
Comparing changes
Open a pull request
base repository: NVIDIA/OpenShell
base: v0.0.29
head repository: NVIDIA/OpenShell
compare: v0.0.30
- 7 commits
- 50 files changed
- 4 contributors
Commits on Apr 14, 2026
-
Configuration menu - View commit details
-
Copy full SHA for 60035c6 - Browse repository at this point
Copy the full SHA 60035c6View commit details -
fix(inference): prevent silent truncation of large streaming responses (
#834) * fix(inference): prevent silent truncation of large streaming responses The L7 inference proxy silently dropped tool_calls from large streaming responses due to an aggressive 30s per-chunk idle timeout and a reqwest total-request timeout that capped the entire body stream. Reasoning models that pause during "thinking" phases triggered these timeouts, producing valid-looking but truncated HTTP responses with no client-visible error. - Extract prepare_backend_request() helper and create a streaming variant that omits the total request timeout; body stream liveness is now enforced solely by the per-chunk idle timeout - Add 30s connect_timeout to the reqwest Client builder - Increase CHUNK_IDLE_TIMEOUT from 30s to 120s for reasoning models - Inject SSE error events (proxy_stream_error) before the HTTP chunked terminator on all truncation paths so clients can detect data loss - Wrap the streaming relay in BufWriter to reduce per-chunk TLS flush overhead - Bump OCSF severity for streaming truncation from Low to Medium Closes #829 * fix(inference): drop BufWriter to preserve SSE incremental delivery The BufWriter introduced in the previous commit buffered SSE frames until the 16KB capacity filled or the stream ended, defeating incremental token delivery and potentially reintroducing client-visible timeouts on healthy streams. Revert to per-chunk write_all+flush but keep the single format_chunk() call that coalesces framing into one write. Also fix the streaming integration test: add a 3s mock delay that exceeds the 1s route timeout so the test actually validates that the streaming path omits the total request timeout. Previously the mock responded immediately, passing regardless of timeout behavior.
Configuration menu - View commit details
-
Copy full SHA for 355d845 - Browse repository at this point
Copy the full SHA 355d845View commit details
Commits on Apr 15, 2026
-
Configuration menu - View commit details
-
Copy full SHA for 0bf4216 - Browse repository at this point
Copy the full SHA 0bf4216View commit details -
fix(sandbox): preserve ownership for existing read_write paths (#827)
Closes #783 Only chown read_write paths that the supervisor creates at startup, and leave pre-existing image paths with their original ownership. Add sandbox tests for creation, symlink rejection, and existing-path ownership preservation, and update architecture docs to match the new behavior. Co-authored-by: John Myers <[email protected]>
Configuration menu - View commit details
-
Copy full SHA for e0db01e - Browse repository at this point
Copy the full SHA e0db01eView commit details -
feat(policy): add deny rules to network policy schema (#822)
* feat(policy): add deny rules to network policy schema Closes #565 Add L7 deny rules that block specific requests even when allowed by access presets or explicit allow rules. Deny rules mirror the full capability set of allow rules (method, path, query params, SQL command) and take precedence -- if a request matches any deny rule, it is blocked regardless of allow rules. This enables the "allow everything except these specific operations" pattern without enumerating every allowed endpoint. For example, granting read-write access to GitHub while blocking PR approvals, branch protection changes, and ruleset modifications. * fix(policy): deny query matching fails closed, mirror allow-side validation Addresses PR review findings P1 and P3: P1: Deny-side query matching now uses fail-closed semantics. If ANY value for a query key matches the deny matcher, the deny fires. The previous implementation reused allow-side "all values must match" logic which allowed ?force=true&force=false to bypass a deny on force=true. P3: Deny-side query validation now mirrors the full allow-side checks: empty any lists, non-string matcher values, glob+any mutual exclusion, glob type checks, and glob syntax warnings are all validated.
Configuration menu - View commit details
-
Copy full SHA for 28e1ff7 - Browse repository at this point
Copy the full SHA 28e1ff7View commit details -
fix(sandbox): disable child core dumps (#821)
Signed-off-by: John Myers <[email protected]>
Configuration menu - View commit details
-
Copy full SHA for 28db08e - Browse repository at this point
Copy the full SHA 28db08eView commit details -
fix(sandbox): escape control characters in format_sse_error (#842)
format_sse_error only escaped `\` and `"`, leaving two problems: 1. Control characters (`\n`, `\r`, `\t`, and all `\u0000-\u001F`) in `reason` produce output that fails `serde_json::from_str` — defeating #834's goal of giving clients a parseable SSE truncation signal. 2. An unescaped `\n\n` inside `reason` splits the single error event into two SSE frames, letting a misbehaving upstream inject a forged frame (e.g. a fake tool_calls delta) into the client's stream. Latent today since all in-tree callers pass static strings, but a footgun for any future caller passing upstream error text, and the function's docstring already invites dynamic reasons. Replace the manual escape with `serde_json::to_writer` (already a workspace dep of `openshell-sandbox`). Add unit tests for control character escaping and SSE event-boundary injection. Closes #840 Signed-off-by: mjamiv <[email protected]>
Configuration menu - View commit details
-
Copy full SHA for 1a57519 - Browse repository at this point
Copy the full SHA 1a57519View commit details
This comparison is taking too long to generate.
Unfortunately it looks like we can’t render this comparison for you right now. It might be too big, or there might be something weird with your repository.
You can try running this command locally to see the comparison on your machine:
git diff v0.0.29...v0.0.30