Auth + API key creation when using bt setup#110
Auth + API key creation when using bt setup#110ViaDézo1er / cedric (viadezo1er) wants to merge 24 commits intomainfrom
Conversation
Rename/restructure CLI flags to improve UX without changing core behaviour: BaseArgs: - Remove --quiet/-q (BRAINTRUST_QUIET) and --no-input; quiet output is now the global default (set_quiet(true) in configure_output). - Add verbose: bool as #[arg(skip)] — subcommands set it at runtime; set up output messages are shown only when verbose is active. SetupArgs: - --no-mcp-skill → --no-skills + --no-mcp (orthogonal opt-outs) - Add --no-instrument (opt-out; instrument is the new default) - Add --tui / --background (replace --interactive / --quiet in wizard) - Add --language (repeatable), --interactive/-i, --verbose/-v at top level AgentsSetupArgs: - --agent (repeatable Vec) → --agent (single Option); drop AgentArg::All - --yes removed from CLI (#[arg(skip)]); programmatic callers still set yes:true - Add --no-workflow (conflicts with --workflow) AgentsMcpSetupArgs: - Same agents→agent and yes→skip treatment InstrumentSetupArgs: - --quiet → --background (run agent non-interactively, show spinner) - --interactive → --tui (run agent in interactive TUI mode) - --yes → #[arg(skip)] - Add skip_launch: bool (#[arg(skip)]) for future wizard use resolve_selected_agents: signature changes from &[AgentArg] to Option<AgentArg>; None auto-detects all installed agents as before. All call sites, struct literals in tests, and BaseArgs literals in auth/switch/traces/functions updated to match. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- `bt setup instrument --interactive` now accepted as alias for --tui - `bt setup instrument --quiet` now accepted as alias for --background - `bt setup --no-mcp-skill` now accepted as hidden alias for --no-skills --no-mcp - Explicit error when --json and --tui are both passed
|
Latest downloadable build artifacts for this PR commit
Available artifact names
|
0176f6c to
21b027d
Compare
move CLI coverage to integration tests
auth.rs: - Remove login_interactive (method-chooser) and login_interactive_api_key - Make login_interactive_oauth pub(crate) so setup can call it directly - Auth output tweaks: Warning→Info in maybe_warn_api_key_override, drop the else branch (no-profile case doesn't need a warning when an API key is used) - Add blank lines around the OAuth authorization URL for readability - Add org description hint before the org selection prompt - Add .report(false) to the OAuth callback manual-paste input - Add set_quiet(false) in run() so bt auth output is never silenced by the global quiet default (unless --json is active) - Add pub(crate) ensure_auth: credential recovery flow that falls back to OAuth when a stored profile's credentials are inaccessible - Add pub(crate) is_missing_credential_error helper used by ensure_auth setup/mod.rs: - Replace local ensure_auth with auth::ensure_auth - Remove local LoginContext import (no longer needed) - Add maybe_create_api_key_for_oauth: after an OAuth login, auto-create a permanent API key, expose it via BRAINTRUST_API_KEY, and print it once (the key is never retrievable again from the API) - Call maybe_create_api_key_for_oauth in run_setup_wizard after auth step Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
fb26c9e to
f4db14a
Compare
bt does not need an api key but the agent executing the code with instrumentation needs it
Self-contained infra changes that the wizard depends on. - `tty_term()` function in `src/ui/select.rs` (`/dev/tty` fallback) - `fuzzy_select` using `interact_on(&term)` - `detect_runnable_agents()` (PATH-only check) - `detect_agents` simplification (drop config-dir heuristics) - `resolve_unambiguous_instrument_agent` - `/dev/tty` stdin fallback in `run_agent_invocation` for interactive mode Cursor skill path detection, global quiet mode are fixed in the [3rd PR](#110). PATH only detection of the agent seem ok, I don't think people would want to install skills/mcp without having the agent. Part 2 of #94 --------- Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com> Co-authored-by: Abhijeet Prasad <abhijeet@braintrustdata.com>
also remove dead code
24e9ca8 to
b4ccc25
Compare
Auth specFor case where the user should be prompted but
When trying to login with OAuth, first try to use the cached OAuth token, if it's missing/stale and there's a valid refresh token use it to get a new OAuth token, else browser-based OAuth workflow. curl --request GET \
--url https://api.braintrust.dev/v1/project \
--header 'Authorization: Bearer <token>'then search the returned project list for the requested project name. 'goto aaa' means 'continue the program the line after the [aaa] line'. |
The OAuth-related changes, isolated from the wizard.
ensure_authrewrite (credential recovery flow,is_missing_credential_error)maybe_create_api_key_for_oauth(auto-create key, print-once)login_interactive_oauthmadepub(crate)#[allow(dead_code)]onlogin_interactive_api_key(or just remove it)login_interactive(the old method-chooser)Part 3 of #94