') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ', 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ', 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ', 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); })(); Fix SDK-288 tracing auth and diagnostics by Qard · Pull Request #334 · braintrustdata/bt · GitHub
Skip to content

Fix SDK-288 tracing auth and diagnostics - #334

Draft
Stephen Belanger (Qard) wants to merge 9 commits into
mainfrom
t3code/sdk-288-bt
Draft

Fix SDK-288 tracing auth and diagnostics#334
Stephen Belanger (Qard) wants to merge 9 commits into
mainfrom
t3code/sdk-288-bt

Conversation

@Qard

@QardStephen Belanger (Qard) commented Aug 25, 2026

Copy link
Copy Markdown
Contributor

Summary

Implements the bt-owned P0 and P1 work from SDK-288 in issue-level commits:

  • SDK-272: make trace enable / trace setup, trace run, and trace import complete from the credentials already available to the command. Environment auth remains invocation-local for run/import; persistent setup materializes the API key into a normal saved profile for future hooks; interactive commands collect a missing key, org, or project instead of requiring a separate login step.
  • SDK-274: require explicit consent before ordinary bt login saves BRAINTRUST_API_KEY; the persistent tracing setup command itself is the explicit request to create the durable login it needs.
  • SDK-270 / SDK-275: keep bare bt status concise; expand saved profile and credential-storage details only under --all, and show precedence only for an active CLI/environment override.
  • SDK-276: clarify that logout is local-only and add a one-confirmation logout --all flow with per-profile JSON results.
  • SDK-273: pin the landed daemon revision and provide side-effect-free, credential-redacted auth provenance to bt trace doctor.

Dependency

braintrustdata/braintrust-coding-agent-plugins#32 has landed. This PR pins its squash commit on main (face71d8d758363e881e15310ce79d5fcafa2912).

Validation

  • cargo fmt --check
  • cargo test --all-targets --locked (757 unit tests, 56 CLI tests, and all dataset, eval, functions, and setup integration suites passed)
  • cargo clippy --all-targets --locked -- -D warnings -A clippy::collapsible_match
  • git diff --check
  • focused regressions prove environment-key persistent setup and explicit-key managed run both complete with saved-profile routes, while environment-key managed run remains invocation-local

Plain cargo clippy --all-targets --locked -- -D warnings is currently blocked by pre-existing collapsible_match findings in unrelated dataset, SQL, and trace TUI code under Rust 1.95; allowing that lint leaves the branch clean.

@github-actions

github-actionsBot commented Aug 25, 2026

Copy link
Copy Markdown
Contributor

Latest downloadable build artifacts for this PR commit f4de4c6b962d:

Available artifact names
  • artifacts-build-global
  • artifacts-build-local-x86_64-apple-darwin
  • artifacts-build-local-x86_64-pc-windows-msvc
  • artifacts-build-local-aarch64-pc-windows-msvc
  • artifacts-build-local-x86_64-unknown-linux-musl
  • artifacts-build-local-x86_64-unknown-linux-gnu
  • artifacts-build-local-aarch64-apple-darwin
  • artifacts-build-local-aarch64-unknown-linux-gnu
  • artifacts-plan-dist-manifest
  • cargo-dist-cache

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@Qard