From 6f3a19812296e38b52a23bfd7a62eab3cefc80e7 Mon Sep 17 00:00:00 2001 From: miguel Date: Fri, 21 Aug 2026 10:58:45 -0700 Subject: [PATCH 1/3] =?UTF-8?q?evals:=20OTEL=20o11y=20UX=20=E2=80=94=20Lan?= =?UTF-8?q?gSmith=20doctor/welcome=20rows=20+=20cli=20shutdown?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/evals/cli.ts | 9 +++++++++ packages/evals/tui/commands/doctor.ts | 4 ++++ packages/evals/tui/welcomeStatus.ts | 17 +++++++++++++++++ 3 files changed, 30 insertions(+) diff --git a/packages/evals/cli.ts b/packages/evals/cli.ts index 575f210eb9..a607042db5 100644 --- a/packages/evals/cli.ts +++ b/packages/evals/cli.ts @@ -86,6 +86,15 @@ const args = process.argv.slice(2); } catch { // ignore } + try { + const { resolveTraceTransport } = await import("./framework/langsmith.js"); + if (resolveTraceTransport() === "otel") { + try { + const { shutdownTracing } = await import("./framework/otel.js"); + await shutdownTracing(); + } catch {} + } + } catch {} process.exit(code); }; process.on("SIGINT", () => void handleSignal("SIGINT")); diff --git a/packages/evals/tui/commands/doctor.ts b/packages/evals/tui/commands/doctor.ts index ec5affbc42..bd231036a2 100644 --- a/packages/evals/tui/commands/doctor.ts +++ b/packages/evals/tui/commands/doctor.ts @@ -308,6 +308,10 @@ function renderHuman(report: DoctorReport): void { }`, ); console.log(keyRow("BRAINTRUST_API_KEY", r.keys.braintrust, "(needed for `experiments`)")); + const langsmithLabel = r.keys.langsmith.var ?? "LANGSMITH_API_KEY"; + console.log( + keyRow(langsmithLabel, r.keys.langsmith, "(optional; LANGCHAIN_API_KEY also supported)"), + ); console.log(""); console.log(` ${bold("Status")}`); diff --git a/packages/evals/tui/welcomeStatus.ts b/packages/evals/tui/welcomeStatus.ts index 1e49466778..7337330ac2 100644 --- a/packages/evals/tui/welcomeStatus.ts +++ b/packages/evals/tui/welcomeStatus.ts @@ -32,6 +32,11 @@ export type GoogleKeyEntry = ProviderKeyEntry & { var: "GOOGLE_GENERATIVE_AI_API_KEY" | "GEMINI_API_KEY" | null; }; +export type LangSmithKeyEntry = ProviderKeyEntry & { + /** Which env var actually held the value, or null if missing. */ + var: "LANGSMITH_API_KEY" | "LANGCHAIN_API_KEY" | null; +}; + export type BrowserbaseKeyEntry = { apiKey: KeyState; projectId: KeyState; @@ -45,6 +50,7 @@ export type EnvSnapshot = { google: GoogleKeyEntry; browserbase: BrowserbaseKeyEntry; braintrust: ProviderKeyEntry; + langsmith: LangSmithKeyEntry; }; // --------------------------------------------------------------------------- @@ -104,6 +110,16 @@ function providerEntry(name: string): ProviderKeyEntry { }; } +function langSmithEntry(): LangSmithKeyEntry { + const primary = providerEntry("LANGSMITH_API_KEY"); + if (primary.state === "set") return { ...primary, var: "LANGSMITH_API_KEY" }; + const fallback = providerEntry("LANGCHAIN_API_KEY"); + return { + ...fallback, + var: fallback.state === "set" ? "LANGCHAIN_API_KEY" : null, + }; +} + function googleEntry(): GoogleKeyEntry { // Prefer the canonical GOOGLE_GENERATIVE_AI_API_KEY name; fall back to GEMINI_API_KEY. const a = resolveKey("GOOGLE_GENERATIVE_AI_API_KEY"); @@ -166,6 +182,7 @@ export function snapshotEnv(): EnvSnapshot { google: googleEntry(), browserbase: browserbaseEntry(), braintrust: providerEntry("BRAINTRUST_API_KEY"), + langsmith: langSmithEntry(), }; } From ad1cd59aa4418cca30214be2794c89fc33c817e4 Mon Sep 17 00:00:00 2001 From: miguel Date: Mon, 24 Aug 2026 13:28:56 -0700 Subject: [PATCH 2/3] changeset: evals OTEL compatibility --- .changeset/evals-otel-compat.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/evals-otel-compat.md diff --git a/.changeset/evals-otel-compat.md b/.changeset/evals-otel-compat.md new file mode 100644 index 0000000000..1be63d9244 --- /dev/null +++ b/.changeset/evals-otel-compat.md @@ -0,0 +1,5 @@ +--- +"@browserbasehq/stagehand-evals": minor +--- + +Add OpenTelemetry compatibility to the evals CLI (`EVAL_TRACE_TRANSPORT=otel` fans traces out to Braintrust and LangSmith). From c92039f85be93ff457bc36520aa9f9c93b4b656a Mon Sep 17 00:00:00 2001 From: Miguel <36487034+miguelg719@users.noreply.github.com> Date: Mon, 24 Aug 2026 13:35:29 -0700 Subject: [PATCH 3/3] Apply suggestions from code review Co-authored-by: Miguel <36487034+miguelg719@users.noreply.github.com> --- .changeset/evals-otel-compat.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.changeset/evals-otel-compat.md b/.changeset/evals-otel-compat.md index 1be63d9244..0a31940bc1 100644 --- a/.changeset/evals-otel-compat.md +++ b/.changeset/evals-otel-compat.md @@ -2,4 +2,4 @@ "@browserbasehq/stagehand-evals": minor --- -Add OpenTelemetry compatibility to the evals CLI (`EVAL_TRACE_TRANSPORT=otel` fans traces out to Braintrust and LangSmith). +Adds OpenTelemetry (OTEL) compatibility to the evals CLI