Files
OpenShell/.gitattributes
Drew Newberry 89a6e04c8c feat(providers): inject provider credentials into sandbox child processes at runtime (!26)
## Summary
- Add `GetSandboxProviderEnvironment` gRPC endpoint so the sandbox supervisor can fetch provider credentials at runtime instead of embedding them in the pod spec
- Sandbox supervisor (`navigator-sandbox`) fetches credentials on startup and injects them as environment variables into both entrypoint processes and SSH shell sessions via `Command::env()`
- Remove credential injection from sandbox creation-time pod spec in `navigator-server`
- Update `architecture/providers.md` to document the full runtime credential injection flow, discovery engine details, trait definitions, and end-to-end diagram

## Changes
- **proto**: Add `GetSandboxProviderEnvironment` RPC and request/response messages, add `providers` field to `SandboxSpec`
- **navigator-server**: Implement `GetSandboxProviderEnvironment` handler and `resolve_provider_environment()` with env var key validation and first-wins dedup; remove old creation-time credential injection from `sandbox/mod.rs`
- **navigator-sandbox**: Fetch provider env via gRPC on startup (`grpc_client.rs`), thread `provider_env` HashMap through to `process.rs` (entrypoint) and `ssh.rs` (shell sessions), inject via `cmd.env()`
- **navigator-cli**: Adjust sandbox create flow to set provider names in `SandboxSpec.providers`
- **e2e**: Add `test_sandbox_providers.py` end-to-end tests
- **docs**: Rewrite `architecture/providers.md` with implementation details

## Test Plan
- Unit tests for `resolve_provider_environment` in `grpc.rs`
- Integration tests updated in `provider_commands_integration.rs`, `mtls_integration.rs`, `multiplex_integration.rs`, `multiplex_tls_integration.rs`
- New e2e test suite `test_sandbox_providers.py`
2026-02-17 13:40:10 -08:00

11 lines
438 B
Plaintext

# Mark auto-generated protobuf files so GitHub linguist ignores them in
# diffs, stats, and language detection.
# Generated Python protobuf stubs
python/navigator/_proto/*_pb2.py linguist-generated
python/navigator/_proto/*_pb2_grpc.py linguist-generated
python/navigator/_proto/*_pb2.pyi linguist-generated
# Generated Rust protobuf code (excludes hand-written mod.rs)
crates/navigator-core/src/proto/navigator.*.rs linguist-generated