From ae3dbab38a0a8e86fe6652267e4881fedf463ca8 Mon Sep 17 00:00:00 2001 From: Yuna Seol Date: Wed, 25 Mar 2026 19:34:18 -0400 Subject: [PATCH] fix(core): strip leading underscores from error types in telemetry (#23824) Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com> --- packages/core/src/utils/errors.test.ts | 9 +++++++++ packages/core/src/utils/errors.ts | 9 ++++++--- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/packages/core/src/utils/errors.test.ts b/packages/core/src/utils/errors.test.ts index 81f9eb09a4..63aa4628fb 100644 --- a/packages/core/src/utils/errors.test.ts +++ b/packages/core/src/utils/errors.test.ts @@ -354,4 +354,13 @@ describe('getErrorType', () => { expect(getErrorType(null)).toBe('unknown'); expect(getErrorType(undefined)).toBe('unknown'); }); + + it('should strip leading underscores from error names', () => { + class _GaxiosError extends Error {} + expect(getErrorType(new _GaxiosError('test'))).toBe('GaxiosError'); + + const errorWithUnderscoreName = new Error('test'); + errorWithUnderscoreName.name = '_CodeBuddyError'; + expect(getErrorType(errorWithUnderscoreName)).toBe('CodeBuddyError'); + }); }); diff --git a/packages/core/src/utils/errors.ts b/packages/core/src/utils/errors.ts index a390abcdc4..834d1e4586 100644 --- a/packages/core/src/utils/errors.ts +++ b/packages/core/src/utils/errors.ts @@ -58,9 +58,12 @@ export function getErrorType(error: unknown): string { if (!(error instanceof Error)) return 'unknown'; // Return constructor name if the generic 'Error' name is used (for custom errors) - return error.name === 'Error' - ? (error.constructor?.name ?? 'Error') - : error.name; + const name = + error.name === 'Error' ? (error.constructor?.name ?? 'Error') : error.name; + + // Strip leading underscore from error names. Bundlers like esbuild sometimes + // rename classes to avoid scope collisions. + return name.replace(/^_+/, ''); } export class FatalError extends Error {