Files
OpenShell/crates/openshell-cli/Cargo.toml
Max Dubrinsky 5d5cfe9a0d feat(sdk): extract openshell-sdk crate
Per RFC 0005, lift the gRPC client, TLS, OIDC, edge-tunnel, and refresh
plumbing out of openshell-cli into a new openshell-sdk crate. CLI and
TUI now consume the SDK; openshell-cli/src/{tls.rs,oidc_auth.rs} shrink
to thin wrappers over the SDK's transport and OIDC modules.

- New crate openshell-sdk exposes a typed gRPC client, TLS resolver,
  OidcRefresher with single-flight semantics, edge-tunnel dialer, and a
  Sandbox-API surface that mirrors the existing CLI behavior.
- crates/openshell-core/src/auth.rs moves into the SDK as auth.rs.
- crates/openshell-cli/src/edge_tunnel.rs moves into the SDK as
  edge_tunnel.rs.

Tests: 3 unit + 10 mock-gateway integration tests in openshell-sdk.
Signed-off-by: Max Dubrinsky <mdubrinsky@nvidia.com>
2026-06-26 12:42:11 -04:00

94 lines
2.4 KiB
TOML

# SPDX-FileCopyrightText: Copyright (c) 2025-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
# SPDX-License-Identifier: Apache-2.0
[package]
name = "openshell-cli"
description = "OpenShell CLI tool"
version.workspace = true
edition.workspace = true
rust-version.workspace = true
license.workspace = true
repository.workspace = true
[[bin]]
name = "openshell"
path = "src/main.rs"
[dependencies]
openshell-bootstrap = { path = "../openshell-bootstrap" }
openshell-core = { path = "../openshell-core", default-features = false }
openshell-policy = { path = "../openshell-policy" }
openshell-providers = { path = "../openshell-providers" }
openshell-prover = { path = "../openshell-prover" }
openshell-sdk = { path = "../openshell-sdk" }
openshell-tui = { path = "../openshell-tui" }
serde = { workspace = true }
serde_json = { workspace = true }
serde_yml = { workspace = true }
prost-types = { workspace = true }
# Async runtime
tokio = { workspace = true }
# gRPC client
tonic = { workspace = true, features = ["tls-native-roots"] }
# CLI
chrono = "0.4"
clap = { workspace = true }
clap_complete = { workspace = true }
crossterm = { workspace = true }
dialoguer = "0.11"
indicatif = { workspace = true }
owo-colors = { workspace = true }
# HTTP client (health fallback)
bytes = { workspace = true }
http-body-util = { workspace = true }
hyper = { workspace = true }
hyper-util = { workspace = true }
hyper-rustls = { version = "0.27", default-features = false, features = ["native-tokio", "http1", "http2", "tls12", "logging", "ring", "webpki-tokio"] }
rustls = { workspace = true }
rustls-pemfile = { workspace = true }
reqwest = { workspace = true }
# Error handling
miette = { workspace = true }
thiserror = { workspace = true }
anyhow = { workspace = true }
# File archiving (tar-over-SSH sync)
tar = "0.4"
tempfile = "3"
# OIDC/Auth
oauth2 = "5"
base64 = { workspace = true }
# Streams
futures = { workspace = true }
tokio-stream = { workspace = true }
nix = { workspace = true }
# URL parsing
url = { workspace = true }
# Logging
tracing = { workspace = true }
tracing-subscriber = { workspace = true }
[lints]
workspace = true
[features]
bundled-z3 = ["openshell-prover/bundled-z3"]
[dev-dependencies]
futures = { workspace = true }
rcgen = { version = "0.13", features = ["crypto", "pem"] }
reqwest = { workspace = true }
serde_json = { workspace = true }
temp-env = "0.3"
tokio-stream = { workspace = true }
url = { workspace = true }